特殊权限:
SUID:运行某程序时,相应进程的属主是文件本身,而不是启动者
chmod u+s FILE
chmod u-s FILE
如果FILE本身具有执行权限,则显示为s,否则显示为S
SGID:运行某程序时,相应进程的属组是文件本身,而不是启动者
chmod g+s FILE
chmod g-s FILE
如果FILE属组具有执行权限,则显示为s,否则显示为S
Sticky:在一个公共目录,每个都可以创建文件,删除自己的文件,但是不能删除别人的文件
chmod o+t FILE
chmod o-t FILE
如果FILE其他权限具有执行权限,则显示为t,否则显示为T
suid粗略解释:当用户登录linux时,操作系统会启用一个用户进程,当这个用户去启动一个命令的时候,操作系统会对比其权限,如果通过,则启动这个命令的进程,当没有设置suid的时候,这个命令的进程的属主默认为启动着用户,而当设置了suid以后,这个进程的属主属于命令本身的属主。
suid用途举例:
如passwd命令,我们知道/etc/passwd只有root有写权限,但是普通用户也可以通过passwd命令修改自己的密码,这是因为,passwd命令被设置了suid,当用户执行passwd命令的时候,进程以passwd属主root的身份修改/etc/passwd文件。
当一个文件被设置了suid的时候,它的属主权限如果具有执行权限,那么它的x位会显示为s,如果没有则显示为S,如:
[root@logstash ~]# ls -al /usr/bin/passwd
-rwsr-xr-x. 1 root root 25980 Feb 22 2012 /usr/bin/passwd
[root@logstash ~]# ls -alh /etc/passwd
-rw-r--r-- 1 root root 1.9K Jan 14 10:16 /etc/passwd
sgid用途举例:
假设/tmp/test为公共目录,我们希望用户tom和用户jerry都能编辑修改里面的内容,但是又希望其他人不能修改。这种情况我们可以把tom和jerry加入/tmp/test的属主来解决,但是这个有个问题,tom和jerry在里面创建的文件,属主和属组都会是自己和自己的基本组,也就是说tom和jerry不能互相访问修改对方自己创建的文件,当我们希望这么做的时候,我们就可以用到gid,下面是具体演示过程:
[root@logstash ~]# groupadd test
[root@logstash ~]# mkdir /tmp/test
[root@logstash ~]# chown -R root:test /tmp/test
[root@logstash ~]# ls -ald /tmp/test
drwxr-xr-x 2 root test 4096 Jan 20 14:10 /tmp/test
[root@logstash ~]# chmod g+w /tmp/test
[root@logstash ~]# ls -ald /tmp/test
drwxrwxr-x 2 root test 4096 Jan 20 14:10 /tmp/test
[root@logstash /]# usermod -a -G test tom
[root@logstash /]# usermod -a -G test jerry
[tom@logstash ~]$ cd /tmp/test
[tom@logstash test]$ touch a
[tom@logstash test]$ ls -al a
-rw-rw-r-- 1 tom tom 0 Jan 20 14:22 a
[jerry@logstash ~]$ cd /tmp/test
[jerry@logstash test]$ touch b
[jerry@logstash test]$ ls -alh
total 8.0K
drwxrwxr-x 2 root test 4.0K Jan 20 14:23 .
drwxrwxrwt. 4 root root 4.0K Jan 20 14:20 ..
-rw-rw-r-- 1 tom tom 0 Jan 20 14:22 a
-rw-rw-r-- 1 jerry jerry 0 Jan 20 14:23 b
[root@logstash ~]# chmod g+s /tmp/test
[root@logstash ~]# su - jerry
[jerry@logstash ~]$ cd /tmp/test
[jerry@logstash test]$ touch c
[jerry@logstash test]$ ls -alh
total 8.0K
drwxrwsr-x 2 root test 4.0K Jan 20 14:29 .
drwxrwxrwt. 4 root root 4.0K Jan 20 14:20 ..
-rw-rw-r-- 1 tom tom 0 Jan 20 14:22 a
-rw-rw-r-- 1 jerry jerry 0 Jan 20 14:23 b
-rw-rw-r-- 1 jerry test 0 Jan 20 14:29 c
Sticky用途示例:
承上个例子,当前情况,在/tmp/test下,tom和jerry是可以互相删对方文件的,这是想当不友好的,这个时候我们可以借用sticky位。
[tom@logstash ~]$ cd /tmp/test
[tom@logstash test]$ ls -l
total 0
-rw-rw-r-- 1 tom test 0 Jan 20 14:42 a
-rw-rw-r-- 1 tom test 0 Jan 20 14:42 b
-rw-rw-r-- 1 jerry test 0 Jan 20 14:29 c
[tom@logstash test]$ rm c
[tom@logstash test]$ ls -l
total 0
-rw-rw-r-- 1 tom test 0 Jan 20 14:42 a
-rw-rw-r-- 1 tom test 0 Jan 20 14:42 b
[root@logstash test]# chmod o+t /tmp/test
[root@logstash test]# su - jerry
[jerry@logstash ~]$ cd /tmp/test
[jerry@logstash test]$ ls -l
total 0
-rw-rw-r-- 1 tom test 0 Jan 20 14:44 a
-rw-rw-r-- 1 tom test 0 Jan 20 14:42 b
[jerry@logstash test]$ rm a
rm: cannot remove `a': Operation not permitted
把suid、guid、sticky跟类似rwx组合
000:
001:设置了sticky位
010:guid
011:
100:suid
101:
110:
111:
chmod 5755 /backup/test 则test权限为 rwsr-xr-t