Linux下的文件,除了rwx这些权限外,还有一些特殊的权限,下面我们就来看看这些特殊权限的作用及为什么需要这些权限。
1、s权限(setuid)
- setuid:该位是让普通用户可以以root用户的角色运行只有root帐号才能运行的程序或命令。
- s:文件属主和组设置SUID和GUID,文件在被设置了s权限后将以root身份执行。在设置s权限时文件属主、属组必须先设置相应的x权限,否则s权限并不能正真生效。
Linux修改密码的passwd便是个设置了SUID的程序,普通用户无读写/etc/shadow文件的权限确可以修改自己的密码。
这里如果没有了s权限,那么普通用户只有通过root来修改密码,这样root就知道了我普通用户的密码,这样是不行的。如果给用户设置成rw权限,那么用户就可以通过删除/etc/shadow里的root的密码,来让root无密码,可直接登陆。这样就会造成极大的风险。
- 设置方法
: # chmod u+s
2、粘滞位(t)
- 设置粘着位,一个文件可读写的用户并一定相让他有删除此文件的权限,如果文件设置了t权限则只用属主和root有删除文件的权限,通过chmod +t filename 来设置t权限。
- 同样的,当没有x权限的时候,为大写T
- 设置粘滞位的文件,只能由以下账户删除
- 超级管理员
- 该目录的所有者
- 该文件的所有者
- 粘滞位的设置方法
:# chmod u+t
3、其他特殊权限
-
i:不可修改权限
例:chattr u+i filename 则filename文件就不可修改,无论任何人,如果需要修改需要先删除i权限,用chattr -i filename就可以了。查看文件是否设置了i权限用lsattr filename。 -
a:只追加权限, 对于日志系统很好用,这个权限让目标文件只能追加,不能删除,而且不能通过编辑器追加。可以使用chattr +a设置追加权限