Linux基本權限 | 高級權限管理

語言: CN / TW / HK

本文已參與「新人創作禮」活動,一起開啟掘金創作之路。

文件系統基本權限和高級權限管理

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

5.gif