歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux文件的屬性以及權限說明

Linux文件的屬性以及權限說明

日期:2017/2/28 13:47:44   编辑: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)

Copyright © Linux教程網 All Rights Reserved