首页 > 代码库 > RHCE 学习札记

RHCE 学习札记

A. SUID, SGID, SBIT权限的活学活用方式:

   SUID 添加命令: chmod 4***,   chmod u+s

   SUID 删除命令: chmod 0***,   chmod u-s

   SGID添加命令:  chmod 2***,   chmod g+s

   SGID删除命令:  chmod 0***,   chmod g-s

   SBIT添加命令:   chmod 1***,   chmod o+t

   SBIT删除命令:   chmod 0***,   chmod o-t




 SetUID的功能:

    1.    只有可执行的二进制程序或者shell程序才能设定SUID权限

    2.    命令执行者要对该程序(命令)拥有x(执行)权限

    3.    命令执行者在执行该程序时获得该程序文件owner的身份(在执行程序的过程中灵魂附体为文件的owner)

    4.    SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效

         以passwd命令举例

            ls –l /usr/bin/passwd #passwd命令,不是/etc/passwd配置文件

            bl@ubuntumma:~$ ls -l /usr/bin/passwd

            -rwsr-xr-x 1 root root 47032 Jul 16  2015 /usr/bin/passwd

 
            bl@ubuntumma:~$ ls -l /etc/shadow

            -rw-r----- 1 root shadow 1292 Aug 25 16:56 /etc/shadow

               以上可以看出,

            (1)passwd命令的权限中,有s。

            (2)shadow文件的权限普通用户没有w权限,root用户有w权限

            (3)因为passwd命令有s(即设置了suid功能),那么bl用户在执行passwd命令时,就会暂时获得命令owner(root)的权限,而root对shadow文件有w权限,所以,普通用户bl此时也有了w权限,在执行passwd时是可以修改密码的(即修改shadow文件)。

 
            设定SUID

            4代表SUID


                    chmod 4764

                    chmod u+s

                    bl@ubuntumma:~$ ls -l test

                    -rwxrw-r-- 1 bl bl 0 Aug 26 12:43 test

                    bl@ubuntumma:~$ chmod 4764 test

                    bl@ubuntumma:~$ ls -l test

                    -rwsrw-r-- 1 bl bl 0 Aug 26 12:43 test

            删除SUID,直接设置权限即可

            bl@ubuntumma:~$ chmod 664 test chmod u-s

            bl@ubuntumma:~$ ls -l test

            -rw-rw-r-- 1 bl bl 0 Aug 26 12:43 test

            这时,再次设置SUID会出现什么情况呢

            bl@ubuntumma:~$ chmod u+s test

            bl@ubuntumma:~$ ls -l test

            -rwSrw-r-- 1 bl bl 0 Aug 26 12:43 test

            S变成大写了,这说明SUID设置出错,因为644权限里的owner本身就没有x权限,所以无法设置SUID
            出现大写S表示设置SUID权限不成功,因为文件所有者都没执行权限[x], 这在linux中时不允许的。
 

本文出自 “3 TEETH Network Jockey!” 博客,谢绝转载!

RHCE 学习札记