Linux中用户权限的“基本权限和特殊权限”

基本权限ACL

基本权限和特殊权限的区别:

ACL文件权限管理: 设置不同用户,不同的基本权限(r、w、x)。对象数量不同。
UGO设置基本权限: 只能一个用户,一个组和其他人

基本权限的语法:

setfacl -m u:alice:rw /home/test.txt
setfacl:命令
-m:设置
u:alice:用户或组
rw :权限
/home/test.txt:文件对象及其所在位置

基本权限的用法

设置

1、准备文件:
[[email protected] ~]# touch /home/test.txt
[[email protected] ~]# ll /home/test.txt
-rw-r–r-- 1 root root 0 10-26 13:59 /home/test.txt
2、设置ACL
[[email protected] ~]# getfacl /home/test.txt(查看文件有哪些ACL权限)
[[email protected] ~]# setfacl -m u:alice:rw /home/test.txt(设置用户alice,jack权限)
[[email protected] ~]# setfacl -m u:jack:- /home/test.txt
[[email protected] ~]# setfacl -m o::rw /home/test.txt(设置其他人的权限)
3、如何删除ACL
[[email protected] ~]# ll /home/test.txt (查看test.txt中的权限)
-rw-rw-r–+ 1 root root 0 10-26 13:59 /home/test.txt
[[email protected] ~]# getfacl /home/test.txt(这个也是查看有哪些ACL权限)
[[email protected] ~]# setfacl -m g:hr:r /home/test.txt(给组增加读的权限)
[[email protected] ~]# setfacl -x g:hr /home/test.txt (删除组hr的acl权限)
[[email protected] ~]# setfacl -b /home/test.txt (删除test.txt所有acl权限)

ACL的高级用法

原理:

ACL权限中有个"mask"的选项,它就是ACL权限的最大权限,现在是rwx,当你设置某个用户或组的ACL权限时,要跟mask的权限“相与”之后产生的权限才是该用户的最终权限,也就是加入mask的最大权限是rx,但是你给st用户设置的是rwx权限,此时st用户它的权限只有rx的权限,因为与最大权限“相与”得出的结果就是rx。

图示

Linux中用户权限的“基本权限和特殊权限”
生产环境中,常用于临时降低用户或组(除属主和其他人)的权限
1.准备测试用户和组
useradd xujingyuan
useradd cuiyanbing
groupadd hr
touch /tmp/file1.txt
2.设置facl权限。
setfacl -m u:xujingyuan:rwx /tmp/file1.txt
setfacl -m u:cuiyanbing:rw /tmp/file1.txt
setfacl -m g:hr:r /tmp/file1.txt
3.查看权限列表。测试成功。
getfacl /tmp/file1.txt
4.切换用户。验证权限读写执行成功。
su - xujingyuan
su - cuiyanbing
5.设置mask权限为空。切换用户测试,用户写和执行失效。
setfacl -m m::— /tmp/file1.txt
getfacl /tmp/file1.txt
su - xujingyuan
su - cuiyanbing
6.为什么用户还可以读取文件呢。
因为mask无法影响属主和其他用户权限。
去除掉其他*限。再次使用alice和jack用户访问文件。发现读取无法完成。
chmod o-r /tmp/file1.txt

特殊权限

特殊位 suid

高级权限的类型
suid,(sgid)针对文件/程序时,具备临时提升权限。
事例
设置suid,使普通用户通过suid临时提权,查看超管root用户的文件。
1.为cat程序添加上suid权限
[[email protected] ~]# ll /usr/bin/cat(查看cat中的结果)
[[email protected] ~]# chmod u+s /usr/bin/cat(改变权限)
[[email protected] ~]# ll /usr/bin/cat(查看cat中的结果)
分析两次结果有何不同之处
2.使用普通用户运行cat,暂时获得root权限
[[email protected] ~]$ cat /root/file1.txt
(观察出现的结果)
[[email protected] ~]# chmod u-s /usr/bin/cat(去除cat的suid权限除去。)
[[email protected] ~]# ll /usr/bin/cat(查看suid权限是否去除)

文件属性chattr

用途:

常用于锁定某个文件,拒绝修改。

分类:

Linux中用户权限的“基本权限和特殊权限”
**注释:**给文件加上chattr i 的属性之后,root都无法对其进行删除。

进程掩码 umask

概述:

新建文件、目录的默认权限会受到umask的影响,umask表示要减掉的权限。
观察系统默认的掩码:
[[email protected] ~]# umask
0022
修改文件abc.txt和目录def的掩码
示例2:修改shell umask值(临时)
[[email protected] ~]# umask 000
[[email protected] ~]# mkdir def
[[email protected] ~]# touch abc.txt
[[email protected] ~]# ll -d def abc.txt
drwxrwxrwx. 2 root root 4096 3月 11 19:44 def
-rw-rw-rw-. 1 root root 0 3月 11 19:44 abc.txt
注释:
现在的进程掩码是0000,用0777-0000=0777,所以目录和文件是满权限,但是系统默认不会给文件执行的权限,所以abc.txt的权限是666。