特殊权限介绍

特殊权限

特殊权限介绍

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

## 特殊权限

### /bin/passwd
[root@localhost ~]# ll /bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /bin/passwd

### /bin/write
[root@localhost ~]# ll /bin/write
-rwxr-sr-x. 1 root tty 19624 Oct 31 2018 /bin/write

### /tmp
[root@localhost ~]# ll /tmp/ -d
drwxrwxrwt. 9 root root 215 Apr 12 22:06 /tmp/

特殊权限1:SetUID

# 1.普通用户可不可以修改密码?
可以,修改自己的密码

# 2./etc/shadow文件的作用?
存储用户密码的文件

# 3./etc/shadow文件的权限?
[root@localhost ~]# ll /etc/shadow
---------- 1 root root 16404 Apr 8 11:41 /etc/shadow

# 4.普通用户,是否可以修改/etc/shadow文件?
不可以,/etc/shadow文件,对于普通用户没有任何权限,所以不能读取,也不能写入内容

# 5.那么普通用户,为什么可以修改密码?
1)因为使用了passwd这个命令
2)passwd命令在属主权限位上,原本是x权限,变成了s权限
3)s权限在属主权限位,又叫做SetUID权限,SUID
4)作用:普通用户在使用有SUID权限的文件或命令时,会以该文件的属主身份去执行该命令

SetUID特性

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

## 示例:1
[root@localhost~]# mkdir -m 0700 /home/qxtest2
[root@localhost~]# ll /home//qxtest2 -d
drwx------  2 root      root        6 Apr 12 16:56 qxtest2
[root@localhost~]# chmod u+s /home/qxtest2
[root@localhost~]# ll /home/qxtest2 -d
drws------ 2 root root 6 Apr 12 16:56 /home/qxtest2

## 示例:2
[root@localhost~]# chmod 0631 /home/qxtest
[root@localhost~]# ll /home/qxtest -d
drw--wx--x 2 root root 6 Apr 12 16:52 /home/qxtest
[root@localhost~]# chmod u+s /home/qxtest
[root@localhost~]# ll /home/qxtest -d
drwS-wx--x 2 root root 6 Apr 12 16:52 /home/qxtest

## 示例:3
[root@localhost~]# chmod u-s /home/qxtest
[root@localhost~]# ll /home/qxtest -d
drw--wx--x 2 root root 6 Apr 12 16:52 /home/qxtest
[root@localhost~]# chmod 4631 /home/qxtest
[root@localhost~]# ll /home/qxtest -d
drwS-wx--x 2 root root 6 Apr 12 16:52 /home/qxtest
[root@localhost~]# stat /home/qxtest
  File: ‘/home/qxtest’
  Size: 6         	Blocks: 0          IO Block: 4096   directory
Device: 803h/2051d	Inode: 50697003    Links: 2
Access: (4631/drwS-wx--x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2022-04-12 17:38:41.346954455 +0800
Modify: 2022-04-12 16:52:36.152796985 +0800
Change: 2022-04-12 17:44:32.170974433 +0800

## 示例:4
[root@localhost~]# chmod 4000 /home/qxtest
[root@localhost~]# ll /home/qxtest -d
d--S------ 2 root root 6 Apr 12 16:52 /home/qxtest

特殊权限2:SetGID

[root@localhost ~]# ll /bin/write
-rwxr-sr-x. 1 root tty 19624 Oct 31 2018 /bin/write


#创建一个目录
[root@localhost~]# mkdir /tmp/tsqxtest

#赋予sgid权限
[root@localhost~]# chmod g+s /tmp/tsqxtest

#查看目录权限
[root@localhost~]# ll /tmp/tsqxtest -d
drwxr-sr-x 2 root root 6 Apr 12 19:03 /tmp/tsqxtest

#使用root用户创建文件
[root@localhost~]# touch /tmp/tsqxtest/AAA

#查看文件
[root@localhost~]# ll /tmp/tsqxtest
total 0
-rw-r--r-- 1 root root 0 Apr 12 19:28 AAA

#切换用户
[root@localhost~]# su - lx15

#创建文件 (没有权限)
[lx15@localhost~]# touch /tmp/tsqxtest/ceshi15
touch: cannot touch ‘/tmp/tsqxtest/ceshi15’: Permission denied

#赋予目录777权限
[root@localhost~]# chmod 777 /tmp/tsqxtest/

#查看目录权限
[root@localhost~]# ll /tmp/tsqxtest/ -d
drwxrwsrwx 2 root root 17 Apr 12 19:28 /tmp/tsqxtest/

#切换至普通用户再次创建文件
[lx15@localhost~]# touch /tmp/tsqxtest/ceshi15

#查看权限
[lx15@localhost~]# ll /tmp/tsqxtest/ceshi15 
-rw-rw-r-- 1 lx15 root 0 Apr 12 19:40 /tmp/tsqxtest/ceshi15

#将tsqxtest目录属主和属组改为oldboy
[root@localhost~]# chown oldboy.oldboy /tmp/tsqxtest

#查看权限
[root@localhost~]# ll /tmp/tsqxtest/ -d
drwxrwsrwx 2 oldboy oldboy 32 Apr 12 19:40 /tmp/tsqxtest/

#切换用户
[root@localhost~]# su - lx15

#创建文件
[lx15@localhost~]# touch /tmp/tsqxtest/ceshi15_2

#查看文件权限
[lx15@localhost~]# ll /tmp/tsqxtest/ceshi15_2 
-rw-rw-r-- 1 lx15 oldboy 0 Apr 12 19:56 /tmp/tsqxtest/ceshi15_2

SetGID特性

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

## 主要应用场景:文件共享



### 示例:1
[root@localhost~]# mkdir -m 773 setgid
[root@localhost~]# ll setgid -d
drwxrwx-wx 2 root root 6 Apr 12 20:05 setgid
[root@localhost~]# chmod g+s setgid/
[root@localhost~]# ll setgid/ -d
drwxrws-wx 2 root root 6 Apr 12 20:05 setgid/


### 示例:2
[root@localhost~]# mkdir -m 763 setgid2
[root@localhost~]# ll setgid2 -d
drwxrw--wx 2 root root 6 Apr 12 20:05 setgid2
[root@localhost~]# chmod g+s setgid2 
[root@localhost~]# ll setgid2 -d 
drwxrwS-wx 2 root root 6 Apr 12 20:05 setgid2

### 示例:3
[root@localhost~]# ll setgid/ -d
drwxrws-wx 2 root root 6 Apr 12 20:05 setgid/
[root@localhost~]# chmod g-s setgid
[root@localhost~]# ll setgid -d
drwxrwx-wx 2 root root 6 Apr 12 20:05 setgid

[root@localhost~]# ll setgid -d
drwxrwx-wx 2 root root 6 Apr 12 20:05 setgid
[root@localhost~]# chmod 2773 setgid/
[root@localhost~]# ll setgid/ -d
drwxrws-wx 2 root root 6 Apr 12 20:05 setgid/

[root@localhost~]# stat setgid
  File: ‘setgid’
  Size: 6         	Blocks: 0          IO Block: 4096   directory
Device: 803h/2051d	Inode: 33578007    Links: 2
Access: (2773/drwxrws-wx)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2022-04-12 20:05:58.178457686 +0800
Modify: 2022-04-12 20:05:58.178457686 +0800
Change: 2022-04-12 20:18:49.586501615 +0800



### 示例:4
[root@localhost~]# mkdir -m 2000 setgid2
[root@localhost~]# ll setgid2 -d
d-----S--- 2 root root 6 Apr 12 20:20 setgid2

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


[root@localhost ~]# groupadd oldboyedu
[root@localhost ~]# useradd zls -g oldboyedu
[root@localhost ~]# useradd oldboy -g oldboyedu
[root@localhost ~]# useradd yourname -g oldboyedu
[root@localhost ~]# echo '123' | passwd --stdin zls
[root@localhost ~]# echo '123' | passwd --stdin oldboy
[root@localhost ~]# echo '123' | passwd --stdin yourname

[root@localhost~]# mkdir -m 2770 /home/oldboyedu
[root@localhost~]# ll /home/oldboyedu -d
drwxrws--- 2 root root 6 Apr 12 22:43 /home/oldboyedu
[root@localhost~]# chown .oldboyedu /home/oldboyedu/
[root@localhost~]# ll /home/oldboyedu -d
drwxrws--- 2 root oldboyedu 6 Apr 12 22:43 /home/oldboyedu

[root@localhost~]# su - zls

[zls@localhost~]# touch /home/oldboyedu/CCC
[zls@localhost~]# ll /home/oldboyedu/CCC
-rw-r--r-- 1 zls oldboyedu 0 Apr 12 23:18 /home/oldboyedu/CCC

[oldboy@localhost~]# vim /home/oldboyedu/FFF
[oldboy@localhost~]# cat /home/oldboyedu/FFF
www.baidu.com
www.sina.com

[oldboy@localhost~]# su - lx15
[lx15@localhost~]# cat /home/oldboyedu/FFF
cat: /home/oldboyedu/FFF: Permission denied

特殊权限3:SBIT

[root@localhost~]# ll /tmp -d
drwxrwxrwt. 9 root root 144 Apr 12 19:03 /tmp

粘滞位权限作用特性

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

### 示例:1
[root@localhost~]# mkdir -m 777 /tmp111
[root@localhost~]# ll /tmp111/ -d
drwxrwxrwx 2 root root 6 Apr 12 20:38 /tmp111/

### 示例:2
lx15@localhost~]# ll /tmp
total 0
-rw-r--r-- 1 root   root    0 Apr 12 20:58 AAA.txt
-rw-rw-r-- 1 lx15   lx15    0 Apr 12 20:58 BBB.txt
drwxrwsrwx 2 oldboy oldboy 49 Apr 12 19:56 tsqxtest

[lx15@localhost~]# rm -f /tmp/AAA.txt 
rm: cannot remove ‘/tmp/AAA.txt’: Operation not permitted


### 示例:3
[root@localhost~]# ll /tmp111/ -d
drwxrwxrwt 2 root root 6 Apr 12 20:38 /tmp111/

[lx15@localhost~]# rm -fr /tmp111
rm: cannot remove ‘/tmp111’: Permission denied

[root@localhost~]# rm -fr /tmp111
[root@localhost~]# ll /tmp111 -d
ls: cannot access /tmp111: No such file or directory


### 示例:4
[root@localhost~]# chmod o+t /tmp111
[root@localhost~]# ll /tmp111 -d
drwxrwxrwt 2 root root 6 Apr 12 20:38 /tmp111

[root@localhost~]# chmod o-t,o-x /tmp
[root@localhost~]# ll /tmp -d
drwxrwxrw-. 9 root root 144 Apr 12 19:03 /tmp
[root@localhost~]# chmod o+t /tmp
[root@localhost~]# ll /tmp -d
drwxrwxrwT. 9 root root 144 Apr 12 19:03 /tmp

[root@localhost~]# chmod 1777 /tmp111/
[root@localhost~]# ll /tmp111/ -d
drwxrwxrwt 2 root root 6 Apr 12 20:38 /tmp111/
[root@localhost~]# stat /tmp111/
  File: ‘/tmp111/’
  Size: 6         	Blocks: 0          IO Block: 4096   directory
Device: 803h/2051d	Inode: 799524      Links: 2
Access: (1777/drwxrwxrwt)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2022-04-12 20:40:55.985577149 +0800
Modify: 2022-04-12 20:38:13.782567912 +0800
Change: 2022-04-12 20:49:32.824606582 +0800

### 示例:5
[root@localhost~]# mkdir -m 1000 /tmp222
[root@localhost~]# ll /tmp222 -d 
d--------T 2 root root 6 Apr 12 20:51 /tmp222

### 示例:6
[root@localhost~]# ll /tmp -d
drwxrwxrwt. 9 root root 144 Apr 12 19:03 /tmp

[root@localhost~]# chmod o-t,o-x /tmp
[root@localhost~]# ll /tmp -d
drwxrwxrw-. 9 root root 144 Apr 12 19:03 /tmp
[root@localhost~]# chmod o+t /tmp
[root@localhost~]# ll /tmp -d
drwxrwxrwT. 9 root root 144 Apr 12 19:03 /tmp

凌驾于root之上的权限

## 设置这个权限
chattr

## 用法
chattr 选项 文件名

## 选项
i:只能查看文件内容,无法编辑
a:只能查看和追加文件内容,无法修改或覆盖源文件内容


+:设置,增加该权限
-:取消该权限


## 查看这个权限
lsattr 文件名


### 示例:
[root@localhost~]# ll 777.txt 
-rw-r--r-- 1 lx13 lx15 27 Apr 11 16:14 777.txt

[root@localhost~]# chattr +i 777.txt 
[root@localhost~]# lsattr 777.txt 
----i----------- 777.txt

[root@localhost~]# vim 777.txt 
[root@localhost~]# cat 777.txt 
www.sina.com
www.baidu.com

### 示例2:
[root@localhost~]# chattr +a 777.txt 
[root@localhost~]# lsattr 777.txt 
-----a---------- 777.txt

[root@localhost~]# echo 123456 >> 777.txt 
[root@localhost~]# cat 777.txt 
www.sina.com
www.baidu.com
123456

[root@localhost~]# echo hhhhhh >777.txt 
-bash: 777.txt: Operation not permitted



umask

umask
# 查看当前系统默认的umask
[root@localhost ~]# umask
0022


# 修改系统默认的umask
[root@localhost ~]# umask 025

# 计算方法:
目录使用777 - umask
文件使用666 - umask


## 如果umask的位数上有奇数
   文件使用666 - umask 在奇数位上加1
   
示例:
 修改umask为033
 
那么目录的权限则是 777 - 033   =744
那么文件的权限则是 666 - 033   =644

总结

# 1.三种特殊权限
1)SUID
- 作用
- 特性
- 授权方法
- 数字
2)SGID
- 作用
- 特性
- 授权方法
- 数字
3)SBIT
- 作用
- 特性
- 授权方法
- 数字


# 2.凌驾于root之上的权限
i
a

查看 lsattr
设置 chattr

## 主要场景:以后工作中,如果遇到root用户修改不了的文件,第一反应 特殊权限


# 3.umask
不用会设置,这辈子都用不到设置umask
会查看,会计算即可


##用户家目录:077 (创建用户的程序自己设定的)

思维导图

posted @ 2022-04-12 23:40  悠悠哉55  阅读(297)  评论(0)    收藏  举报