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 ```