特殊权限管理
- ACL权限
简介:
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等文件系统。
ACL权限的设定
- 首先查看ACL所在的分区是否支持ACL权限(默认都支持)
用df -h 命令查看分区的信息
用dumpe2fs -h /dev/sda1来查看分区是否支持ACL权限
高亮的那一栏中有acl表示默认支持ACL权限
- 查看ACL命令
getfacle 文件名
- 设定ACL权限的命令
setfacl 选项 文件名
选项:
-m 设定ACL权限
-x 删除指定的ACL权限
-b 删除所有的ACL权限
-d 设定默认ACL权限
-k 删除默认ACL权限
-R 递归设定ACL权限
- 创建用户和组名,并把用户加入组中
分别只执行以下命名:
useradd wangyue
useradd zhongyiqiankun
useradd user1
groupadd happy
gpasswd -a wangyue happy
gpasswd -a zhongyiqiankun happy
执行完后可以查看/etc/group文件来查看是否添加成功
可以看到组好为1003的happy组中添加了wangyue和zhongyiqiankun用户,说明添加成功!
- 创建一个目录,并赋予user1用户ACL权限,和正常的用户与用户组权限
分别执行以下命令:
mkdir /acl 在根目录下创建一个acl目录
chown root:happy /acl/ 将acl目录的所有者跟改为root,所属组更改为happy
chmod 770 /acl/ 跟改acl目录的权限为770.
setfacl -m u:user1:rx /acl 给user1和acl目录设定acl权限
此时查看acl目录的详细信息如下:
- 给用户组设定ACL权限
执行以下命令:
useradd tianming
useradd shaoyu
useradd gaoyue
useradd shilan
usergroup qinshimingyue
chown -a tianming qinshimingyue
chown -a shaoyu qinshimingyue
chown -a gaoyue qinshimingyue
chown -a shilan qinshimingyue
setfacl -m g:qinshimingyue:rx /acl
- acl权限设定完成后,可用getfacl查看acl权限
最大有效权限
最大有效权限mask:mask是用来指定最大有效权限的。如果给用户赋予ACL权限,是需要 和mask的权限“相与”才能得到真正权限
设定mask权限
setfacl -m m:rx /acl
删除acl权限
setfacl -x u:user1 /acl 删除用户acl权限
setfacl -x g:qinshimingyue /acl 删除组的acl权限
setfacl -b /acl 删除所有的acl权限
递归ACL权限:
递归是父目录在设定ACL权限时,所有的子文件与子目录也会拥有相同的ACL权限
setfacl -m u:用户名:权限 -R 文件名
默认ACL权限:
默认ACL权限的作用是如果给父目录设定了默认ACL权限,那么父目录中所有新建的子文件都会 继承父目录的ACL权限。
setfacl -m d:u:用户名:权限 文件名
文件特殊权限
SetUID的功能
- 只有可执行的二进制程序才能设定SUID权限
- 命令执行者要对改程序拥有x(执行)权限
- 命令执行者要在执行该程序时获得改程序文件属主的身份(在执行程序的过程中灵魂附体为文件的属主)
- SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效
passwd命令拥有SetUID权限,所以普通用户可以修改自己的密码
设定SetUID的方法
4 代表SUID
chmod 4755 文件名 chmod u+s 文件名
取消SetUID的方法:
chmod 755 文件名 chmod u-s 文件名
(注:危险的SetUID:1.关键目录应该严格控制写权限2.对系统中默认的SetUID文件做一列表,定期检查有没有这些文件之外的文件被设置了SetUID权限)
SetGID针对文件的作用
只有可执行的二进制程序才能设置SGID权限
命令执行者要对改程序拥有x(执行)权限
命令执行在执行程序的时候,组身份升级为该程序文件的属组
SetGID权限同样只有在程序执行过程中有效,也就是说组身份改变只在程序执行过程中有效**
SetGID针对目录的作用:
普通用户必须对该目录拥有r和x权限,才能进入此目录
普通用户在此目录中的有效组会变成此目录的属组
若普通用
户对此目录拥有w权限时,新建的文件的默认属组是这个目录的属组
设定SetGID权限
2 代表SGID
chmod 2755 文件名
chmod g+s 文件名
SBIT粘着位的作用
- 粘着位目前只对目录起作用
- 普通用户对该目录拥有w和x权限,即普通用户可以在此目录拥有写入权限
- 如果没有粘着位,因为普通用户拥有w权限,所以可以删除此目录下的所有文件,包括 其他用户创建的文件。一但赋予了粘着位,除了root可以删除所有的文件,普通用户就算 拥有w权限,也只能删除自己建立的文件,但是不能删除其他用户建立的文件
设置粘着位
chmod 1755 目录名
chmod o+t 目录名
取消粘着位
chmod 755 目录名
chmod o-t 目录名
chattr [+-=] [选项] 文件或目录名(注:root用户也可以被限制)
- +:增减权限
- -:删除权限
- =:等于某权限
选项:
- i:如果对文件设置i属性,那么不允许对文件进行删除、改名、也不能添加和修改数据: 如果对目录设置i属性,那么只能修改目录下文件的数据,但不允许建立和删除文件
- a:如果对文件设置a属性,那么只能在文件中增加数据,但是不能删除也不能修改数据; 如果对目录设置a属性,那么只允许在目录中建立和修改文件,但是不允许删除
查看文件系统属性:lsattr 选项 文件名
选项:
-a 显示所有文件和目录
-d 若目标是目录,仅列出目录本身的属性,而不是子文件的
sudo权限
- root把本来只能由超级用户执行的命令赋予普通用户执行
- sudo的操作对象是系统命令