首页 > 代码库 > passwd中特殊权限s的个人理解

passwd中特殊权限s的个人理解

           Linux引入suid、sgid、sticky这三种特殊权限,能够更加方便、有效和安全地控制文件。

          当在一个目录或文件上加入suid特殊权限时,如过原来目录或文件的属主具有x(执行)权限,就会用小写的s来替代x;如果原来文件或目录不具有x(执行)权限,就会用大写的S来代替x。

          同样,sgid和suid相同,如过原来目录或文件的属组具有x(执行)权限,就会用小写的s来替代x;如果原来文件或目录不具有x(执行)权限,就会用大写的S来代替X。

         同样,如果在一个文件或目录上加入sticky权限时,若原文件或目录的其他用户有x(可执行)权限时,就用小写t代替x;如果原文件或目录没有x权限时,就用大写T替代x权限。下例说明。

        可以chmod的字符或数字的方式修改特殊权限,下例以数字方式实现。

# -rw-r--r-- 1 root root 0 Nov  6 07:40 test1      ugo都没执行权限 
# chmod 7644 test1                                          原权限是644,都加上特殊权限 
# -rwSr-Sr-T 1 root root 0 Nov  6 07:43 test1   属主、属组、其他用户执行权限变为S、S、T. 
  
# -rwxr-xr-x 1 root root 0 Nov  6 07:43 test2   ugo都有执行权限 
# chmod 7755 test2                                          原权限是655,都加上特殊权限 
# -rwsr-sr-t 1 root root 0 Nov  6 07:49 test2    属主、属组、其他用户执行权限变为s、s、t. 

     实验:如果一个组为development,该组中有三个用户完成一个项目。该项目在路径/tmp/project/目录下进行相关的资源共享,要求 @三个用户user1、user2、user3都可以在该目录下创建文件@彼此之间可以互相查阅并修改对方文件@彼此不可删除除自己创建外的文件。

  步骤:

 # by daniao   

 # groupadd development

 # mkdir /tmp/project

 # chown -R  :development /tmp/project/

 # useradd user1 依次创建

 # usermod -a -G development user1 依次将用户加入组

 # 通过 ls -l 查看project 其他用户没有w权限,则chmod g+w  /tmp/project/

 # 此时都可以创建文件但彼此不可访问修改自己创建的文件 则用到了SGID权限。

   chmod g+s /tmp/project/  

   此时用户可以查看并修改彼此文件也能删除,这里需要通过user1-3用户进入/tmp/project/中创建各    自文件就可以看出

 # 通过Sticky权限 chmod g+t /tmp/project/ 不能删除他人文件

 以上是个人对特殊权限的思路总结,没有配相关截图。

             

本文出自 “大鸟地带-点滴积累” 博客,谢绝转载!

passwd中特殊权限s的个人理解