特殊权限

须知少年凌云志,曾许人间第一流。这篇文章主要讲述特殊权限相关的知识,希望能为你提供帮助。
【特殊权限】

特殊权限介绍

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

## 特殊权限
[root@shiying < sub> ]# ll /bin/passwd
-rwsr-xr-x. 1 root root 27856 Apr12020 /bin/passwd
[root@shiying < /sub> ]# ll /bin/write
-rwxr-sr-x. 1 root tty 19544 Oct12020 /bin/write
[root@shiying ~]# ll /tmp/ -d
drwxrwxrwt. 10 root root 211 Apr 12 18:03 /tmp/

特殊权限1:SetUID
# 1.普通用户可不可以修改密码?
可以,修改自己的密码
# 2./etc/shadow文件的作用?
存储用户密码的文件
# 3./etc/shadow文件的权限?
[root@shiying < sub> ]# ll /etc/shadow
----------. 1 root root 1193 Apr 12 19:20 /etc/shadow

# 4.普通用户,是否可以修改/etc/shadow文件?
不可以,/etc/shadow文件,对于普通用户没有任何权限,所以不能读取,也不能写入内容
# 5.那么普通用户,为什么可以修改密码?
1)因为使用了passwd这个命令
2)passwd命令在属主权限位上,原本是x权限,变成了s权限
3)s权限在属主权限位,又叫做SetUID权限,SUID
4)作用:普通用户在使用有SUID权限的文件或命令时,会以该文件的属主身份去执行该命令

[qq@shiying < /sub> ]$ ll /bin/passwdo
-rwsr-xr-x. 1 root root 27856 Apr12020 /bin/passwd
qq用户以passwd命令的属主(root)身份执行该命令
root可以往/etc/passwd文件中写入内容,所以普通用户也可以

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

特殊权限2:SetGID
[root@shiying < sub> ]# ll /bin/write
-rwxr-sr-x. 1 root tty 19544 Oct12020 /bin/write
#创建一个目录
[root@shiying < /sub> ]# mkdir /tmp/ss1
#赋予sgid权限
[root@shiying < sub> ]# chmod u+s /tmp/ss1
#查看目录权限
[root@shiying < /sub> ]# ll /tmp/ss1/ -d
drwsr-xr-x. 2 root root 6 Apr 12 23:21 /tmp/ss1/
#使用root用户创建文件
[root@shiying < sub> ]# touch /tmp/ss1/ss2
#查看文件
[root@shiying < /sub> ]# ll /tmp/ss1/
total 0
-rw-r--r--. 1 root root 0 Apr 12 23:25 ss2
#切换用
[root@shiying < sub> ]# su - qq
#创建文件
[qq@shiying < /sub> ]$ touch /tmp/ss1/ss3
touch: cannot touch ‘/tmp/ss1/ss3’: Permission denied
#赋予目录777权限
[root@shiying < sub> ]# chmod 777 /tmp/ss1
#查看目录权限
[root@shiying < /sub> ]# ll /tmp/ss1/ -d
drwsrwxrwx. 2 root root 17 Apr 12 23:25 /tmp/ss1/
#切换至普通用户
[root@shiying < sub> ]# su - qq
#创建文件
[qq@shiying < /sub> ]$ touch /tmp/ss1/ss3
#查看权限
[qq@shiying < sub> ]$ ll /tmp/ss1/ss3
-rw-r--r--. 1 qq oo 0 Apr 12 23:32 /tmp/ss1/ss3
#将ss1目录属主和属组改为tt
[root@shiying < /sub> ]# chown tt:tt /tmp/ss1
#查看权限
[root@shiying < sub> ]# ll /tmp/ss1/ -d
drwsrwxrwx. 2 tt tt 28 Apr 12 23:32 /tmp/ss1/
#切换用户
[root@shiying < /sub> ]# su - qq

#创建文件
[qq@shiying < sub> ]$ touch /tmp/ss1/ss4
#查看文件权限
[qq@shiying < /sub> ]$ ll /tmp/ss1/ss4
-rw-r--r--. 1 qq oo 0 Apr 12 23:45 /tmp/ss1/ss4

SetGID特性
# 1.原本属组位上如果有x权限,则SetGID为 s
# 2.原本属组位上如果没有x权限,则SetGID为 S
# 3.授权方式
-chmod g+s 文件名
-chmod 2xxx 文件名
# 4.SetGID权限的数字是2000

1.针对用户组权限位修改,用户创建的目录或文件所属组和该目录的所属组一致。
2.当某个目录设置了sgid后,在该目录中新建的文件不在是创建该文件的默认所属组
3.使用sgid可以使得多个用户之间共享一个目录的所有文件变得简单。

## 主要应用场景:文件共享
练习sgid:
创建三个用户,分别是zls,oldboy,yourname这些用户都属于oldboyedu组的成员。这些用户的密码都是123
[root@shiying < sub> ]# useradd oldboyyedu
[root@shiying < /sub> ]# useradd zls
[root@shiying < sub> ]# useradd oldboy
[root@shiying < /sub> ]# useradd youname

mima=123
echo mima
1.要求以上用户和组可以在/home/oldboyyedu目录里访问,创建,删除文件
2.其他用户一律不允许访问该目录
3.在该目录下新建的文件会自动属于oldboyyedu组拥有
[root@shiying < sub> ]# chmod g+s /home/oldboyyedu

[root@shiying < /sub> ]# chown root:oldboyyedu /home/oldboyyedu
[root@shiying < sub> ]# usermod -G oldboyyedu zls
[root@shiying < /sub> ]# usermod -G oldboyyedu oldboy
[root@shiying < sub> ]# usermod -G oldboyyedu youname

[root@shiying < /sub> ]# chmod 2777 /home/oldboy

[zls@shiying < sub> ]$ ll /home/oldboyyedu/ -d
drwxrwsrwx. 3 root oldboyyedu 90 Apr 13 03:59 /home/oldboyyedu/cd

[root@shiying < /sub> ]# ll /home/oldboyyedu/222.txt/ -d
drwxr-sr-x. 2 root oldboyyedu 6 Apr 13 03:59 /home/oldboyyedu/222.txt/
[root@shiying oldboyyedu]# touch 1.txt
[root@shiying oldboyyedu]# ll 1.txt
-rw-r--r--. 1 root oldboyyedu 0 Apr 13 03:57 1.txt
[root@shiying home]# chmod o-rwx /home/oldboyyedu/
[root@shiying home]# ll /home/oldboyyedu/ -d
drwxrws---. 5 root oldboyyedu 155 Apr 13 05:39 /home/oldboyyedu/

[zls@shiying < sub> ]$ cd /home/oldboyyedu/
[zls@shiying oldboyyedu]$ touch 444.txt
[zls@shiying oldboyyedu]$ mkdir 555
其他普通用户不可以访问
[root@shiying home]# su - yyy
[yyy@shiying < /sub> ]$ cd /home/oldboyyedu/
-bash: cd: /home/oldboyyedu/: Permission denied


特殊权限3:SBIT 粘滞位权限
[qq@shiying ~]$ ll /tmp/ -d
drwxrwxrwt. 11 root root 222 Apr 12 23:24 /tmp/

粘滞位权限作用特性
# 1.带有粘滞位权限的目录下的所有文件,谁都可以读、写
# 2.带有粘滞位权限的目录下的文件只有属主能删除自己的文件,其他用户无法删除
# 3.带有粘滞位权限的目录,只有root能删除
# 4.授权方式
-chmod o+t 文件名
-chmod 1xxx 文件名
# 5.SBIT权限的数字是1000
# 6.其他用户权限位上有x权限:t 没有x权限 T


[rr@shiying < sub> ]$ ll /tmp/ss1/
total 0
-rw-r--r--. 1 root root 0 Apr 12 23:25 ss2
-rw-r--r--. 1 qqoo0 Apr 12 23:32 ss3
-rw-r--r--. 1 qqoo0 Apr 12 23:45 ss4
-rw-rw-r--. 1 rrrr0 Apr 13 00:08 ss5
[rr@shiying < /sub> ]$ rm -rf /tmp/ss1/ss2
#查看ss1目录权限
[rr@shiying < sub> ]$ ll /tmp/ss1/ -d
drwsrwxrwx. 2 tt tt 39 Apr 13 00:09 /tmp/ss1/
#授权粘滞位t
[root@shiying < /sub> ]# chmod o+t /tmp/ss1
[root@shiying < sub> ]# ll /tmp/ss1/ -d
drwsrwxrwt. 2 tt tt 39 Apr 13 00:09 /tmp/ss1/
#切换普通用户
[root@shiying < /sub> ]# su - rr
[rr@shiying < sub> ]$ ll /tmp/ss1/
total 0
-rw-r--r--. 1 root root 0 Apr 12 23:25 ss2
-rw-r--r--. 1 qqoo0 Apr 12 23:32 ss3
-rw-r--r--. 1 qqoo0 Apr 12 23:45 ss4
-rw-rw-r--. 1 rrrr0 Apr 13 00:08 ss5
#带有粘滞位权限的目录下的文件只有属主能删除自己的文件,其他用户无法删除
[rr@shiying < /sub> ]$ rm -rf /tmp/ss1/ss3
rm: cannot remove ‘/tmp/ss1/ss3’: Operation not permitted
[rr@shiying < sub> ]$ rm -rf /tmp/ss1/ss5
[rr@shiying < /sub> ]$ ll /tmp/ss1/
total 0
-rw-r--r--. 1 qq oo 0 Apr 12 23:32 ss3
-rw-r--r--. 1 qq oo 0 Apr 12 23:45 ss4
# toot用户可以删除 带有粘滞位权限的目录
[root@shiying < sub> ]# rm -rf /tmp/ss1/
[root@shiying < /sub> ]# ll /tmp/ss1

    推荐阅读