您的位置:首页 > 其它

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

2017-04-12 18:10 155 查看
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/ 不能删除他人文件
以上是个人对特殊权限的思路总结,没有配相关截图。

补充:上述这样给s权限是不安全的,如果想user1创建的文件给user2查阅则可以通过文件系统访问控制列表FACL来实现,
user1$ touch /tmp/project/test
getfacl /tmp/project/test 获取test文件的facl
# file: tmp/project/3.bird
# owner: bird
# group: development
user::rw-
group::rw-
other::r--
setfacl -m u:user2 rw /tmp/project/test 后user2就能正常访问ueser1的文件了
通过setfacl -x u:user2 /tmp/project/test 去除
也可以通过setfacl -m d:u:user2 rw 给/tmp/project/目录权限这个样user1在该目录下创建的任何文件,user2都可以正常修改访问。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  总结 关于 特殊权限