Linux檔案許可權和訪問模式

2022-08-19 05:24:07 字數 3629 閱讀 2767

為了更加安全的儲存檔案,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:10 mydir

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

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

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

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

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

使用符號表示許可權

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

符號說明

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

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

=設定指定的許可權

下面的例子將會修改 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

使用數字表示許可權

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

數字說明許可權0

沒有任何許可權

---1

執行許可權

--x2

寫入許可權

-w-3

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

-wx4

讀取許可權

r--5

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

r-x6

讀取和寫入許可權: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

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

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

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

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

$ chown amrood testfile

$

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

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

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

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

$ chgrp special testfile

$

將檔案 testfile 的群組改為 special。

在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為不同的檔案賦予了不同的許可權,每個檔案都擁有下面三種 b size x large 許可權 size b 所有者許可權 u 檔案所有者能夠進行的操作 組許可權 g 檔案所屬使用者組能夠進行的操作 外部許可權 o 其他許可權 其他使用者可以進行的操作。b size ...

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

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

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

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