1. 程式人生 > 其它 >特殊許可權介紹

特殊許可權介紹

特殊許可權

目錄

特殊許可權介紹

## 基本許可權
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 (建立使用者的程式自己設定的)

思維導圖