2021-05-12 14:32:11
Linux檔案的屬性以及許可權說明
1. Linux檔案的屬性
關於Linux檔案的屬性的說明和設定請參考鳥哥Linux私房菜:Linux 的檔案許可權與目錄設定
鳥哥的Linux私房菜-基礎學習篇(第四版)高清完整書籤PDF版 下載見 http://www.linuxidc.com/Linux/2016-02/128220.htm
2. 目錄和檔案的許可權意義
在Linux系統中,每個檔案都有三種身份的許可權設定,而每個身份都有三種許可權(rwx)。這三種許可權對於普通的檔案很好理解,如下表所示,
表格 1 普通檔案的rwx許可權位意義
許可權 |
說明 |
r |
檔案內容可讀 |
w |
檔案內容可修改 |
x |
檔案可執行 |
在Window系統中,檔案是否可執行是通過副檔名來進行識別,例如.exe或.bat等。而在Linux系統下,副檔名只是為了給使用者直觀說明檔案內容的型別而已,檔案是否可執行則是通過是否設定了x許可權位來決定的(當然,你如果非要給一個不能執行的普通文字檔案設定成可執行,那我也沒辦法,事實上它也執行不了)。
對於目錄的rwx許可權位則需要特殊進行說明了。
目錄主要的內容在記錄檔名列表,檔名與目錄有強烈的關連啦! 所以如果是針對目錄時,那個 r, w, x 對目錄是什麼意義呢?
- r (read contents in directory):
表示具有讀取目錄結構列表的許可權,所以當你具有讀取(r)一個目錄的許可權時,表示你可以查詢該目錄下的檔名資料。 所以你就可以利用 ls 這個指令將該目錄的內容列表顯示出來!- w (modify contents of directory):
這個可寫入的許可權對目錄來說,是很了不起的! 因為他表示你具有異動該目錄結構列表的許可權,也就是底下這些許可權:
總之,目錄的w許可權就與該目錄底下的檔名異動有關就對了啦!
- 建立新的檔案與目錄;
- 刪除已經存在的檔案與目錄(不論該檔案的許可權為何!)
- 將已存在的檔案或目錄進行更名;
- 搬移該目錄內的檔案、目錄位置。
- x (access directory):
咦!目錄的執行許可權有啥用途啊?目錄只是記錄檔名而已,總不能拿來執行吧?沒錯!目錄不可以被執行,目錄的x代表的是使用者能否進入該目錄成為工作目錄的用途! 所謂的工作目錄(work directory)就是你目前所在的目錄啦!舉例來說,當你登入Linux時, 你所在的家目錄就是你當下的工作目錄。而變換目錄的指令是『cd』(change directory)囉!
關於目錄的r許可權和x許可權的驗證測試:
下面我們通過對subdir目錄進行操作來進行驗證測試。目錄subdir下具有兩個檔案file1和file2,
linuxidc@linux$ ls -l subdir/ total 0 -rw-r--r-- 1 linuxidc linuxidc 0 Dec 12 22:33 file1 -rw-r--r-- 1 linuxidc linuxidc 0 Dec 12 22:33 file2
我們將subdir的所有者和所屬群組都修改為root,而使用者linuxidc不在群組root中,並將subdir的其他人許可權設定成空,
linuxidc@linux$ sudo chown -R root:root subdir [sudo] password for linuxidc: linuxidc@linux$ sudo chmod o-rx subdir linuxidc@linux$ ls -l total 3 drwxr-x--- 2 root root 4096 Dec 12 22:33 subdir
此時使用者linuxidc要進入該目錄或者檢視該目錄下的檔案列表均沒有許可權,
linuxidc@linux$ cd subdir/ bash: cd: subdir/: Permission denied linuxidc@linux$ ls -l subdir/ ls: cannot open directory subdir/: Permission denied
我們將subdir的其他人許可權新增r許可權後,
linuxidc@linux$ sudo chmod -R o+r subdir linuxidc@linux$ ls -l total 4 drwxr-xr-- 2 root root 4096 Dec 12 22:33 subdir linuxidc@linux$ ls -l subdir ls: cannot access subdir/file1: Permission denied ls: cannot access subdir/file2: Permission denied total 0 -????????? ? ? ? ? ? file1 -????????? ? ? ? ? ? file2 linuxidc@linux$ cd subdir bash: cd: subdir: Permission denied
有上面的執行結果,我們可以看到使用者linuxidc對目錄subdir具有r許可權,其可以通過ls命令列出subdir目錄下的檔案列表。但是linuxidc沒有許可權獲取該目錄下的檔案的屬性,也沒有許可權進入該目錄(因為使用者linuxidc沒具備對目錄subdir的x許可權)。現在我們給linuxidc賦予x許可權,
linuxidc@linux$ sudo chmod o+x subdir linuxidc@linux$ ls -l total 4 drwxr-xr-x 2 root root 4096 Dec 12 22:33 subdir linuxidc@linux$ ls -l subdir total 0 -rw-r--r-- 1 root root 0 Dec 12 22:33 file1 -rw-r--r-- 1 root root 0 Dec 12 22:33 file2 linuxidc@linux$ cd subdir linuxidc@subdir$
由上面的結果可見,linuxidc對subdir具有x許可權之後,可以檢視該目錄下的檔案屬性,也可以進入該目錄。如果你在某目錄下不具有x的許可權, 那麼你就無法切換到該目錄下,也就無法執行該目錄下的任何指令,即使你具有該目錄的r的許可權。
關於目錄的w許可權的驗證測試:
下面我們還是通過剛剛的subdir目錄進行驗證測試。首先使用者linuxidc對目錄subdir具有rx許可權,而且對subdir目錄下的檔案沒有任何許可權,如下所示,
linuxidc@linux$ ls -l total 4 drwxr-xr-x 2 root root 4096 Dec 12 22:33 subdir linuxidc@linux$ cd subdir/ linuxidc@subdir$ ls -l total 4 drw-r----- 2 root root 4096 Dec 12 23:18 dir1 -rw-r----- 1 root root 0 Dec 12 22:33 file1
此時使用者linuxidc可以進入subdir目錄,能夠檢視該目錄下的檔案列表。但無法檢視該目錄下的檔案的內容,也無法增刪檔案或目錄,
linuxidc@subdir$ cat file1 cat: file1: Permission denied linuxidc@subdir$ touch file3 touch: cannot touch ‘file3’: Permission denied linuxidc@subdir$ rm file1 rm: remove write-protected regular empty file ‘file1’? y rm: cannot remove ‘file1’: Permission denied linuxidc@subdir$ rmdir dir1 rmdir: failed to remove ‘dir1’: Permission denied linuxidc@subdir$ mkdir dir2 mkdir: cannot create directory ‘dir2’: Permission denied
如果此時賦予使用者linuxidc對目錄subdir的w許可權,則linuxidc便具有了改動目錄subdir的目錄結構許可權。於是便可以增刪檔案或目錄(不管使用者linuxidc對這些目錄具有什麼許可權)。
linuxidc@linux$ sudo chmod o+w subdir linuxidc@linux$ ls -l total 4 drwxr-xrwx 3 root root 4096 Dec 12 23:18 subdir linuxidc@linux$ cd subdir linuxidc@subdir$ ls -l total 4 drw-r----- 2 root root 4096 Dec 12 23:18 dir1 -rw-r----- 1 root root 0 Dec 12 22:33 file1 linuxidc@subdir$ rm file1 rm: remove write-protected regular empty file ‘file1’? y linuxidc@subdir$ touch file2 linuxidc@subdir$ rmdir dir1 linuxidc@subdir$ mkdir dir2 linuxidc@subdir$ ls -l total 4 drwxr-xr-x 2 linuxidc linuxidc 4096 Dec 12 23:24 dir2 -rw-r--r-- 1 linuxidc linuxidc 0 Dec 12 23:24 file2
由此可見目錄的w許可權如此之重要。切莫輕易給其他人開啟目錄的w許可權。
(done)
本文永久更新連結地址:http://www.linuxidc.com/Linux/2016-10/136465.htm
相關文章