Linux 權限詳解

一、文件、目錄權限和所有者

簡介:用戶對一個文件或目錄具有訪問權限,這些訪問權限決定了誰能訪問,以及如何訪問這些文件和目錄。通過設置權限可以限制或允許以下三種用戶訪問:

在 linux 系統中,每一位用戶都有對文件或目錄的的讀取、寫入和執行權限。

這三套權限賦予用戶不同類型(即用戶所有者、組羣所有者和其他用戶)的讀取、寫入及執行權限,這就構成了一個有 9 種類型的權限組。

二、設置文件和目錄基本權限

1、基本權限簡介

使用 ls -l 命令可以顯示文件和目錄的詳細信息,其中包括文件和目錄的權限。如下:

[root@localhost  ~]# ls -l /root 
total 156
...
-rw-r--r--. 1 root root    29 Jun 28 22:02 kkk
drwxr-xr-x. 2 root root     6 Jun 29 03:13 mlocate
-rw-r--r--. 1 root root     6 Jul 17 18:33 mm
-rw-r--r--. 1 root root    28 Jun 23 07:14 mm.txt
drwxr-xr-x. 2 root root    39 Jun 22 23:43 mypic
drwxr-xr-x. 2 root root    43 Jul 19 09:57 myshell
drwxr-xr-x. 2 root root     6 Jun 22 22:27 newdir1
-rw-r--r--. 1 root root    12 Jun 29 21:38 notes
-rw-r--r--. 1 root root   227 Jul 19 21:13 number
-rw-r--r--. 1 root root    49 Jul 17 18:51 oo
drwxr-xr-x. 2 root root     6 Jul 23 08:00 packages
drwxr-xr-x. 2 root root    17 Jul 23 19:10 root
-rwxr--r--. 1 root root   279 Jul 19 19:33 score
-rw-r--r--. 1 root root   318 Jul 19 19:58 selection
-rw-r--r--. 1 root root    88 Jul 19 20:52 sum
-rw-r--r--. 1 root root     0 Jun 23 07:06 textfile2
drwxr-xr-x. 2 root root    23 Jul 23 10:37 yum.repos.d
-rw-r--r--. 1 root root   135 Jul 19 21:03 zx

上圖第 2~10 個字符當中的每 3 個爲一組,左邊 3 個字符表示用戶所有者權限,中間 3 個字符表示組羣所有者的權限,右邊 3 個字符是其他用戶的權限。

每個用戶都擁有自己的主目錄,通常集中放置在 / home 目錄下,這些主目錄的默認權限爲 rwx------。使用以下命令查看主命令權限

[root@localhost  ~]# ls -l /home 
total 0
drwx------. 2 it       it       83 Jul 22 19:14 it
drwx------. 2 linux    li       83 Jun 11 09:42 li
drwx------. 2     1002     1002 62 Jul 20 05:06 lisi
drwx------. 2 wangwu   wangwu   62 Jul 20 05:06 opop
drwx------. 2 pp       root     62 Jul 20 05:25 pp
drwx------. 2 newuser  newuser  62 Jul 20 05:19 www
drwx------. 2 zhangsan zhangsan 62 Jul 20 05:01 zhangsan

2、基本權限的設置方法

只有系統管理員和文件 / 目錄的所有者纔可以更改文件和目錄的權限,有以下兩種方法

2.1 文字設定法設置權限

命令語法:chmod [操作對象] [操作符號] [權限] [文件 | 目錄]

0Qme7N

例子:取消 / root/abc 的寫入權限

[root@localhost  ~]# ls -l abc 
-rw-r--r--. 1 root root 282 Jul 23 18:47 abc
[root@localhost  ~]# chmod u-w abc 
[root@localhost  ~]# ls -l abc 
-r--r--r--. 1 root root 282 Jul 23 18:47 abc

2.2 數字設定法設置權限

將以上對應權限的數字相加就是某個文件或目錄的權限,例如某個文件用戶所有者有讀取、寫入和可執行權限,數字就是 700;某個文件組羣所有者擁有讀取權限,數字就是 040;其他用戶擁有讀取和寫入權限,數字就是 006.

使用命令 chmod 006 [文件或命令]=chmod 6 [文件或目錄]
所有數字屬性的格式應該是三個 0~7 的數,其順序是 u、g、o

例如,如果想讓某個文件的所有者有 “讀 / 寫” 兩種權限,需要用數字 6 來表示,即 4(可讀)+2(可寫)=6(讀 / 寫) 下面幾個例子說明權限字符字母轉換爲數字

使用 chmod 更改權限 命令語法:chmod [n1n2n3] [文件 | 目錄]

Y5tCcs

例如:設置 abc 文件權限,用戶所有者擁有讀取、寫入和執行的權限

[root@localhost  ~]# ls -l abc 
-r--r--r--. 1 root root 282 Jul 23 18:47 abc
[root@localhost  ~]# chmod 700 abc
[root@localhost  ~]# ls -l abc 
-rwx------. 1 root root 282 Jul 23 18:47 abc

2.3 設置文件和目錄特殊權限

用戶如果沒有特殊要求,一般是不需要啓用特殊權限的,以避免出現安全方面的隱患

因爲 SUID、SGID、Sticky 佔用 x(執行權限) 的位置來表示,所以在表示上會有大小寫之分。加入同時開啓執行權限和 SUID、SGID、Sticky,則權限表示字符是小寫的,如下

[root@localhost  ~]# ls -l abc 
-rwsr-sr-t. 1 root root 282 Jul 23 18:47 abc

如果關閉權限,則表示字符會變成大寫,如下

[root@localhost  ~]# ls -l abc 
-rwSr-Sr-t. 1 root root 282 Jul 23 18:47 abc

2.4 特定權限的設置方法

如果設置特殊權限,必須使用四位數字才能表示,對應數值如下

例如:設置文件 ah 具有 SUID 權限

[root@localhost  ~]# ls -l ah 
-rw-r--r--. 1 root root 0 Jul 26 08:27 ah
[root@localhost  ~]# chmod 4000 ah 
[root@localhost  ~]# ls -l ah 
---S------. 1 root root 0 Jul 26 08:27 ah

例子:設置文件 ah 具有 Sticky 權限

[root@localhost  ~]# chmod 1000 ah 
[root@localhost  ~]# ls -l ah 
---------T. 1 root root 0 Jul 26 08:27 ah
[root@localhost  ~]# chmod 7000 ah 
[root@localhost  ~]# ls -l ah 
---S--S--T. 1 root root 0 Jul 26 08:27 ah

2.5 更改文件和目錄所有者

使用 chown 命令可以更改文件和目錄的用戶所有者和組羣的所有者

命令語法:chown [選項] [用戶. 組羣] [文件 | 目錄] chown [選項] [用戶. 組羣] [文件 | 目錄]

ovqE0S

[root@localhost  ~]# ls -l ah 
---S--S--T. 1 root root 0 Jul 26 08:27 ah
[root@localhost  ~]# chown newuser ah 
[root@localhost  ~]# ls -l ah 
------S--T. 1 newuser root 0 Jul 26 08:27 ah

例子:將文件 ah 的組羣所有者更改成 newuser

[root@localhost  ~]# chown :newuser ah 
[root@localhost  ~]# ls -l ah 
------S--T. 1 newuser newuser 0 Jul 26 08:27 ah

例子:將文件 ah 的組羣所有者更改成 newuser

[root@localhost  ~]# chown .newuser ah 
[root@localhost  ~]# ls -l ah 
------S--T. 1 newuser newuser 0 Jul 26 08:27 ah

例子:將目錄 / root/b 連同它的下級文件 / root/b/c 的用戶所有者和組羣所有者一起更改爲 newuser

[root@localhost  ~]# ls -l /root/b 
total 0
-rw-r--r--. 1 root root 0 Jul 26 08:59 c
[root@localhost  ~]# ls -l /root/b/c 
-rw-r--r--. 1 root root 0 Jul 26 08:59 /root/b/c
[root@localhost  ~]# chown -R newuser.newuser /root/b 
[root@localhost  ~]# ls -ld /root/b 
drwxr-xr-x. 2 newuser newuser 15 Jul 26 08:59 /root/b
[root@localhost  ~]# ls -l /root/b/c 
-rw-r--r--. 1 newuser newuser 0 Jul 26 08:59 /root/b/c

例子:chmod -R 775 share
//-R share 目錄及其子目錄
//0-- 沒有權限 1-- 可執行權限 x 2-- 寫入權限 w 4-- 讀取權限 r
// 賦予屬主 可讀可寫可執行權限(第一個 7 = 4 + 2 + 1)
// 賦予屬主組其他用戶可讀可寫可執行權限(第二個 7 = = 4 + 2 + 1)
// 系統其他用戶可讀權限(5 = = 4 + 1)

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/SLKmM35rq5KuX8NYkMouMg