linux系统下文件的特别权限
我们来看一个文件
ls /usr/bin/passwd -l -rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd
发明没有,如何显现了一个惊奇的东西s。这个s显现在了文件所有者的x上面,此时就被称为Set UID,简称为SUID。假如显现在所属组的x上面,则表示SGID。假如是在其别人的x上面,则表示Sticky。
下面通过一个表格来说明下各非凡权限的用途:
文件 | 名目 | |
SUID | 此会员将继承此程序的所有者权限 | 无意义 |
SGID | 此会员将继承此程序的所属组权限 | 此名目下所有会员创建文件都主动继承此名目的会员组 |
Sticky | 无意义 | 名目中每个会员仅能删除、移动或改名本人的文件或名目 |
下面,我们通过/usr/bin/passwd这个文件来讲解下SUID的用处。
我们知道,linux下每个会员都可以修改本人的密码,而root则可以修改所有会员的密码。那你有没有想过,为什么一般会员也可以修改本人的密码?密码不是留存在/etc/shadow文件中的么?这个文件关于一般会员没有写入权限阿。
# ls -l /etc/shadow ---------- 1 root root 969 Sep 10 09:37 /etc/shadow
这个就是SUID的用处了,一般会员通过passwd命令来修改本人的密码。施行期间,会员会临时具有该文件所有者即root的权限,所以一般会员可以修改本人的密码。假如该文件非凡权限为SGID,那么施行期间就会具有该文件所属组的权限。
SGID除了可以作用于文件外,还可以作用于名目,留意,关于文件和名目,它的作用完全不一样。我们通过一个场景来讲解SGID关于名目的作用。
下面,我们模拟一个场景:公司此刻需要开发一个项目,原型图已经给出,需要交给设计部门design停止设计。此刻创立一个名目project1_ps。design部门所有人员对这个名目下的文件均具有rwx权限。
我们知道,在linux中,当创建一个文件或名目时,所有者是本人,所属组为本人所属的组。这样一来,当设计师a创建了一个文件时,其他会员对这个文件是其别人的权限,不相符我们的要求。所以,我们需要SGID来完成需求。
# groupadd design #创立design会员组 # useradd -G design --no-create-home dgn1 # 创立会员 # useradd -G design --no-create-home dgn2 # 创立会员 # id dgn1 uid=1003(dgn1) gid=1004(dgn1) 组=1004(dgn1),1003(design) # id dgn2 uid=1004(dgn2) gid=1005(dgn2) 组=1005(dgn2),1003(design) # mkdir design # 工作名目 # chgrp design design/ # chmod 2770 design/ <== 假如是SUID则是4770 # ll -d design/ drwxrws--- 2 root design 4096 5月 5 19:06 design/ # su dgn1 $ umask 0022 $ umask 0002 $ touch design/1.ps $ ls design -l 总用量 0 -rw-rw-r-- 1 dgn1 design 0 5月 5 19:31 1.ps <=== 新创立的文件默许组为design了
最后,我们来看看Sticky。这个非常好懂得,名目中每个会员仅能删除、移动或改名本人的文件或名目。其实/tmp名目就是使用该非凡权限。
# ll /tmp -d drwxrwxrwt. 9 root root 868352 Sep 13 08:24 /tmp
以上就是linux系统下文件的非凡权限的具体内容,更多请关注百分百源码网其它相关文章!