LINUX--特殊权限SUID,SGID,Sticky

简介:

SUID:   运行某程序时,相应进程的属主是程序文件自身的属主,而不是启动者

SGID:   运行某程序时,相应进程的属组是程序文件自身的属组,而不说启动者的属组

Sticky:    在一个公共目录,每个人都可以创建文件,删除自己的文件,但不能删除别人 文件


什么意思?这些解释是不是云里雾绕的,还是用例子来解释吧,通俗易懂。


(一)

SUID:   比如,古代的时候,公主嫁给了平民,那么公主的很多权利就没有了,就不能像小时候那样随意的进宫玩耍了。怎么办?没关系,如果有了SUID之后,公主虽然嫁给了平民,但是她的权利不变,进宫或者行使其他的权利的时候,人们还是认她公主的身份,而不是她丈夫平民的身份。这就是SUID的作用。保持原来的身份不变。

          一个文件,权限默认是:

          -rwxr-xr-x   root root    /bin/cat

         (1) #   cat   /etc/gshadow     //用root用户查看/etc/gshadow可以查看!但是其他用户就没这么好的福气了。/etc/gshadow可不是那么好看的,只有管理员能查看。

  

          (2) $   cat  /etc/gshadow     //运行这个命令之后,肯定是拒绝,谁让你是普通用户呢。  


     但是,加上下面这条命令:

          (3) #  chmod u+s    /bin/cat               //意思是给cat这个命令加上SUID.

                    -rwsr-xr-x. 1 root root  /bin/cat   //rws,看见没有,变成小写s.如果原来就有执行权限,就是小写s,原来没有执行权限,会变成大写的S.

    然后:

          (4) $   cat   /etc/gshadow               //现在运行这个命令,就能查看了。因为虽然是普通用户进行查看的,但是因为cat这个命令加上了suid ,所以/etc/gshadow还是认为是root用户进行查看,所以就给看了。suid的作用是,不管是那个用户进行cat,cat在运行时都贴着它本来自己的标签--root属主和root属组。


(二)

SGID

比如,root 是皇帝,其他的3个普通用户是大臣是和珅,刘墉,纪晓岚。

     #   useradd   和珅             //和珅诞生了

     #    useradd 刘墉               //刘墉诞生了

     #    useradd  纪晓岚          //纪晓岚诞生了

     #   mkdir /tmp/朝廷                //朝廷是一个文件夹,请见谅。

     #   chmod g+w    /tmp/朝廷      //让/tmp/朝廷这个文件夹对组内成员有写的权限

    #    groupadd   一品大臣                     //建一个组,名字就叫一品大臣

   #   chown  -R   :一品大臣     /tmp/朝廷      //让/tmp/朝廷 这个文件夹的属组为一品大臣

   #  usermod -a -G  一品大臣   和珅         //把和珅加入一品大臣这个附加组,下面相同。

   #  usermod -a -G  一品大臣   刘墉

   #  usermod -a -G  一品大臣   纪晓岚


    现在,和珅写一个奏折,刘墉写一个奏折,纪晓岚写一个奏折,3个人写的奏折能互相浏览,更能互相更改,怎么实现,请看:

            a.   和珅写奏折

               $    cd /tmp/朝廷

               $    touch 和珅.txt

                -rw-rw-r--.   和珅   和珅        和珅.txt      //默认其他人有浏览的权限,属主和属组都是本人,因此默认他们只能浏览其他人的权限,不能更改其他人写的内容。

            b.   刘墉写奏折

                $    cd  /tmp/朝廷

                $    touch 刘墉.txt

                -rw-rw-r--.   刘墉    刘墉       刘墉.txt      //同上

            c.   纪晓岚写奏折

                $    cd /tmp/朝廷

                $    touch 纪晓岚.txt

                -rw-rw-r--.   纪晓岚   纪晓岚      纪晓岚.txt      //同上

  经过以上步骤,每个人都能在/tmp/朝廷里面创建文件夹,但是,不能修改其他人的文件夹,怎么办?
          答:

                #  chmod g+s   /tmp/朝廷                    //让朝廷这个文件夹有SGID的权限

然后,纪晓岚再创建一个文件夹:

       $    cd  /tmp/朝廷

        $  touch 纪晓岚02.txt  

     -rw-rw-r--.   纪晓岚   一品大臣       纪晓岚02.txt      //这个时候创建的文件夹默认属组是一品大臣。意味着只要是一品大臣这个组里面的人,比如和珅,不但可以修改纪晓岚的内容,而且还可以删除这个文件夹。纪晓岚要想不被别人删除他创建的东西,要做这一步:

           #    chmod o+t    /tmp/朝廷        //用root   执行这一步就行了。就不能随便删除别人的东西 了

    

            在上面的o+t  中,这个t指的就是sticky.


   -------------------------------------------------------------------------------------------------

附加小知识点:

     chmod 755   /tmp/1.txt     //意味着的权限是   rwx  r-x  r-x    ,分别是属主  读写执行,属组  读执行,  其他组的人  读执行。


    chmod 5755   /tmp/1.txt    //这个文件有SUID和Sticky!(数字中的第一个5,就是红色的5,表示有这个意思.)后面的755就是我们普通理解的--属主读写执行,属组读和执行,其他组的人读和执行。


  chmod 4755     /tmp/1.txt   //只有SUID,因此第一个数字是4.其他后面的755跟上面一样。

  chmod 2755    /tmp/1.txt     //只有SGID,因此第一个数字是2.其他后面的755跟上面一样。

  chmod 1755   /tmp/1.txt     //只有Sticky.




本文转自 曾国藩_6868 51CTO博客,原文链接:http://blog.51cto.com/8184069/1722516



相关文章
|
2月前
|
Linux 数据安全/隐私保护
linux特殊权限!!
本文介绍了Linux系统中的特殊权限,包括suid、sgid和sbit。suid使普通用户在执行特定命令时获得root权限;sgid使用户在创建文件时继承目录的用户组权限;sbit确保用户只能删除自己在共享目录中创建的文件。此外,文章还讲解了chattr和lsattr命令,用于更改和查看文件的扩展属性,以及umask的概念和计算方法,帮助理解文件和目录的默认权限。
48 1
linux特殊权限!!
|
3月前
|
Linux 应用服务中间件 nginx
Linux下权限设置之suid、sgid、sticky
Linux下权限设置之suid、sgid、sticky
|
3月前
|
Linux 数据安全/隐私保护 Windows
Linux_权限理解(详细PLUS
Linux_权限理解(详细PLUS
|
Linux 数据安全/隐私保护
|
2月前
|
Linux 网络安全 数据安全/隐私保护
Linux 超级强大的十六进制 dump 工具:XXD 命令,我教你应该如何使用!
在 Linux 系统中,xxd 命令是一个强大的十六进制 dump 工具,可以将文件或数据以十六进制和 ASCII 字符形式显示,帮助用户深入了解和分析数据。本文详细介绍了 xxd 命令的基本用法、高级功能及实际应用案例,包括查看文件内容、指定输出格式、写入文件、数据比较、数据提取、数据转换和数据加密解密等。通过掌握这些技巧,用户可以更高效地处理各种数据问题。
130 8
|
2月前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
506 6
|
2月前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
101 3
|
2月前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
84 2
|
27天前
|
Linux Shell
Linux 10 个“who”命令示例
Linux 10 个“who”命令示例
53 14
Linux 10 个“who”命令示例