在上面的章節中,我們知道了檔案的許可權可以用三個八進位制數字表示。其實檔案的許可權應該用四個八進位制來表示,不過用 ls -l 命令時,只顯示三個罷了。那個沒有顯示的八進位制數字其實是第乙個,它用來設定一些特殊許可權。這個八進位制數字的三個位是:
suid sgid sticky-bit
它們的含義是:
suid
當設定了
suid
位的檔案被執行時,該檔案將以所有者的身份執行,也就是說無論誰來執行這個檔案,他都有檔案所有者的特權。如果所有者是
root
的話,那麼執行人就有超級使用者的特權了。這時該位將變成乙個安全漏洞,因此不要輕易設定該位。
sgid
與上面的內容類似。檔案執行時,執行者將具有所屬組的特權。
sticky-bit
sticky
位要求作業系統既是在可執行程式退出後,仍要在記憶體中保留該程式的映象。這樣做是為了節省大型程式的啟動時間。但是會占用系統資源。因此設定該位,不如把程式寫好。
set uid
;set gid;sticky bit區別
每乙個檔案有所有者及組編號,set uid ;set gid可以改變使用者對檔案具有的許可權:寫和執行.
setuid: 在執行時具有檔案所有者的許可權.
setgid: 設定目錄. 乙個目錄被標上setgid位,此目錄下建立的檔案繼承該目錄的屬性.
sticky bit: 該位可以理解為防刪除位. 設定sticky bit位後,就算使用者對目錄具有寫許可權,但也只能新增檔案而不能刪除檔案。
如何設定:
操作這些標誌與操作檔案許可權的命令是一樣的, 都是 chmod. 有兩種方法來操作,
1) chmod u+s temp -- 為temp檔案加上setuid標誌. (setuid 只對檔案有效,u=使用者)
chmod g+s tempdir -- 為tempdir目錄加上setgid標誌 (setgid 只對目錄有效,g=組名)
chmod o+t temp -- 為temp檔案加上sticky標誌 (sticky只對檔案有效)
2) 採用八進位制方式. 這一組八進位制數字三位的意義如下,
abc
a - setuid位, 如果該位為1, 則表示設定setuid
b - setgid位, 如果該位為1, 則表示設定setgid
c - sticky位, 如果該位為1, 則表示設定sticky
設定後, 可以用 ls -l 來檢視. 如果本來在該位上有x, 則這些特殊標誌顯示為小寫字母 (s, s, t). 否則, 顯示為大寫字母 (s, s, t)如:
rwsrw-r--
表示有setuid標誌 (rwxrw-r--:rwsrw-r--)
rwxrwsrw- 表示有setgid標誌 (rwxrwxrw-:rwxrwsrw-)
rwxrw-rwt 表示有sticky標誌 (rwxrw-rwx:rwxrw-rwt)
理解檔案許可權
所謂的檔案許可權,是指對檔案的訪問許可權,包括對檔案的讀、寫、刪除、執行。linux 是乙個多使用者作業系統,它允許多個使用者同時登入和工作。因此 linux 將乙個檔案或目錄與乙個使用者和組聯絡起來。請看下面的例子:
drwxr-xr-x 5 root root 1024 sep 13 03:27 desktop
與檔案許可權相關聯的是第
一、第三、第四個域。第三個域是檔案的所有者,第四個域是檔案的所屬組,而第乙個域則限制了檔案的訪問許可權。在這個例子中,檔案的所有者是 root,所屬的組是 root,檔案的訪問許可權是 drwxr-xr-x。對於檔案和目錄講,每個檔案和目錄都有一組許可權標誌和它們結合在一起,在上例中就是第乙個域中的內容。下面來仔細分析這個域中各個符號的意義:
該域由 10 個字元組成,可以把它們分為四組,具體含義分別是:
d rwx r-x r-x
檔案型別 所有者許可權標誌 組許可權標誌 其他使用者許可權標誌
其中:
檔案型別:第乙個字元。由於 linux 系統對與裝置、目錄、檔案都當作是檔案來處理,因此該字元表明此檔案的型別,字元與對應的意義如下表:
檔案標誌
檔案型別 例子
-普通檔案
資料檔案、
ascii
純文字檔案、程式 d
目錄/bin b
塊裝置/dev/hda
(第乙個
ide
硬碟) c
字元裝置
/dev/ttys1
(與dos
種的串列埠
2 等同) s
套接字/dev/log p
命名管道
/dev/initctl
(與「|
」等同) l
符號鏈結
/dev/modem->/dev/ttys1
許可權標誌:
對每個檔案或目錄都有 4 類不同的使用者。每類使用者各有一組讀、寫和執行(搜尋)檔案的訪問許可權,這 4 類使用者是:
root
:系統特權使用者類,既 uid = 0 的使用者。
owner
:擁有檔案的使用者。
group
:共享檔案的組訪問許可權的使用者類的使用者組名稱。
world
:不屬於上面 3 類的所有其他使用者。
作為 root,他們自動擁有了所有檔案和目錄的全面的讀、寫和搜尋的許可權,所以沒有必要明確指定他們的許可權。其他三類使用者則可以在耽擱檔案或者目錄的基礎上別授權或撤消許可權。因此對另外三類使用者,一共 9 個許可權位與之對應,分為 3 組,每組 3 個,分別用 r、w、x 來表示,分別對應 owner、group、world。
許可權位對於檔案和目錄的含義有些許不同。每組 3 個字元對應的含義從左至右的順序,對於檔案來說是:讀檔案的內容(r)、寫資料到檔案(w)、做為命令執行該檔案(x)。對於目錄來說是:讀包含在目錄中的檔名稱(r)、寫資訊到目錄中去(增加和刪除索引點的連線)、搜尋目錄(能用該目錄名稱作為路徑名去訪問它所包含的檔案或子目錄)。具體來說就是:
1. 有唯讀許可權的使用者不能用 cd 進入該目錄;還必須有執行許可權才能進入。
2. 有執行許可權的使用者只有在知道檔名並擁有該檔案的讀許可權的情況下才可以訪問目錄下的檔案。
3. 必須有讀和執行許可權才可以使用 ls 列出目錄清單,或使用 cd 進入目錄。
4. 如使用者有目錄的寫許可權,則可以建立、刪除或修改目錄下的任何檔案或子目錄,既是該檔案或子目錄屬於其他使用者。
修改檔案許可權
首先講修改檔案的所有權,使用 chown 和 chgrp 命令:
chown new_user file or directory
:修改檔案或目錄的所有者。
chgrp new_group file or directory
:修改檔案或目錄的所屬組。
這裡需要注意的是:普通使用者不能將檔案或目錄的所有權交與他人,只有 root 有這一許可權。但是普通使用者有權改變檔案或目錄的所屬組。
由於每類使用者的許可權都是由 rwx 三位組成,因此可以用三個八進位制數字表示檔案的訪問權。乙個八進位制數字可以用三個二進位制數字表示,那麼與其對應,權值為 4 的位對應 r,權值為 2 的位對應 w,權值為 1 的位對應 x。對於一類使用者,將這三位與其對應的權值相乘求和,就可以得出對該類使用者的訪問許可權。
改變檔案訪問許可權的命令是 chmod,格式是:
chmod permission file_name
比如 chmod 764 a.txt,它表示對於檔案的所有者,具有對該檔案讀、寫、執行的許可權。對於檔案所屬組的使用者,擁有讀、寫的許可權。對於其他使用者,只有讀許可權。
這裡需要注意的是:檔案的建立者是唯一可以修改該檔案訪問許可權的普通使用者,另外乙個可以修改檔案訪問許可權的使用者是 root。
還有一種表示方法,就是用字串來設定檔案訪問許可權。其中讀用 r 表示,寫用 w 表示,執行用 x 表示;所有者用 u 表示,組使用者用 g 表示,其他使用者用 o 表示,所有使用者用 a 表示
Linux檔案許可權
linux使用者分為 擁有者 組群 group 其他 other linux系統中,預設的情況下,系統中所有的帳號與一般身份使用者,以及root的相關資訊,都是記錄在 etc passwd檔案中。每個人的密碼則是記錄在 etc shadow檔案下。此外,所有的組群名稱記錄在 etc group內!圖...
Linux檔案許可權
linux使用者分為 擁有者 組群 group 其他使用者 other linux系統中,預設的情況下,系統中所有的帳號與一般身份使用者,以及root的相關資訊,都是記錄在 etc passwd檔案中。每個人的密碼則是記錄在 etc shadow檔案下。此外,所有的組群名稱記錄在 etc group...
linux檔案許可權
檔案的許可權由三個部分組成 u user g group o other 每個部分的許可權又分別 r 4讀 w 寫2 x 執行1 下面以 var www資料夾設定許可權,了解如何設定檔案許可權 chmod a x var www 所有人都可進入 chmod a x var www 所有人都不可進入 ...