特殊权限

特殊权限介绍

#基本权限
r:读
w:写
x:执行

#特殊权限
s:setuid
s:setgid
t:sbit

特殊权限1:SetUID

#SetUID权限显示在文件的属主位上的执行权限位
[root@ltl ~]# ll /bin/passwd 
-rwsr-xr-x. 1 root root 27856 Apr  1  2020 /bin/passwd
作用:普通用户使用有SetUID权限的文件或命令会以该文件的属主去执行

#SetUID的特性
# 1.原本属主位上如果有x权限,则SetUID为小写 s 
# 2.原本属主位上如果没有x权限,则SetUID为大写 S 
# 3.授权方式 
u 方式授权
chmod u+s 文件名 
数字权限授权
chmod 4xxx 文件名 
SetUID权限的数字是4000

特殊权限2:SetGID

#权限位置在属组的执行位上以s字母的形式显示
# 1.原本属组位上如果有x权限,则SetGID为小写的 s 
# 2.原本属组位上如果没有x权限,则SetGID为大写的 S
3.授权方式 
g方式授权
chmod g+s 文件名 
数字权限授权
chmod 2xxx 文件名
SetGID权限的数字是2000
#主要应用场景:文件共享

练习sgid: 创建三个用户,分别是zls,oldboy,yourname这些用户都属于oldboyedu组的成员。这些用户的密码都是123 
1.要求以上用户和组可以在/home/oldboyedu目录里访问,创建,删除文件 
2.其他用户一律不允许访问该目录 
3.在该目录下新建的文件会自动属于oldboyedu组拥有

 [root@ltl ~]# echo 123 oldboydu zls oldboy yourname |awk '{print "groupadd "$2" ; useradd "$3" -g "$2" ; useradd "$4" -g "$2" ; useradd "$5" -g "$2" ; echo "$1" |passwd --stdin "$3" ;echo "$1" |passwd --stdin "$4" ; echo "$1" | passwd --stdin "$5}'|bash
 
 #看zls , oldboy ,yourname用户的属组
 [root@ltl /home]# groups zls oldboy yourname
zls : oldboydu
oldboy : oldboydu
yourname : oldboydu
#修改oldboydu目录权限
[root@ltl ~]# chmod 2770 /home/oldboydu
#查看/home/oldboydu目录权限及属组
[root@ltl /home]# ll
drwxrws---  2 root     oldboydu   6 Apr 12 19:31 oldboydu

#zls用户测试
[zls@ltl ~]$ cd /home/oldboydu/
[zls@ltl oldboydu]$ ll
total 0
[zls@ltl oldboydu]$ touch zls
[zls@ltl oldboydu]$ ll
total 0
-rw-r--r-- 1 zls oldboydu 0 Apr 12 19:41 zls
#oldboy用户测试
[oldboy@ltl oldboydu]$ touch oldboy
[oldboy@ltl oldboydu]$ ll
total 0
-rw-r--r-- 1 oldboy oldboydu 0 Apr 12 19:44 oldboy
-rw-r--r-- 1 zls    oldboydu 0 Apr 12 19:41 zls
#yourname用户测试
[yourname@ltl oldboydu]$ touch yourname
[yourname@ltl oldboydu]$ ll
total 0
-rw-r--r-- 1 oldboy   oldboydu 0 Apr 12 19:44 oldboy
-rw-r--r-- 1 yourname oldboydu 0 Apr 12 19:45 yourname
-rw-r--r-- 1 zls      oldboydu 0 Apr 12 19:41 zls

#除root外其他用户测试
[xwq@ltl ~]$ ll /home/oldboydu/
ls: cannot open directory /home/oldboydu/: Permission denied

特殊权限3:SBIT

#粘带位权限,在九位权限位的最后一位以字母t显示
其他用户权限位上有x权限:小写 t 
其他用户权限位上没有x权限:大写 T
[zls@ltl ~]$ ll /tmp/ -d
drwxrwxrwt. 12 root root 4096 Apr 12 19:06 /tmp/

#粘带位权限作用及特性
# 1.带有粘滞位权限的目录下的所有文件,谁都可以读、写 
# 2.带有粘滞位权限的目录下的文件只有属主能删除自己的文件,其他用户无法删除 
# 3.带有粘滞位权限的目录,只有root能删除


#授权方式
o:方式授权
chmod o+t 文件名
数字权限授权
chmod 1xxx 文件名
SBIT权限的数字是1000

凌驾于root之上的权限

# 设置这个权限 chattr 
i:只能查看文件内容,无法编辑 
a:只能查看和追加文件内容,无法修改或覆盖源文件内容 
+:设置,增加该权限 
-:取消该权限 
## 查看这个权限 
lsattr 文件名

#主要场景:工作中,遇到root用户修改不了的文件,思考是不是该特殊权限

umask

# 查看当前系统默认的umask 
[root@localhost ~]# umask 0022 
# 修改系统默认的umask 
[root@localhost ~]# umask xxx (阿拉伯数字) 
计算方法: 
目录使用777 - umask 
文件使用666 - umask 
如果umask的位数上有奇数 
文件使用666 - umask 在奇数位上加1
用户家目录创建:777-077

#不用会设置,会查看,会计算即可,以后工作中可能用不到设置umask

思维导图

特殊权限.png

流程图

未命名文件 4.png