8.1、ACL权限
8.1.1 ACL权限的简介和开启
Q1:为什么引入ACL权限?
答:
因为以前的三个身份:所有者、所属组、其他人三个身份不够用。
又加入了新的身份,试听组:r-x
Q2:怎么实现“试听组”?
我们可以忽略所有者、所属组、其他人身份,直接把“用户”拿出来并“给权限”就好了,不在去关心身份。
注:这和Windows中文件的权限管理很像,只不过Windows是用图形界面进行管理文件/目录的权限,而在Linux中是用命令。
//这就是ACL权限的作用!
在进行ACL权限管理之前,我们要先查看分区ACL权限是否开启?
下面介绍3个命令:
①df -h 查看分区使用情况
②dumpe2fs -h /dev/sda5 查看/dev/sda5分区的ACL权限是否开启
Default mount options: user _x:ttr acl 表示默认情况下开启
③修改分区的两种方式
(1)mount -0 remount,acl / 重新挂在根分区/,让根分区/拥有acl权限
注:用命令进行临时的修改acl权限,没有写入相应的配置文件,不会永久生效。
(2)vi /etc/fstas 修改/etc/fstas中的内容,保存并退出;重新启动Linux系统
如下图:
假设默认情况下,default是没有acl权限,我们只要在default后面加上acl就可以使当前分区拥有acl权限。
注:一般情况下,default情况下,都是有acl权限的。
8.1.2 查看与设定ACL权限
(1)设置ACL权限
setfacl 选项 文件名
选项:
-m 设定ALC权限
①给已经存在的组,假设为g1组设置acl权限为rwx
setfacl -m g:g1:rwx /project
②给已存在的用户,假设为u1用户设置acl权限为r-x
setfacl -m u:u1:r-x /project
注:g:表示组, u:表示用户
-x 删除指定的ACL权限
-b 删除全部的ACL权限
-d 设定默认的ACL权限
-k 删除默认的ACL权限
-R 递归设定ACL权限
(1)查看acl权限
getfacl 文件名
8.1.3 -最大有效权限mask与删除acl权限
什么是最大有效权限mask?最大有效权限有什么用?
mask作用:我们给用户赋予了ACL权限后,ACL的权限必须和mask权限进行相与才能得到用户真正的权限。
注:默认情况下mask权限是rwx,我们可以设定mask权限
setfacl -m m:r-w /project
-x 删除文件/目录的指定的组、用户的ACL权限
-b 删除文件/目录的全部的ACL权限
8.1.4 默认与递归ACL权限(注:这两个权限只针对于目录不针对于文件)
什么是递归?即一层一层
setfacl -m u:user1:rx -R /project/
注:该命令只是对/project/目录中现有的目录或文件的acl权限进行修改。
默认ACL权限?
setfacl -m d:u:user1:rx -R /project/ 只是比上面多加了一个d:,表示默认default。
注:该命令只是对/project/目录下新出现的文件或目录的acl权限进行修改。
8.2 文件特殊权限
8.2.1 SetUID,4代表SUID
设置普通用户对可以执行的(具有x权限的)二进制文件具有s权限,在执行该二进制文件时,暂时拥有该二进制文件属主的身份(灵魂附体),身份改变只在执行过程中有效。
(1)设定SetUID的方法,4代表SUID
chmod 4755 文件名
chmod u+s 文件名
(2)取消SetUID的方法
chmod 755 文件名
chmod u-s 文件名
(3)SetUID是一个非常不安全的方法:
例如:我们拿vim所在的/usr/bin/vim目录作实验:
whereis vim 先查看vim在哪个文件中
ll /usr/bin/vim 再查看/usr/bin/vim的权限
chmod 4755 /usr/bin/vim 进行修改/usr/bin/vim的权限
修改完成后,/usr/bin/vim目录下的vim命令就具有了s权限,那么普通用户再执行vim命令时,就暂时具有了root身份,可以对任意的文件进行rwx权限,这是很危险的。
我们应该把它修改回来:
chmod u-s /usr/bin/vim
8.2.2 SetGID,2代表SGID
———————————————————————————————-
8.2.3 Sticky BIT
8.3文件系统属性chattr权限
作用:为了防止所有用户(包括root用户)的误操作。
命令格式:
chattr [+-=] 选项 文件/目录
选项:
-i
-a
-i与-a选项针对于文件和属性分别的操作权限见下图:
查看文件目录的特殊属性:
lsattr 选项 文件/目录名
-a 所有文件
-d 当前目录的属性
8.4 系统命令权限sudo
1.sudo简单介绍
(1)给普通用户赋予管理员的权限
(2)和上面讲的chmod等命令不同的是:chmod的操作对象是目录/文件,而sodu的操作对象是系统权限。
用sudo可以使普通用户去替代管理员执行管理员具有的命令,摆脱权限的限制。
2.具体做法:要使普通用户对本机(或者某机器)具有sudo命令,首先要在root上对本机进行sudo的相关命令的设置;
设置完成后,再在本机上用普通用户进行登录,最后执行sudo设置的相关命令。
(1)visodu 实际上修改的是/etc/sudoers中的内容(在root身份下可以用vi去修改)
修改格式:以具体实例进行讲解
root ALL = /sbin/shutdown -r now
lisa 192.168.0.156 = /usr/bin/vim
用户名 被管理主机的地址 = 授权命令(绝对路径)
注:怎么查看命令的绝对路径:whereis 命令
(2)在本机上切换到普通用户,查看本机有的sudo命令
su - abc
sudo -l
(3)abc普通用户进行调用sudo命令
sudo /sbin/shutdown -r now