為了更加安全的儲存檔案,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在linux中,每新增乙個新使用者,就會為它分配乙個使用者id和群組id,上面提到的檔案許可權也是基於使用者和群組來分配的。-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
有兩個命令可以改變檔案的所有者或群組:
chown命令用來更改檔案所有者,其語法如下:
$ chown user filelistuser 可以是使用者名稱或使用者id,例如
$ chown amrood testfile將 testfile 檔案的所有者改為 amrood。$
注意:超級使用者 root 可以不受限制的更改檔案的所有者和使用者組,但是普通使用者只能更改所有者是自己的檔案或目錄。
chgrp命令用來改變檔案所屬群組,其語法為:
$ chgrp group filelistgroup可以是群組名或群組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上面第一列第四個字元不是'x'或'-',而是's',說明 /usr/bin/passwd 檔案設定了suid位,這時普通使用者會以root使用者的許可權來執行passwd程式。-r-sr-xr-x 1 root bin 19031 feb 7 13:47 /usr/bin/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 通常新建檔案的...