
Linux中除了常见的读(r)、写(w)、执行(x)权限以外,还有3个特殊的权限,分别是setuid、setgid和stick bit。
这些特殊的权限,在被执行时都会有特殊的用处。如果不了解,很容易被黑客利用这些权限的特性来获得系统更高级的权限,甚至对系统造成无法挽回的伤害。
了解
setuid: 在执行时具有文件所有者的权限.setgid: 设置目录. 一个目录被标上setgid位,此目录下创建的文件继承该目录的属性.sticky bit: 该位可以理解为防删除位. 设置sticky bit位后,就算用户对目录具有写权限,但也只能添加文件而不能删除文件。
系统已有的特殊权限相关文件
setuid
$ ls -l /usr/bin/passwd |
$ ls -l /usr/bin/chsh |
setgid
$ ls -l /usr/bin/write |
sticky bit
$ ls -l -d /tmp |
如何设置:
操作这些标志与操作文件权限的命令是一样的, 都是使用chmod。
有两种方法对这些标志来操作
chmod u+s temp– 为temp文件加上setuid标志. (setuid只对文件有效,u=用户)chmod g+s tempdir– 为tempdir目录加上setgid标志 (setgid只对目录有效,g=组名)chmod o+t temp– 为temp文件加上sticky标志 (sticky只对文件有效)采用八进制方式. 这一组八进制数字三位的意义如下,
abca-setuid位, 如果该位为1, 则表示设置setuidb-setgid位, 如果该位为1, 则表示设置setgidc-sticky位, 如果该位为1, 则表示设置sticky
设置后, 可以用 ls -l 来查看. 如果本来在该位上有x, 则这些特殊标志显示为小写字母 (s, s, t). 否则, 显示为大写字母 (S, S, T)
如:
rwsrw-r-- 表示有setuid标志 (rwxrw-r--:rwsrw-r--)rwxrwsrw- 表示有setgid标志 (rwxrwxrw-:rwxrwsrw-)rwxrw-rwt 表示有sticky标志 (rwxrw-rwx:rwxrw-rwt)
扩展阅读
CORE TECHNOLOGY: ACCESS CONTROL
SADS: SetUid and SetGUID and sticky bit (Linux File Permissions)