特殊权限
SUID:运行某程序时,相应进程的属主是程序文件自身的属主,而不是启动用户。
SGID:运行某程序时,相应进程的属组是程序文件自身的属组,而不是启动用户所属的基本组。
Sticky:在一个公共目录,每个用户都可以创建文件,能删除自己的文件,但不能删除别人的文件
修改文件的特殊权限
chmod u+s FILE:给文件添加SUID权限
chmod u-s FILE:给文件删除SUID权限
chmod g+s FILE:给文件添加SGID权限
chmod g-s FILE:给文件删除SGID权限
chmod o+t DIR:给目录增加Sticky权限
chmod o-t DIR:给目录删除Sticky权限
例子:
chmod 1755 /back/test:带Sticky权限的755文件
chmod 2755 /back/test:带SGID权限的755文件
chmod 3755 /back/test:带Sticky和SGID权限的755文件
chmod 4755 /back/test:带SGID和SUID权限的755文件
chmod 5755 /back/test:带Sticky和SUID权限的755文件
chmod 6755 /back/test:带Sticky和SUID以及SGID权限的755文件
因此umask的0022中第一位0就代表的是特殊权限。
练习:创建一个目录,让user01,user02,user03都有写的权限,并且都可以编辑另外的用户创建的文件,但是不可删除别人创建的文件。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
[root@liang-study ~]
# mkdir /home/project #创建公用目录
[root@liang-study ~]
# useradd user01 #创建用户
[root@liang-study ~]
# useradd user02
[root@liang-study ~]
# useradd user03
[root@liang-study ~]
# groupadd mygroup #创建附加组
[root@liang-study ~]
# usermod -a -G mygroup user01 #将用户添加至附加组
[root@liang-study ~]
# usermod -a -G mygroup user02
[root@liang-study ~]
# usermod -a -G mygroup user03
[root@liang-study ~]
# id user01 #验证添加是否成功
uid=5001(user01) gid=5001(user01)
groups
=5001(user01),5004(mygroup)
[root@liang-study ~]
# chown :mygroup /home/project/ #修改目录所属组为附加组
[root@liang-study home]
# chmod g+s /home/project/ #给公用目录添加SGID权限
[user02@liang-study project]$ ll
#使用user01-03创建的文件的属组就是目录的所属组mygroup
total 4
-rw-rw-r-- 1 user01 mygroup 22 Dec 22 11:26 user01.txt
-rw-rw-r-- 1 user02 mygroup 0 Dec 22 11:26 user02.txt
#此时,user01登录此目录就可以修改其他文件,也可以删除。
[root@liang-study project]
# chmod o+t /home/project/ -R #添加sticky权限
[root@liang-study home]
# ls -ld /home/project/
drwxrwsr-t 2 root mygroup 4096 Dec 22 11:26
/home/project/
#至此,完成实验
|
FACL:File System Access Control List
利用文件扩展属性保存额外的访问控制权限,ACL为现有权限机制的延伸,在现有机制的三个基本设定(owner、group、other)的基础上加入了对某指定使用者或群组的存取权限设定。
FACL可以对某个文件设置该文件具体的某些用户的权限,意思就是通过FACL可以对一个文件权限做扩展,可以不同的用户对某个文件有不同的权限。如让tom用户对jerry创建的文件有读写权限。
setfacl
-m:设置额外访问控制列表
u:uid:perm FILE 设定指定用户对FILE有指定权限
d:uid:perm DIR 设定指定用户对目录的指定权限,默认在此目录创建的文件都会继承FACL
g:gid:perm FILE 设定指定组对FILE有指定权限
例:setfacl -m u:hoodop:rw /tmp/test.txt 添加hoodop用户对test.txt拥有读写权限。
-x:取消额外访问控制列表
--mask:设置默认mask权限
getfacl FILE:获取facl权限
添加facl权限后的权限应用顺序
owner-->facl中的user-->Group-->facl中的group-->Other