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


文件、目錄權限和所有者

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

  • 文件的用戶所有者(屬主)
  • 文件的組群所有者(用戶所在組的同組用戶)
  • 系統中的其他用戶

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

  • 第一套權限控制訪問自己的文件權限,即所有者權限
  • 第二套權限控制用戶組訪問其中一個用戶的文件的權限。
  • 第三套權限控制其他所有用戶訪問一個用戶的文件的權限。

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

設置文件和目錄基本權限
基本權限簡介

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

[root@localhost ~]# ls -l /root total 156 -rw-r--r--. 1 root root 0 Jun 22 23:40 123.png} -rw-r--r--. 1 root root 8 Jun 28 22:00 aa -rw-r--r--. 1 root root 282 Jul 23 18:47 abc -rw-r--r--. 1 root root 10240 Jul 23 18:47 abc.tar -rw-r--r--. 1 root root 0 Jul 23 18:59 abc.tar.bz2 -rw-r--r--. 1 root root 243 Jul 23 18:54 abc.tar.gz -rw-r--r--. 1 root root 300 Jul 23 19:07 abc.tar.xz -rw-------. 1 root root 1260 Jun 9 14:21 anaconda-ks.cfg -rw-r--r--. 1 root root 12 Jul 17 18:27 ao -rw-r--r--. 1 root root 82 Jul 17 18:47 b -rw-r--r--. 1 root root 12 Jul 17 18:40 bc -rw-r--r--. 1 root root 41 Jul 17 18:46 bf dr-xr-xr-x. 5 root root 4096 Jun 22 23:21 boot -rw-r--r--. 1 root root 128 Jul 19 19:06 continue -rw-r--r--. 1 root root 47 Jun 23 07:11 cs1.log -rw-r--r--. 1 root root 19 Jun 23 07:10 cs.log -rw-r--r--. 1 root root 0 Jul 23 18:47 d -rw-r--r--. 1 root root 8 Jun 28 21:49 d1 -rw-r--r--. 1 root root 8 Jun 28 21:49 d2 -rw-r--r--. 1 root root 95 Jul 18 18:25 date -rw-r--r--. 1 root root 0 Jul 19 18:48 empty -rw-r--r--. 1 root root 5 Jun 28 20:49 file1 -rw-r--r--. 1 root root 6 Jun 28 20:50 file2 -rw-r--r--. 1 root root 63 Jul 19 20:41 for -rw-r--r--. 1 root root 4287 Jun 22 23:15 grub -rw-r--r--. 1 root root 4287 Jun 22 23:18 grub2.cfg -rw-r--r--. 1 root root 0 Jun 23 03:52 hello.doc -rw-r--r--. 1 root root 209 Jul 19 21:34 hk -rw-r--r--. 1 root root 15 Jun 29 03:11 httpd.conf -rw-r--r--. 1 root root 282 Jul 17 18:50 kk -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 
基本權限的設置方法

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

文字設定法設置權限

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

部分 選項 含義
操作對象 u 表示用戶所有者,即文件或目錄的所有者
g 表示組群的所有者,即與文件的用戶所有者有相同組群GID的所有用戶  
o 表示其他用戶  
a 表示所有用戶,它是系統默認值  
操作符號 + 添加某個權限
- 取消某個權限  
= 賦予給定權限並取消原先權限(如果有的話)  
權限 r 讀取權限
w 寫入權限  
x 可執行權限  

例子:取消/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 
數字設定法設置權限
  • 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] [文件|目錄]

選項 含義
n1 用戶所有者的權限,n1代表數字
n2 組群所有者的權限,n2代表數字
n3 其他用戶的權限,n3代表數字

例如:設置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 
設置文件和目錄特殊權限

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

  • 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 
特定權限的設置方法
  • 文字設置法設置特殊權限
  • 數字設定法設置特殊權限

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

  • 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 

例子:設置文件ah具有SUID、SGID和Sticky權限。

[root@localhost ~]# chmod 7000 ah [root@localhost ~]# ls -l ah ---S--S--T. 1 root root 0 Jul 26 08:27 ah 
更改文件和目錄所有者

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

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

選項 含義
-R 將下級子目錄下的所有文件和目錄的所有權一起更改
-h 會影響符號鏈接本身,而非符號鏈接所指示的目的地
-v 為處理的所有文件顯示診斷信息
-p 不遍歷任何符號鏈接(默認)
-L 遍歷每一個遇到的通到目錄的符號鏈接
-H 如何命令行參數是一個通到目錄的符號鏈接,則遍歷符號鏈接
[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 

摘自:《Linux實用教程》人民郵電出版社出版發行 於岳編著


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM