關於Linux文件的屬性的說明和設置請參考鳥哥Linux私房菜:Linux 的文件權限與目錄配置
鳥哥的Linux私房菜-基礎學習篇(第四版)高清完整書簽PDF版 下載見 http://www.linuxidc.com/Linux/2016-02/128220.htm
在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)