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 個字符是其他用戶的權限。
-
r(讀取):對文件而言,該用戶具有讀取文件內容的權限;對目錄來說,該用戶具有瀏覽目錄的權限。
-
w(寫入):對文件而言,該用戶具有新增、修改文件內容的權限;對目錄來說,該用戶具有刪除、移動目錄內文件的權限
-
x(執行):對文件而言,該用戶具有執行文件的權限;對目錄來說,該用戶具有進入目錄的權限。
-
-:表示該用戶不具有該項權限
| 舉例 | 描述 |
| --- | --- |
| -rwx------ | 用戶所有者對文件具有讀取、寫入和執行權限 |
| -rwxr--r-- | 用戶所有者具有讀取、寫入和執行權限,其他用戶則具有讀取權限 |
| -rw-rw-r-x | 用戶所有者和組羣所有者對文件具有讀取、寫入權限,而其他用戶只具有讀取和執行權限 |
| drwx--x--x | 目錄的用戶所有者具有讀寫和進入目錄權限,其他用戶能進入目錄,卻無法讀取任何數據 |
| drwx----- | 除了目錄的用戶所有者具有所有的權限之外,其他用戶對該目錄沒有任何權限 |
每個用戶都擁有自己的主目錄,通常集中放置在 / 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 [操作對象] [操作符號] [權限] [文件 | 目錄]
例子:取消 / 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 數字設定法設置權限
-
0 表示沒有權限 =---
-
1 表示可執行權限 =--x
-
2 表示寫入權限 =-w-
-
4 表示讀取權限 = r--
將以上對應權限的數字相加就是某個文件或目錄的權限,例如某個文件用戶所有者有讀取、寫入和可執行權限,數字就是 700;某個文件組羣所有者擁有讀取權限,數字就是 040;其他用戶擁有讀取和寫入權限,數字就是 006.
使用命令 chmod 006 [文件或命令]=chmod 6 [文件或目錄]
所有數字屬性的格式應該是三個 0~7 的數,其順序是 u、g、o
-
r:對應數值 4
-
w:對應數值 2
-
x:對應數值 1
-
-:對應數值 0
例如,如果想讓某個文件的所有者有 “讀 / 寫” 兩種權限,需要用數字 6 來表示,即 4(可讀)+2(可寫)=6(讀 / 寫) 下面幾個例子說明權限字符字母轉換爲數字
-
-rwx------:用數字表示爲 700
-
-rwxr--r--:用數字表示爲 744
-
-rw-rw-r-x:用數字表示爲 665
-
drwx--x--x:用數字表示爲 711
-
drwx------:用數字表示爲 700
使用 chmod 更改權限 命令語法:chmod [n1n2n3] [文件 | 目錄]
例如:設置 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: 對文件或目錄設置 Sticky 之後,儘管其他用戶有寫權限,也必須由文件所有者執行刪除和移動等操作。
因爲 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 特定權限的設置方法
-
文字設置法設置特殊權限
-
數字設定法設置特殊權限
如果設置特殊權限,必須使用四位數字才能表示,對應數值如下
-
SUID: 對應數值是 4
-
SGID: 對應數值是 2
-
Sticky: 對應數值是 1
例如:設置文件 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 [選項] [用戶. 組羣] [文件 | 目錄]
[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