1.SUID(让执行者临时拥有文件所有者的权限)
SUID是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限(仅对拥有执行权限的二进制程序有效)
chmod u+s 文件名
查看文件属性时发现所有者的权限由rwx变成了rws,其中x改变成s就意味着该文件被赋予了SUID权限。另外如果原先权限位上没有x执行权限,那么被赋予特殊权限后将变成大写的S。
2. SGID
SGID主要实现如下两种功能:
让执行者临时拥有属组的权限(对拥有执行权限的二进制程序进行设置);
在某个目录中创建的文件自动继承该目录的用户组(只可以对目录进行设置)。
chmod g+s 目录或者路径
执行者临时拥有属组的权限,创建的文件自动继承该目录的用户组
和suid一样,如果执行者原来有执行权限赋予sgid权限后原有的x变为s,若没有执行权限则变为S。
3.SBIT 保护位,可以确保用户只能删除自己的文件,即设置SBIT之后,文件只能被文件的所有者进行删除。
目录被设置SBIT特殊权限位后,文件的其他人权限部分的x执行权限就会被替换成t或者T,原本有x执行权限则会写成t,原本没有x执行权限则会被写成T。
例如:
若要取消特殊权限则是:
SUID chmod u-s
SGID chmod g-s
SBIT chmod o-t
4.文件的隐藏权限
chattr 用于设置文件的隐藏权限 格式为: chattr [参数] 文件
lsattr 用于显示文件的隐藏权限 格式为:lsattr [参数] 文件
chattr命令的参数以及作用
i 无法对文件进行修改,对目录进行设置则仅能修改其中的子文件内容而不能新建或删除文件
a 仅允许补充内容,无法覆盖/删除内容,也不能删除文件
u 删除文件后仍保存在硬盘,方便恢复
若要取消隐藏权限,则用chattr -[参数]即可。
5.文件访问控制列表
如果对某个指定的用户进行单独的权限控制,就需要用到访问控制列表(ACL)。
基于普通文件或目录设置ACL就是针对指定的用户或用户组设置文件或目录的操作权限。
如果针对某个目录设置了ACL,则目录中的文件会继承其ACL;
若针对文件设置了ACL,则文件不再继承其所在目录的ACL。
使用setfacl命令对单一用户或用户组、单一文件或目录进行读写执行权限的控制
setfacl [参数] 文件名称
对于目录使用-R参数,对于普通文件使用-m参数,删除某个文件的ACL使用-b参数。
getfacl 命令:用于显示文件上设置的ACL信息。getfacl [参数] 文件名称
6.su与sudo
su命令 解决切换用户身份的需求
su - 用户 完全变更,不保留原用户的任何信息,包括环境变量
su 用户 常规切换
强烈建议切换用户身份时添加“-”这个减号。
2.sudo命令:把特定的命令执行权限赋予指定的用户。
sudo [参数] 命令名称
sudo是一个服务,通过sudo命令来管理这个服务,该服务的配置文件为/etc/sudoers.
注意:只有root用户才可以使用visudo命令编辑sudo服务的配置文件。
配置文件第99行需要配置的信息:
谁可以使用 允许使用的主机=(以谁的身份) 可执行命令的列表
这只是sudo配置最简单的用法,还有很多需要今后仔细研究。