Linux檔案許可權和訪問模式

2021-08-27 22:04:50 字數 4233 閱讀 3623

為了更加安全的儲存檔案,linux為不同的檔案賦予了不同的許可權,每個檔案都擁有下面三種

[b]][size=x-large]許可權[/size][/b]

所有者許可權 u :檔案所有者能夠進行的操作

組許可權 g :檔案所屬使用者組能夠進行的操作

外部許可權 o :(其他許可權):其他使用者可以進行的操作。

[b][size=x-large]檢視檔案許可權[/size][/b]

$ls -l /home/amrood

-rwxr-xr-- 1 amrood users 1024 nov 2 00:10 myfile

drwxr-xr--- 1 amrood users 1024 nov 2 00:10 mydir

第一列就包含了檔案或目錄的許可權。

第一列的字元可以分為三組,每一組有三個,每個字元都代表不同的許可權,分別為讀取(r)、寫入(w)和執行(x):

第一組字元(2-4)表示檔案所有者的許可權,-rwxr-xr-- 表示所有者擁有讀取(r)、寫入(w)和執行(x)的許可權。

第二組字元(5-7)表示檔案所屬使用者組的許可權,-rwxr-xr-- 表示該組擁有讀取(r)和執行(x)的許可權,但沒有寫入許可權。

第三組字元(8-10)表示所有其他使用者的許可權,rwxr-xr-- 表示其他使用者只能讀取(r)檔案。

[b][size=x-large]檔案訪問模式[/size][/b]

檔案許可權是linux系統的第一道安全防線,基本的許可權有讀取(r)、寫入(w)和執行(x):

讀取r:使用者能夠讀取檔案資訊,檢視檔案內容。

執行x:使用者可以將檔案作為程式來執行。

[b][size=x-large]目錄訪問模式[/size][/b]

目錄的訪問模式和檔案類似,但是稍有不同:

讀取r:使用者可以檢視目錄中的檔案

寫入w:使用者可以在當前目錄中刪除檔案或建立檔案

[b][size=x-large]改變許可權[/size][/b]

可以使用 chmod (change mode) 命令來改變檔案或目錄的訪問許可權,許可權可以使用符號或數字來表示。

[b][size=x-large]使用符號表示許可權[/size][/b]

對於初學者來說最簡單的就是使用符號來改變檔案或目錄的許可權,你可以增加(+)和刪除(-)許可權,也可以指定特定許可權。

符號 說明

+ 為檔案或目錄增加許可權

- 刪除檔案或目錄的許可權

= 設定指定的許可權

下面的例子將會修改 testfile 檔案的許可權:

$ls -l testfile

-rwxrwxr-- 1 amrood users 1024 nov 2 00:10 testfile

$chmod o+wx testfile

$ls -l testfile

-rwxrwxrwx 1 amrood users 1024 nov 2 00:10 testfile

$chmod u-x testfile

$ls -l testfile

-rw-rwxrwx 1 amrood users 1024 nov 2 00:10 testfile

$chmod g=rx testfile

$ls -l testfile

-rw-r-xrwx 1 amrood users 1024 nov 2 00:10 testfile

也可以同時使用多個符號:

$chmod o+wx,u-x,g=rx testfile

$ls -l testfile

-rw-r-xrwx 1 amrood users 1024 nov 2 00:10 testfile

[b][size=x-large]使用數字表示許可權[/size][/b]

除了符號,也可以使用八進位制數字來指定具體許可權,如下表所示:

數字 說明 許可權

0 沒有任何許可權 ---

1 執行許可權 --x

2 寫入許可權 -w-

3 執行許可權和寫入許可權:1 (執行) + 2 (寫入) = 3 -wx

4 讀取許可權 r--

5 讀取和執行許可權:4 (讀取) + 1 (執行) = 5 r-x

6 讀取和寫入許可權:4 (讀取) + 2 (寫入) = 6 rw-

7 所有許可權: 4 (讀取) + 2 (寫入) + 1 (執行) = 7 rwx

下面的例子,首先使用 ls -1 命令檢視 testfile 檔案的許可權,然後使用 chmod 命令更改許可權:

$ls -l testfile

-rwxrwxr-- 1 amrood users 1024 nov 2 00:10 testfile

$ chmod 755 testfile

$ls -l testfile

-rwxr-xr-x 1 amrood users 1024 nov 2 00:10 testfile

$chmod 743 testfile

$ls -l testfile

-rwxr---wx 1 amrood users 1024 nov 2 00:10 testfile

$chmod 043 testfile

$ls -l testfile

----r---wx 1 amrood users 1024 nov 2 00:10 testfile

[b][size=x-large]更改所有者和使用者組[/size][/b]

在linux中,每新增乙個新使用者,就會為它分配乙個使用者id和群組id,上面提到的檔案許可權也是基於使用者和群組來分配的。

有兩個命令可以改變檔案的所有者或群組:

chown:chown 命令是"change owner"的縮寫,用來改變檔案的所有者。

chgrp:chgrp 命令是"change group"的縮寫,用來改變檔案所在的群組。

chown 命令用來更改檔案所有者,其語法如下:

$ chown user filelist

user 可以是使用者名稱或使用者id,例如

$ chown amrood testfile

$將 testfile 檔案的所有者改為 amrood。

注意:超級使用者 root 可以不受限制的更改檔案的所有者和使用者組,但是普通使用者只能更改所有者是自己的檔案或目錄。

chgrp 命令用來改變檔案所屬群組,其語法為:

$ chgrp group filelist

group可以是群組名或群組id,例如

$ chgrp special testfile

$將檔案 testfile 的群組改為 special。

[b][size=x-large]suid和sgid位[/size][/b]

在linux中,一些程式需要特殊許可權才能完成使用者指定的操作。

例如,使用者的密碼儲存在 /etc/shadow 檔案中,出於安全考慮,一般使用者沒有讀取和寫入的許可權。但是當我們使用 passwd 命令來更改密碼時,需要對 /etc/shadow 檔案有寫入許可權。這就意味著,passwd 程式必須要給我們一些特殊許可權,才可以向 /etc/shadow 檔案寫入內容。

linux 通過給程式設定suid(set user id)和sgid(set group id)位來賦予普通使用者特殊許可權。當我們執行乙個帶有suid位的程式時,就會繼承該程式所有者的許可權;如果程式不帶suid位,則會根據程式使用者的許可權來執行。

sgid也是一樣。一般情況下程式會根據你的組許可權來執行,但是給程式設定sgid後,就會根據程式所在組的組許可權執行。

如果程式設定了suid位,就會在表示檔案所有者可執行許可權的位置上出現's'字母;同樣,如果設定了sgid,就會在表示檔案群組可執行許可權的位置上出現's'字母。如下所示:

$ ls -l /usr/bin/passwd

-r-sr-xr-x 1 root bin 19031 feb 7 13:47 /usr/bin/passwd*

$上面第一列第四個字元不是'x'或'-',而是's',說明 /usr/bin/passwd 檔案設定了suid位,這時普通使用者會以root使用者的許可權來執行passwd程式。

注意:小寫字母's'說明檔案所有者有執行許可權(x),大寫字母's'說明程式所有者沒有執行許可權(x)。

如果在表示群組許可權的位置上出現sgid位,那麼也僅有三類使用者可以刪除該目錄下的檔案:目錄所有者、檔案所有者、超級使用者 root。

為乙個目錄設定suid和sgid位可以使用下面的命令:

$ chmod ug+s dirname

$ ls -l

drwsr-sr-x 2 root root 4096 jun 19 06:45 dirname

$

Linux檔案許可權和訪問模式

為了更加安全的儲存檔案,linux為不同的檔案賦予了不同的許可權,每個檔案都擁有下面三種許可權 ls l home amrood rwxr xr 1 amrood users 1024 nov 2 00 10 myfile drwxr xr 1 amrood users 1024 nov 2 00 ...

Linux檔案的訪問許可權和檔案模式

檔案的潛在使用者分為3類 檔案操作的系統呼叫 程序只能訪問 開啟的 檔案,為了開啟乙個檔案,程序系統呼叫 fd open path,flag,mode flag 指定檔案開啟的方式 例如,讀 寫 讀 寫 追加 它也指定是否應當建立乙個不存在的檔案。mode 指定新建立檔案的訪問許可權。這個系統呼叫建...

Linux的檔案訪問許可權和0644許可權

其實就是分析linux的檔案訪問許可權 以下為個人理解 linux系統中採用四位八進位制數組成許可權,比如0644 而不是網上流傳的十進位制 對於每個新建立的檔案或目錄,系統都會自動賦予乙個預設的許可權。可以使用umask命令設定檔案或目錄的預設許可權。系統預設的許可權掩碼是0022 通常新建檔案的...