unix下檔案的安全與許可權
- d 目錄。
- l 符號連結(指向另一個檔案)。
- s 套接字檔案。
- b 塊裝置檔案。
- c 字元裝置檔案。
- p 命名管道檔案。
- - 普通檔案,或者更準確地說,不屬於以上幾種型別的檔案。
檔案的許可權位中中每一組字元中含有三個許可權位:
- r 讀許可權
- w 寫/更改許可權
- x 執行該指令碼或程式的許可權
如:
r-- --- --- 文檔案屬主可讀,但不能寫或執行 r-- r-- --- 文檔案屬主和屬組使用者(一般來說,是檔案屬主所在的預設組)可讀 r-- r-- r- - 文任何使用者都可讀,但不能寫或執行 rwx r-- r- - 文檔案屬主可讀、寫、執行,屬組使用者和其他使用者只可讀 rwx r-x --- 文檔案屬主可讀、寫、執行,屬組使用者可讀、執 rwx r-x r- x 文檔案屬主可讀、寫、執行,屬組使用者和其他使用者可讀、執行 rw- rw- --- 文檔案屬主和屬組使用者可讀、寫 rw- rw- r- - 文檔案屬主和屬組使用者可讀、寫,其他使用者可讀 rw- rw- --- 文檔案屬主和屬組使用者及其他使用者讀可以讀、寫,慎用這種許可權 設定,因為任何使用者都可以寫入該檔案
使用chmod來改變許可權位
這一命令有符號模式和絕對模式。
符號模式
chmod命令的一般格式為:
chmod [who] operator [permission] filename
w h o的含義是:
u 檔案屬主許可權。
g 屬組使用者許可權。
o 其他使用者許可權。
a 所有使用者(檔案屬主、屬組使用者及其他使用者)。
o p e r a t o r的含義:
+ 增加許可權。
- 取消許可權。
= 設定許可權。
p e r m i s s i o n的含義:
- r 讀許可權。
- w 寫許可權。
- x 執行許可權。
- s 檔案屬主和組set-ID。
- t 粘性位*。
- l 給檔案加鎖,使其他使用者無法訪問。
- u,g,o 針對檔案屬主、屬組使用者及其他使用者的操作。
- *在列檔案或目錄時,有時會遇到“ t”位。“t”代表了粘性位。如果在一個目錄上出現“t”位,這就意味著該目錄中的檔案只有其屬主才可以刪除,即使某個屬組使用者具有和屬主同等的許可權。不過有的系統在這一規則上並不十分嚴格。
- 如果在檔案列表時看到“ t”,那麼這就意味著該指令碼或程式在執行時會被放在交換區(虛存)。
1,t 許可權是粘著位,例:TMP目錄下,任何人都有讀寫執行許可權,但是不是任何人對裡邊的可寫許可權的檔案就可以刪除呢,當然不是了,這個就是粘著位的做用,只有所有者才有權刪除自已的檔案,當然,ROOT除外
2,關於檔案安全的另一種許可權,
i許可權 也就是不可修改許可權 例:chattr u+i aaa 則aaa檔案就不可修改,無論任何人,如果刪除就用u-i就好了
a許可權 也就是隻追加許可權, 對於日誌系統很好用,這個許可權讓目標檔案只能追加,不能刪除,而且不能通過編輯器追加。方法和i許可權一樣加
如果想要看某個檔案是不是有這個許可權,用lsattr filename就行了
- chmod a-x temp //rw- rw- rw- 收回所有使用者的執行許可權
- chmod og-w temp //rw- r-- r- - 收回屬組使用者和其他使用者的寫許可權
- chmod g+w temp //rw- rw- r- - 賦予屬組使用者寫許可權
- chmod u+x temp //rwx rw- r- - 賦予檔案屬主執行許可權
- chmod go+x temp //rwx rwx r- x 賦予屬組使用者和其他使用者執行許可權
chmod命令絕對模式的一般形式為:
chmod [mode] file
其中m o d e是一個八進位制數。
在絕對模式中,許可權部分有著不同的含義。每一個許可權位用一個八進位制數來代表,如
0 4 0 0 檔案屬主可讀
0 2 0 0 檔案屬主可寫
0 1 0 0 檔案屬主可執行
0 0 4 0 屬組使用者可讀
0 0 2 0 屬組使用者可寫
0 0 1 0 屬組使用者可執行
0 0 0 4 其他使用者可讀
0 0 0 2 其他使用者可寫
0 0 0 1 其他使用者可執行
在設定許可權的時候,只需按照上面查出與檔案屬主、屬組使用者和其他使用者所具有的許可權相對應的數字,並把它們加起來,就是相應的許可權表示。
可以看出,檔案屬主、屬組使用者和其他使用者分別所能夠具有的最大許可權值就是7。
再來看看前面舉的例子:
- -rwxr--r-- 1 root 0 10月 19 20:16 temp
相應的許可權是:
- rwx-:0400 + 0200 +0100 (檔案屬主可讀、寫、執行) = 0 7 0 0
- r--:0 0 4 0 (屬組使用者可讀) = 0 0 4 0
- r--:0 0 4 0 (屬組使用者可讀) = 0 0 4 0
- 0 7 4 4
有一個計算八進位制許可權表示的更好辦法,如下:
- 檔案屬主:r w x:4 + 2 + 1
- 屬組使用者:r w x:4 + 2 + 1
- 其他使用者:r w x:4 + 2 + 1
這上面這相,更容易地計算出相應的許可權值,只要分別針對檔案屬主、屬組使用者和其他使用者把相應許可權下面的數字加在一起就可以了。
temp檔案具有這樣的許可權:
- r w x r - - r - -
- 4+2+1 4 4
把相應許可權位所對應的值加在一起,就是7 4 4。
如:
- chmod 666 rw- rw- rw- 賦予所有使用者讀和寫的許可權
- chmod 644 rw- r-- r- - 賦予所有檔案屬主讀和寫的許可權,所有其他使用者讀許可權
- chmod 744 rwx r-- r- - 賦予檔案屬主讀、寫和執行的許可權,所有其他使用者讀的許可權
- chmod 664 rw- rw- r- - 賦予檔案屬主和屬組使用者讀和寫的許可權,其他使用者讀許可權
- chmod 700 rwx --- --- 賦予檔案屬主讀、寫和執行的許可權
- chmod 444 r-- r-- r- - 賦予所有使用者讀許可權
如果希望一次設定目錄下所有檔案的許可權,可以用:
- $chmod 664*
- $ls -l
- -rw-r--r-- 1 root 0 10月 19 20:16 test1
這將使檔案屬主和屬組使用者都具有讀和寫的許可權,其他使用者只具有讀許可權。
還可以通過使用- R選項連同子目錄下的檔案一起設定:
- chmod -R 664 /temp/*
這樣就可以一次將/ temp目錄下的所有檔案連同各個子目錄下的檔案的許可權全部設定為檔案屬主和屬組使用者可讀和寫,其他使用者只讀。使用- R選項一定要謹慎,只有在需要改變目錄樹下全部檔案許可權時才可以使用。
系統預設情況下建立檔案與目錄的許可權是:
#vi /etc/bashrc 可以看到一般使用者是002 root使用者是022
說明:一般使用者預設建立檔案許可權是666-002=664 建立目錄許可權是777-002=775
root預設建立檔案的許可權就是666-022=644 建立的目錄許可權就是777-022=755