第5讲 高级权限(UMASK+SUID+SGID+STICK+ACL)
1.UMASK反掩码
(1)如何查看反掩码umask(root用户的反掩码0022;普通用户的反掩码0002)

(2)UMASK反掩码的作用:决定目录及文件的缺省权限值
目录的缺省权限值=777-UMASK反掩码(755=777-022;775=777-002)
文件的缺省权限值=777-UMASK反掩码-111(不一定)(644=777-022-111;664=777-002-111)

(3)如何修改UMASK反掩码
umask 0011
umask
mkdir aaa5(rwxrw-rw-,766=777-011)
touch a666.txt(rw-rw-rw-,666=777-011-111) (注:有X则减,无X则不变):用户、组内、组外可执行时,不可执行时不用变


(4)普通用户反掩吗的测试
umask 0011

2.SUID权限弥补(主要针对文件,所有者执行位变成了s或S)
(1)查看passwd命令所执行脚本,其中有高级权限SUID
#/usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd
(2)创建普通用户并切换用户测试命令passwd
补充:whereis命令 whereis passwd

#useradd a001
#passwd a001
#su - a001
$ passwd
Changing password for user a001.
Changing password for a001.
(current) UNIX password: a001
New password:ASDlcl1234 (注意:密码必须包含大小写字母和数字,长度须在8位以上)
Retype new password: ASDlcl1234
passwd: all authentication tokens updated successfully.


(3)返回root用户将passwd命令SUID高级权限去除
chmod u-s /usr/bin/passwd
ll /usr/bin/passwd
-rwxr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd
(4)再次切换普通用户a001,测试命令passwd
su - a001
$ passwd
Changing password for user a001.
Changing password for a001.
(current) UNIX password:ASDlcl1234
New password: QWEtest1234
Retype new password: QWEtest1234
passwd: Authentication token manipulation error
(5)s与S的区别(s表示该执行位原先具有x权限)临时身份跳转
权限弥补相同,权限基础不一样
chmod u-x /usr/bin/passwd
ll /usr/bin/passwd
-rwSr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd
chmod u+s /bin/ping
-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd
再次切换用户测试,又可以修改密码了。

3.SGID权限弥补(主要针对目录,组内成员的执行位变成了s)
在SGID目录类型创建的对象,所属组会自动继承父目录的所属组。
(1)含义
groupadd qqq
chown :qqq 111修改所有者和所属组,此处只修改了所属组
drwxr-xr-x. 2 root qqq 4096 11月 12 16:31 111

chmod g+s 111

drwxr-sr-x. 3 root qqq 4096 11月 12 17:44 111

(2)测试
以root身份进入111目录中创建目录和文件,观察组属性,全部继承其父目录111的组名.
touch 333.txt
mkdir 333
drwxr-xr-x. 2 root root 4096 11月 12 17:44 222
-rw-r--r--. 1 root root 0 11月 12 17:44 222.txt
drwxr-sr-x. 2 root qqq 4096 11月 12 17:48 333
-rw-r--r--. 1 root qqq 0 11月 12 17:48 333.txt
4.STICK粘滞位(其他用户的执行位变成了t)
(1)含义
共享目录存在的问题:用户之间可以随意删除对方的文件,如果管理员开放所有权限位(谁放置文件,谁才可以删除)
(2)测试
chmod o+t /share使用STICK粘滞位给用户添加t属性,使文件只能被管理员root和文件所有者删除
drwxrwxrwt. 2 root root 4096 11月 12 18:11 share
以lisi身份进入/share目录试图删除zhangsan用户的文件,不允许(注意:测试时不要用VI修改做测试,而要用rm删除做测试).


(3)应用
例如Linux系统中的/tmp目录就是典型的具有STICK的目录

5.ACL访问控制列表(可以针对文件或目录)针对于特殊用户的特殊权限
(1)如何查看文件的ACL信息(准备工作vim /123.txt)
getfacl 123.txt

(2)如何修改文件的ACL信息
setfacl -m u:lisi:rw- /123.txt
使用ll命令查看该文件时会发现多了一个+,表示其设置过ACL
-rw-rw-r–+ 1 root root 86 11月 12 18:40 123.txt

但是想详细查看ACL信息,只能使用getfacl 123.txt命令,效果如下
getfacl: Removing leading '/' from absolute path names
#file: 123.txt
#owner: root
#group: root
user::rw-
user:lisi:rw-
group::r--
mask::rw-
other::r--

(3)测试
su lisi
vim /123.txt(录入内容测试写权限,OK)

(注意:测试用户必须符合正规用户名命名原则,即用户名必须以字母开头;
测试文件不要创建在用户的家目录中,最好放置在/目录下。)


上图为操作给张三添加—权限,导致以张三登录时无法读、写、执行123.txt
(4)如何删除文件的ACL信息
setfacl -x u:lisi /123.txt
getfacl /123.txt
再次以lisi身份修改/123.txt文件,不允许.但是+仍然存在。用getfacl验证

chacl -B 123.txt (彻底删除一个文件或目录的ACL信息。)

(5)设置目录的ACL信息
setfacl -m d:u:lisi:rwx /345(参数d表示在/345目录中新建的文件或目录会自动继承/345目录的ACL信息值,但要注意:ACL真正的效果仍然体现在对文件的操作上,即对文件修改时才能看出效果)
cd /345
touch www.txt
getfacl www.txt
切换lisi进入目录测试


(6)当移动一个具有ACL属性的文件或目录时,默认情况下,ACL属性值是会移动的;

当复制一个具有ACL属 性的文件或目录时,默认情况下,ACL属性值是不会复制的,

(7)只有在cp命令后加上-p参数才可以。 cp -p 222.txt /tmp/2222.txt

补充知识:
chmod 7777 111.txt 满权限 SUID SGID STICK
1 1 1
chmod 1777 111.txt只设置了SUID
chmod 3777 111.txt只设置了SGID
本文深入探讨了Linux系统中的高级权限机制,包括UMASK反掩码在设定文件和目录默认权限中的作用,SUID权限如何实现临时权限提升,SGID权限如何确保组内成员的执行一致性,STICK粘滞位如何防止共享目录中的文件被误删,以及ACL访问控制列表如何为特定用户提供额外权限。通过实例演示了这些机制的设置、测试和撤销过程,强调了它们在系统管理和安全性中的重要性。
2120

被折叠的 条评论
为什么被折叠?



