特殊权限SUID以及ACL

特殊权限:

    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


你可能感兴趣的:(linux,特殊权限)