Linux通常將文件可存取訪問的身份分爲3個類別:owner、group、others,且3種身份各有read、write、execute等權限。html
因爲Linux是多用戶、多任務的操做系統,所以可能經常有多人同時在某臺主機上工做,但每一個人都可在主機上設置文件的權限,讓其成爲我的的「私密文件」,即我的全部者。由於設置了適當的文件權限,除本人(文件全部者)以外的用戶沒法查看文件內容。數組
例如某個MM給你發了一封Email情書,你將情書轉爲文件以後存檔在本身的主文件夾中。爲了避免讓別人看到情書的內容,你就能利用全部者的身份去設置文件的適當權限,這樣,即便你的情敵想偷看你的情書內容也是作不到的。spa
用戶組最有用的功能就體如今多個團隊在同一臺主機上開發資源的時候。例如主機上有A、B兩個團體,A中有a1,a2,a3三個成員,B中有b1,b2兩個成員,這兩個團體要共同完成一份報告F。因爲設置了適當的權限,A、B團體中的成員都能互相修改對方的數據,可是團體C的成員則不能修改F的內容,甚至連查看的權限都沒有。同時,團體的成員也能設置本身的私密文件,讓團隊的其它成員也讀取不了文件數據。在Linux中,每一個帳戶支持多個用戶組。如用戶ab1便可屬於A用戶組,也能屬於B用戶組。操作系統
這個是個相對概念。打個比方,大明、二明、小明一家三兄弟住在一間房,房產證上的登記者是大明,那麼,大明一家就是一個用戶組,這個組有大明、二明、小明三個成員;另外有我的交張三,和他們三沒有關係,那麼這個張三就是其餘人了。code
同時,大明、二明、小明有各自的房間,三者雖然能自由進出各自的房間,可是小明不能讓大明看到本身的情書、日記等,這就是文件全部者(用戶)的意義。htm
在Linux中,還有一個神同樣存在的用戶,就是root。之因此陳偉超級用戶,由於在全部用戶中它擁有最大的權限 ,也管理着普通用戶。遞歸
在Linux系統中,默認的系統帳戶和普通帳戶信息記錄在/etc/passwd文件中,我的密碼在/etc/shadow文件下,用戶組名稱記錄在/etc/group,因此,這三個文件是不能隨便刪的。圖片
要設置權限,就須要知道文件的一些基本屬性和權限的分配規則。在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
第一個字符[d]表明該文件是一個目錄,[-]表明該文件是一個普通文件,test.txt是文件名,[l]是鏈接文件,[b]是設備文件等。資源
如前文所說,Linux中存在用戶、用戶組和其餘人概念,各自有不一樣的權限,對於一個文件來講,其權限具體分配以下:
權限分配中,均是rwx的三個參數組合,且位置順序不會變化。沒有對應權限就用 – 代替。
Linux中有幾個經常使用於用戶組、全部者和各類身份的權限的修改的命令:
chgrp:改變文件所屬用戶組 chown:改變文件全部者 chmod:改變文件權限
直接用chgrp就行,它是change group是縮寫。不過,要被改變的組名必須在/etc/group文件內存在才行,不然出錯。
[root@www ~]# chgrp [-R] 文件名/目錄名 —R:進行遞歸,可修改子目錄下的文件
change owner的縮寫是chown,用於改變全部者。不過,用戶名必須存在於/etc/passwd文件內。
[root@www ~]# chown [-R] 帳號名稱 文件名/目錄名 [root@www ~]# chown [-R] 帳號名稱:組名 文件名/目錄名 —R:進行遞歸,可修改子目錄下的文件
文件權限的改變通常是用chmod命令,權限的設置方法有兩種:
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
這種方式就是用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
r(read):讀取文件內容,如讀取文本的文字內容等
w(write):能夠編輯、新增、修改文件的內容(但不含刪除該文件)
x(execute):具備被系統執行的權限。注意:在Linux中,文件是否可否被執行是由文件是否具備x權限決定的,與文件名的擴展名無關。
r(read contents in directory):具備讀取目錄結構列表的權限,與用戶可否進入該目錄無關。
w(modify contents of directory):具備更改該目錄結構列表的權限,包括新建文件或目錄、刪除文件和目錄(不論該文件權限如何)、對文件或目錄進行重命名、轉移文件或目錄位置。
x(execute directory):具備進入該目錄的權限,使該目錄成爲工做目錄,即目前所在的目錄。若是沒有x權限,即便有r權限,也沒法切換到該目錄執行該目錄下的命令。