acl权限
文件只能有一个所属组
acl就是不管用户什么组了,直接针对某个文件给他特定权限。
acl需要所在分区文件系统的支持。
df -h #查看分区
dumpe2fs -h /dev/sda3 #-h 只显示超级块中的信息,而不显示磁盘快组的详细信息。
#dump2fs命令查看分区详细文件系统信息
mount -o remount,acl / #给/分区添加acl权限,这条命令是临时生效,永久失效需要修改文件/etc/fstab
vi /etc/fstab #UUID=fadf-fds-adfaf-sdfa-fafdasdsadfsdf / ext4 defaults,acl
mount -o remount / #重新挂载文件系统,使修改生效
setfacl选项 | 描述 |
---|---|
-m | 设定acl权限 |
-x | 删除指定的acl权限 |
-b | 删除所有的acl权限 |
-d | 设定默认的acl权限 |
-k | 删除默认的acl权限 |
-R | 递归指定的acl权限 |
useradd mic
useradd leon
groupadd classroom
gpasswd -a leon classroom
gpasswd -a mic classroom
mkdir /test
chown root:classroom /test
chmod 770 /test
useradd shiting
setfacl -m u:shiting:rwx /test
group newgroup
setfacl -m g:newgroup:rwx /test
setfacl -m m:rx /test #修改最大有效权限
getfacl /test #前面设置的是特殊acl权限,最后生效的权限是由mask最大有效权限和设置的特殊acl权限用与计算过来的。
setfacl -x u:用户名 /test
setfacl -x g:组名 /test
setfacl -b /home/project #删除所有acl权限
setfacl -m u:用户名:权限 -R /test #递归设置acl权限
setfacl -m d:u:用户名:权限 #设置默认acl权限
#默认acl只针对新建的。对现有的还是递归acl。
#递归只能针对目录,不能针对文件,不会报,但没什么用。
SetUID,SetGID
查看权限如果是rwS而不是rws,说明报错了,因为该命令执行者没有x权限。
不要随便改SetUID,非常危险,为什么呢?
因为他会灵魂附体,比如给vim设置了,那么以后普通用户就可以修改passwd文件。
chattr
chattr +i /test #文件设置了i权限,不允许删除、改名、添加数据、修改数据;目录设置了i权限,只能修改目录下的文件,不能删除和建立文件
chattr -i /test
chattr =a /test #文件设置了a权限,只可以增加数据,但不能删除不能修改数据;目录:只能建立和修改文件,不允许删除
设置了a属性后,不能用vi编辑文件,只能用 echo 然后 >>
chattr 连root的权限都能限制
lsattr -a /test #显示所有文件和目录的attr权限
chattr -d /test #显示test目录的attr权限
sudo
visudo
root ALL=(ALL) ALL
#%wheel ALL=(ALL) ALL
sc 192.168.0.156= /usr/bin/useradd