Linux视频学习笔记(十一)--权限管理
声明:本系列文章是博主根据 “兄弟连新版Linux****”做的笔记和视频截图,只为学习和教学使用,不适用任何商业用途。
PS:文章基于Linux版本CentOS6.9,如果对Linux感兴趣,建议去看《细说Linux》,沈超老师和李明老师的教学风格我很喜欢:)
第八章 权限管理
8.1 ACL权限
视频8.1.1 ACL权限简介与开启
是否具有ACL权限不是看用户或文件是否支持,而是看文件所在的分区支不支持;
先使用df –h 命令查看分区容量
使用dumpe2fs –h /dev/sda5命令查看分区详细文件系统信息
/etc/fstab是系统开启自动挂载的文件;
视频8.1.2 ACL权限查看与设定
- 现在先在根目录下创建一个文件夹mkdir /project,再创建两个用户useradd user1 , useradd user2,创建一个用户组groupadd tmp1,将user1和user2添加到组tmp1中,gpasswd –a user1 tmp1 , gpasswd –a user2 tmp1. 查看gpasswd文件:
- user1和user2已经添加到tmp1组中,给/project设置用户和用户组:
chown root:tmp1 /project/ , 给/project设置文件夹权限:
chmod 770 /project/ ,查看文件夹信息,ll –d /project :
权限设置成功。
- 现在给用户st设置访问/project文件夹的r-x权限
给用户st设置acl权限:
setfacl –m u:st:rx /project/
如果给某个组设置acl,就要变为:
setfacl –m g:组名:权限 /project
- 设置完acl之后查看acl: getfacl /project/
会显示报错,但是不影响命令使用。可以看到除了user、group、other之外还有user:st的权限r-x,查看/project文件夹的信息,权限后多了个+:
- 此时通过用户st登录,发现可以访问/project,可以进入/project,但是不能在/project中创建文件,确认st用户的acl权限设置正确:
视频8.1.3 最大有效权限与删除ACL权限
也就是说,acl权限的设置最终要根据mask的权限来;
可以看到:
即使组权限和acl组权限都是rwx,由于最大有效权限设置为r-x,生效的所属组权限和acl组权限也是r-x,但是不影响所有者用户的权限;
2.两种删除acl权限的方法:
1.使用-x选项
2.使用-b选项
例子:删除/project文件夹的用户acl权限,发现用户acl权限没了。
删除/project文件夹的所有acl权限:
同时使用ll –d 命令,发现权限后面的+没有了
视频8.1.4 默认与递归ACL权限
注意:设定递归和默认ACL权限,都只针对目录,文件是不能设置这两个权限的
8.2 文件特殊权限
视频8.2.1 SetUID
第一个位置的数字分别代表:
4:SUID
2:SGID
1:SBIT
这里需注意:
在创建一个可执行文件abc后:
注意:
对其添加SetUID权限,结果出现大写S,这是系统报错,因为之前用户对abc不具备x权限,违反了SetUID的第二个前提:命令执行者要对该程序具有x(执行)权限;
注意:
只有root用户才能既使用vi命令又可以使用vim命令进行编辑;
普通用户默认只能使用vim命令(经测试,无论使用vi还是vim结果都执行vim命令);
所以如果想要设置SetUID权限,需要修改vim命令的权限(注意这是一个及其危险的操作):
修改了vim命令的SetUID权限后,发现成功了,但是系统会将文件爆红提示:权限错误或权限过高!
这时切换普通用户发现:可以修改/etc/passwd文件并且修改普通用户的用户组为超级用户:
这时普通用户使用vim命令不仅可以修改passwd文件,也可以修改系统文件,这是非常危险的;
取消vim命令的SetUID权限:
视频8.2.2 SetGID
普通用户在使用locate命令时,其实是去mlocate.db数据库查询文件索引,但是发现普通用户对mlocate.db没有权限(---),用户组具备读(r)权限,而locate命令可以看到在组权限的x位置是s:说明具备SetGID权限,所以普通用户可以使用locate命令快速查找文件;
例子:普通用户lamp调用locate命令的过程:
视频8.2.3 Sticky BIT
比较常见的具有黏着位权限的目录是根目录下的/tmp目录:
例子:
用guest用户在/tmp下创建一个文件gtest,切换到普通用户user1:
发现无法删除gtest文件
视频8.3 文件系统属性chattr权限
使用man chattr 命令查看chattr命令的帮助说明:
先创建一个文件,使用追加重定向(echo)的方式写入一段数据:
注意:
使用普通的ll命令查看不了文件(夹)的chattr属性,需要使用lsattr命令查看;
- 对文件使用chattr +i
使用chattr命令的i选项,相当于把文件锁起来,即使是root用户也无法修改和删除该文件:
- 对文件夹使用chattr +i命令
只能对该文件夹中的文件进行修改,而不能删除和添加文件:
- 对文件使用chattr +a选项
则该文件不能被删除,也不能使用vim进行修改,只能通过echo这样的方式进行追加:
4.对文件夹使用chattr +a命令
只能在文件夹中创建和修改文件,不能删除文件;
视频8.4 系统目录sudo权限
user1 ALL=(ALL) command1
第一个ALL指的是允许用户user1在指定分配的网段(或IP)使用命令command1,一般这个位置的值为ALL或者本机IP,如果设置为网段一般需要配置用户服务等才能使用
例子:
给普通用户user1分配重启命令权限:
或者:
user1 192.168.110.105=/sbin/shutdown –r now
(192.168.110.105是Linux本机地址)
切换user1用户,查看sudo权限(第一次查看要输入用户密码,缓存时间内下次不用输密码):
可以看到当前具有的sudo权限,执行sudo权限需要加sudo:
sudo /sbin/shutdown –r now
其他选项则不具有权限:
注意:
不能给普通用户赋予类似vim这样的工具命令的sudo权限,这会非常危险,这样普通用户就具备了修改系统文件的权限!
例子:
普通vim命令无法修改root用户创建的文件tes1:
使用sudo权限修改: