Linux权限管理之ACL权限
简介与开启
1.1.1 简介
ACL是Access Control List的缩写,主要的目的是在提供传统的owner,group,others的read,write,execute权限之外的局部权限设定。ACL可以针对单个用户,单个文件或目录来进行r,w,x的权限设定,特别适用于需要特殊权限的使用情况。
ACL主要针对用户(user)、用户组(group)、以及掩码(mask)方面来控制权限。
简单地来说,ACL就是可以设置特定用户或用户组对于一个文件/目录的操作权限。
而在windows系统上,没有这个ACL,ACL是类Unix(Unix-like)操作系统权限的额外支持项目,因此要使用ACL必须要有文件系统的支持才行。主要包括ReiserFS, EXT2/EXT3/ext4, JFS, XFS等文件系统。
我们知道,在linux系统中,我们将访问文件的用户分为三类,user,group,other。
如果系统中某个用户想对某个文件有写入的权限,但是该用户是属于other,如果是这样,就只能够开放other的权限。但是一旦开放other的权限,那么所有人就对该文件有写入的权限了。文件的ACL权限就很好的解决了这个问题,它可以设置一个特定文件的特定权限
1.1.2查看分区ACL权限是否开启
dumpe2fs -h /dev/sda3
dumpe2fs是查询指定分区详细文件系统信息的命令
选项:
-h 仅显示超级快中的信息,而不显示磁盘块组的详细信息
1.1.3临时开启分区ACL权限
mount -o remount,acl /
重新挂在根分区,并挂载加入acl权限
1.1.4永久开启分区ACL权限
vi /etc/fstab
LABEL=/ / ext3 defaults,acl 1 1
#加入acl
mount -o remount /
#重新挂载文件系统或重启动系统,使修改生效
查看与设定
1.2.1查看ACL权限
getfacl 文件名
#查看acl权限
1.2.2设定ACL权限
setfacl 选项 文件名
选项:
-m 设定ACL权限
-x 删除指定的ACL权限
-b 删除所有的ACL权限
-d 设定默认的ACL权限
-k 删除默认的ACL权限
-R 递归设定ACL权限
最大有效权限与删除
1.3.1最大有效权限mask
mask是用来指定最大有效权限的。如果我给用户赋予了ACL权限,是需要和mask的 权限“相与”才能得到用户的真正权限。
1.3.2修改最大有效权限
setfacl -m m:rx 文件名
#设定mask权限为r-x。使用“m:权限”格式
1.3.3删除ACL权限
setfacl -x u:用户名 文件名
#删除指定用户的ACL权限
setfacl -x g:组名 文件名
#删除指定用户组的ACL权限
setfacl -b 文件名
#删除文件的所有ACL权限
默认与递归ACL权限
1.4.1递归
递归是父目录在设定ACL权限时,所有的子文件盒子目录也会拥有相同的ACL权限
setfacl -m u:用户权限 -R 权限名
1.4.2默认ACL权限
默认ACL权限的作用是如果给父目录设定了默认ACL权限,那么父目录中所有新建的子文件夹都会继承父目录的ACL权限
setfacl -m d:u:用户名:权限 文件名
Linux权限管理之文件特殊权限
SetUID
2.1.1 简介
只有可以执行的二进制程序才能设定SetUID权限;
命令执行者要对该程序拥有想(执行)权限;
命令执行者在执行该程序时获得该程序文件属主的身份(在执行程序的过程中灵魂附体为文件的属主);
SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效。
2.1.2设定SetUID的方法
4代表SetUID
chmod 4755 文件名
chmod u+s 文件名
2.1.3取消SetUID的方法
chmod 755 文件名
chmod u-s 文件名
SetGID
2.2.1 SetGID针对文件的作用
只有可以执行的二进制程序才能设定SetGID权限;
命令执行者要对该程序拥有想(执行)权限;
命令执行者在执行该程序时,组身份升级为该程序文件的属组;
SetGID权限同样只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中 有效。
例如 # ll /usr/bin/locate
/usr/bin/locate 是可执行二进制程序,可以赋予SGID;
执行用户lamp对/usr/bin/locate命令拥有执行权限;
执行/usr/bin/locate命令时,组身份会升级为slocate组,而slocate组对; /var/lib/mlocate/mlocate.db数据库拥有r权限,所以对普通用户可以使用locate命令查询 mlocate.db数据库;
命令结束,lamp用户的组身份返回为lamp组。
2.2.2 SetGID针对目录的作用
普通用户必须对此目录拥有r和x权限,才能进入此目录;
普通用户在此目录中的有效组会变成此目录的属组;
若普通用户对此目录拥有w权限时,新建的文件的默认属组是这个目录的属组。
2.2.3设置/取消SetGID的方法
2 代表 SetGID
chmod 2755 文件名
chmod g+s 文件名
chmod 755 文件名
chmod g-s 文件名
Sticky BIT(粘着位)
2.3.1 SBIT粘着位作用
粘着位目前只对目录有效;
普通用户对该目录拥有w和x权限,即普通用户在此目录拥有写入权限;
如果没有粘着位,因为普通用户拥有w权限,所以可以删除此目录下的所有文件,包 括其他用户建立的文件。一旦赋予了粘着位,除了root可以删除所有文件,普通用户 就算拥有w权限,也只能删除自己建立的文件,但是不能删除其他用户建立的文件。
2.3.2设置与取消
chmod 1755 目录名
chmod o+t 目录名
chmod 755 目录名
chmod o-t 目录名
Linux权限管理之文件系统属性权限chattr 权限
chattr命令格式
chattr [+-=] [选项] 文件或目录名
+ 增加权限
- 删除权限
= 等于某权限
选项
i:如果对文件设置i属性,那么不允许对文件进行删除、改名,也不能添加和修改数 据;如果对目录设置i属性,那么只能修改目录下文件的数据,但不允许建立和删除文 件。
a:如果对文件设置a属性,那么只能在文件中增加数据,但是不能删除也不能修改数 据;如果对目录设置a属性,那么只允许在目录中建立和修改文件,但是不允许删除。
查看文件系统属性
lsattr 选项 文件名
选项
-a 显示所有文件和目录
-d 若目标是目录,仅列出目录本身的属性,而不是子文件的
Linux权限管理之sudo权限
sudo权限
root把本来只能超级用户执行的命令赋予普通用户执行;
sudo的操作对象是系统命令。
sudo的使用
visudo
#实际修改的是/etc/sudoers文件
root ALL=(ALL) ALL
#用户名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
%wheel ALL=(ALL) ALL
%组名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
授权zhangsan用户可以重启服务器
# visudo
zhangsan ALL=/sbin/shutdown -r now
普通用户执行sudo赋予的命令
sudo -l
#查看可用是sudo命令
sudo /sbin/shutdown -r now
#普通用户执行sudo赋予的命令