Linux 的文件權限
Linux一般將文件可存取訪問的身份分為3個類別:owner、group、others,且3種身份各有read、write、execute等權限。
一、用戶和用戶組
1、文件所有者
由于Linux是多用戶、多任務的操作系統,因此可能常常有多人同時在某臺主機上工作,但每個人均可在主機上設置文件的權限,讓其成為個人的“私密文件”,即個人所有者。因為設置了適當的文件權限,除本人(文件所有者)之外的用戶無法查看文件內容。
例如某個MM給你發了一封Email情書,你將情書轉為文件之后存檔在自己的主文件夾中。為了不讓別人看到情書的內容,你就能利用所有者的身份去設置文件的適當權限,這樣,即使你的情敵想偷看你的情書內容也是做不到的。
2、用戶組
用戶組最有用的功能就體現在多個團隊在同一臺主機上開發資源的時候。例如主機上有A、B兩個團體,A中有a1,a2,a3三個成員,B中有b1,b2兩個 成員,這兩個團體要共同完成一份報告F。由于設置了適當的權限,A、B團體中的成員都能互相修改對方的數據,但是團體C的成員則不能修改F的內容,甚至連 查看的權限都沒有。同時,團體的成員也能設置自己的私密文件,讓團隊的其它成員也讀取不了文件數據。在Linux中,每個賬戶支持多個用戶組。如用戶 ab1即可屬于A用戶組,也能屬于B用戶組。
3、其他人
這個是個相對概念。打個比方,大明、二明、小明一家三兄弟住在一間房,房產證上的登記者是大明,那么,大明一家就是一個用戶組,這個組有大明、二明、小明三個成員;另外有個人交張三,和他們三沒有關系,那么這個張三就是其他人了。
同時,大明、二明、小明有各自的房間,三者雖然能自由進出各自的房間,但是小明不能讓大明看到自己的情書、日記等,這就是文件所有者(用戶)的意義。
4、超級用戶
在Linux中,還有一個神一樣存在的用戶,就是root。之所以陳偉超級用戶,因為在所有用戶中它擁有最大的權限 ,也管理著普通用戶。
5、相關文件
在Linux系統中,默認的系統賬戶和普通賬戶信息記錄在/etc/passwd文件中,個人密碼在/etc/shadow文件下,用戶組名稱記錄在/etc/group,所以,這三個文件是不能隨便刪的。
二、Linux文件權限的概念
要設置權限,就需要知道文件的一些基本屬性和權限的分配規則。在Linux中,ls命令常用來查看文件的屬性,ls是list的縮寫,用于顯示文件的文件名和相關屬性。
[root@www ~]# ls -al total 45
drwxr-x--- 4 root root 4096 Sep 8 14:06
-rw-r--r-- 1 root root 43043 Sep 4 18:34 test.txt
權限分配中,均是rwx的三個參數組合,且位置順序不會變化。沒有對應權限就用 – 代替。
三、改變文件屬性和權限
Linux中有幾個常用于用戶組、所有者和各種身份的權限的修改的命令:
- chgrp:改變文件所屬用戶組
- chown:改變文件所有者
- chmod:改變文件權限
1、改變所屬用戶組
直接用chgrp就行,它是change group是縮寫。不過,要被改變的組名必須在/etc/group文件內存在才行,否則出錯。
[root@www ~]# chgrp [-R] 文件名/目錄名 —R:進行遞歸,可修改子目錄下的文件
2、改變文件所有者
change owner的縮寫是chown,用于改變所有者。不過,用戶名必須存在于/etc/passwd文件內。
[root@www ~]# chown [-R] 賬號名稱 文件名/目錄名 [root@www ~]# chown [-R] 賬號名稱:組名 文件名/目錄名 —R:進行遞歸,可修改子目錄下的文件
3、改變權限
文件權限的改變一般是用chmod命令,權限的設置方法有兩種:
3.1 數字類型改變文件權限
Linux的基本權限有9個,即owner、group、others三種身份各有自己的r/w/x權限,三個為一組。各權限對應的數字是:r—>4,w—>2,x—>1.
每種身份(owner、group、others)的三個權限(r/w/x)分數是累加的,如-rw-r–r–轉換數字是:
owner=rw-=4+2+0=6 group=r–=4+0+0=4 others=r–=4+0+0=4,所以該文件的權限數字是644
[root@www ~]# chmod [-R] xyz 文件名/目錄名 xyz:數字類型的權限屬性,為rwx屬性數值的相加 —R:進行遞歸,可修改子目錄下的文件 ##修改test.txt的權限為777 [root@www ~]# chmod 777 test.txt
3.2 符號類型改變文件權限
這種方式就是用u,g,o來代表三種身份的權限,此外a代表all,即全部身份(owner、group、others)
##修改test.txt的權限為rwxr-xr-x [root@www ~]# chmod u=rwx,go=rx test.txt ##去掉test.txt所有身份的x權限 [root@www ~]# chmod a-x test.txt ##再添加test.txt所有身份的x權限 [root@www ~]# chmod a+x test.txt
四、目錄和文件的權限意義
1、權限對文件的重要性
- r(read):讀取文件內容,如讀取文本的文字內容等
- w(write):可以編輯、新增、修改文件的內容(但不含刪除該文件)
- x(execute):具有被系統執行的權限。注意:在Linux中,文件是否能否被執行是由文件是否具有x權限決定的,與文件名的擴展名無關。
2、權限對目錄的重要性
- r(read contents in directory):具有讀取目錄結構列表的權限,與用戶能否進入該目錄無關。
- w(modify contents of directory):具有更改該目錄結構列表的權限,包括新建文件或目錄、刪除文件和目錄(不論該文件權限如何)、對文件或目錄進行重命名、轉移文件或目錄位置。
- x(execute directory):具有進入該目錄的權限,使該目錄成為工作目錄,即目前所在的目錄。如果沒有x權限,即使有r權限,也無法切換到該目錄執行該目錄下的命令。