Linux基本許可權 | 高階許可權管理
本文已參與「新人創作禮」活動,一起開啟掘金創作之路。
檔案系統基本許可權和高階許可權管理
1 檔案的基本許可權:r w x (UGO)
2 檔案的特殊許可權:suid sgid sticky 和檔案擴充套件許可權 ACL
3 實戰:建立一個讓 root 都無法刪除的檔案
檔案的基本許可權
許可權的作用
通過對檔案設定許可權可以達到以下三種訪問限制許可權:
- 只允許使用者自己訪問
- 允許一個預先指定的使用者組中的使用者訪問
- 允許系統中的任何使用者訪問
檢視許可權
bash
[[email protected] ~]$ ll /etc/passwd
-rw-r--r--. 1 root root 2618 Nov 16 2020 /etc/passwd
檔案許可權基本解釋
檔案型別, 可以為 p、d、l、s、c、b 和 –
http
p 表示命名管道檔案
d 表示目錄檔案
l 表示符號連結檔案
- 表示普通檔案
s 表示 socket 套介面檔案,比如我們啟用 mysql 時,會產生一個 mysql.sock 檔案
c 表示字元裝置檔案,例: 虛擬控制檯 或 tty0
b 表示塊裝置檔案 例: sda, cdrom
bash
[[email protected] ~]$ ll /dev/vcs /dev/cdrom /etc/passwd /dev/tty0
lrwxrwxrwx. 1 root root 3 Nov 20 14:00 /dev/cdrom -> sr0
crw--w----. 1 root tty 4, 0 Nov 20 14:00 /dev/tty0
crw-rw----. 1 root tty 7, 0 Nov 20 14:00 /dev/vcs
-rw-r--r--. 1 root root 2618 Nov 16 2020 /etc/passwd
許可權說明
對於檔案來說
- r:讀
- w:寫
- x:執行
對於目錄來說
- r:讀(看到目彔裡面有什麼) ls
- w:在目錄裡面建檔案,刪除,移動 touch mkdir rm mv cp
- x:進入 cd cat
檔案擁有者
UGO:所有者--使用者組--其它使用者
所有者:
就是建立檔案的使用者,這個使用者擁有對它所建立的檔案的一切許可權,所有者可以允許其所在的使用者組可以訪問所有者的檔案。
- 使用者組:
使用者組是具有相同特徵使用者的邏輯集合,有時我們需要讓多個使用者具有相同的許可權,比如檢視、修改某一個檔案的許可權,一種方法是分別對多個使用者迚行檔案訪問授權,如果有 10 個使用者的話,就需要授權 10 次,顯然這種方法丌太合理;另一種方法是建立一個組,讓這個組具有檢視、修改此檔案的許可權,然後將所有需要訪問此檔案的使用者放入這個組中,那舉所有使用者就具有了和組一樣的許可權這就是使用者組。
- 其它使用者:系統內的其他所有者使用者就是 other 使用者類
舉例說明
常見幾種檔案許可權組成
http
- rwx --- --- 檔案所有者對檔案具有讀取、寫入和執行的許可權。
- rwx r-- r-- 檔案所有者具有讀、寫不執行的許可權,使用者組裡使用者及其他使用者則具有讀取的許可權
- rw- rw- r-x 檔案所有者不同組使用者對檔案具有讀寫的許可權,而其他使用者僅具有讀取和執行的許可權。
d rwx --x --x 目彔所有者具有讀寫不迚入目錄的許可權,其他使用者近能迚入該目錄,卻無法讀取任何資料。
d rwx --- --- 除了目錄所有者具有完整的許可權之外,其他使用者對該目錄完全沒有任何許可權。
1) 每個使用者都擁有自己的與屬目彔,通常放置 /home 下
```bash [[email protected] ~]$ ll /home/ total 4 drwx------. 19 kiosk kiosk 4096 Nov 20 14:04 kiosk
注:[rwx------] 表示目錄所有者本身擁有的許可權,其它使用者是無法進入的, root可以.
```
2) 你以什麼使用者身份登入,那麼你建立的檔案和目錄,自動成為該檔案的所屬主和組
bash
[[email protected] ~]$ touch file1.txt
[[email protected] ~]$ ll file1.txt
-rw-rw-r--. 1 kiosk kiosk 0 Nov 21 05:22 file1.txt
更改檔案的屬主和屬組
改變檔案的所屬關係用到命令
- chown:可以用來改變檔案(或目錄)的屬主
- chgrp:可以用來改變檔案(或目彔)的預設屬組
- 如果要對目錄進行操作,加選項 -R
語法: chown user:group filename 比如:chown hr:san a.txt 把檔案的屬主和屬組改為 hr,san chown user filename 比如:chown san a.txt 把檔案的屬主改為 san 使用者 chown :group filename 比如: chown :miao a.txt 把檔案的屬組改為 miao 這個組 chown user: filename 比如:chown san: a.txt 自動繼承這個使用者所有的組 chgrp hr filename 比如: chgrp hr f.txt -R : 遞迴(目錄下的所有內容都更改,否則只修改目錄)
一個檔案只有讀的許可權,擁有者是否可以寫這個檔案?
```bash [[email protected] ~]$ touch a.txt
[[email protected] ~]$ ll a.txt -rw-rw-r--. 1 kiosk kiosk 0 Nov 21 05:27 a.txt
[[email protected] ~]$ echo hello > a.txt
[[email protected] ~]$ cat a.txt hello
在另一個終端上,以 root 身份登入
[[email protected] ~]$ su -
[[email protected] ~]# chmod 000 /home/kiosk/a.txt
[[email protected] ~]# ll /home/kiosk/a.txt ----------. 1 kiosk kiosk 6 Nov 21 05:27 /home/kiosk/a.txt
回到以 kiosk 身份登彔的終端
[[email protected] ~]$ echo demo >> a.txt bash: a.txt: Permission denied
在另一個終端上,以 root 身份登入
[[email protected] ~]# cat /home/kiosk/a.txt hello
[[email protected] ~]# echo demo >> /home/kiosk/a.txt
[[email protected] ~]# cat /home/kiosk/a.txt hello demo ```