最近搞了一批權限最小化的問題,這里專門進行一下linux下文件權限的總結,其實非常簡單。
在介紹linux下文件的情況,需要先介紹一個概念,用戶、用戶組。
和win一樣,linux也是需要用戶才能登錄的。不同的是在linux中,還存在一個概念:用戶組。也就是當前用戶所屬的屬組。為什么要引入這樣一個看似無用的用戶組呢?這主要是為了在linux下,團隊協作的方便。每一個用戶都有屬于自己獨特的權限控制。但是有時候,有一些公有的文件或文件夾,這個你也用,我也用,但是我們并不希望所有人都能用。(防盜連接:本文首發自 )于是就搞出了一個所屬組的概念。我們可以僅針對這個所屬組添加權限。這樣這個所屬組中的所有用戶均擁有對這個文件的操作權限。
下邊再來看看文件權限的控制。
無論是用戶還是用戶組,權限均只由三部分組成
讀(read):r
寫(write):w
執行(execute):x
如文件f的所屬用戶權限可以設置成:
rwx:代表的是當前用戶擁有讀、寫、執行三個權限。
r-x:代表的是當前用戶擁有讀和執行權限。(注意:一般執行腳本會設置成這樣的權限)
記住讀、寫、執行的順序是固定的,對應的權限如果沒有則使用-(橫線來替代該位)。
而對于計算機使用人員來說一個位置如果存在數據,我們通常使用1來代替,沒有則使用0來代替。
因此:
r-x等于0b101換算后就是5
??????rwx等于0b111換算后就是7
??????—等于0b111換算后就是0
?而文件的權限,如下圖,由三個方面設定:
當前文件所屬用戶的權限。
當前用戶所屬用戶組的權限。
其他用戶的權限。
注意三者的順序也是固定的。
如上圖當前文件的總權限也就是
r–rw-r-x,換算成數字就是4(r–)6(rw-)5(r-x)
通常來說,一個文件擁有777權限,指的就是所屬用戶、所屬用戶組、其他用戶均擁有rwx權限。
文件權限
ls
?-l中顯示的內容如下:
-rwxrw-r‐-1?root?root?1213?Feb?2?09:39?abc
? ?
–?10個字符確定不同用戶能對文件干什么
–?第一個字符代表文件(-)、目錄(d),鏈接(l)
–?其余字符每3個一組(rwx),讀(r)、寫(w)、執行(x)
–?第一組rwx:文件所有者的權限是讀、寫和執行
–?第二組rw-:與文件所有者同一組的用戶的權限是讀、寫但不能執行
–?第三組r–:不與文件所有者同組的其他用戶的權限是讀不能寫和執行
也可用數字表示為:r=4,w=2,x=1??因此rwx=4+2+1=7
–?1?表示連接的文件數
–?root?表示用戶
–?root表示用戶所在的組
–?1213?表示文件大小(字節)
–?Feb?2?09:39?表示最后修改日期
–?abc?表示文件名
?
改變權限的命令
chmod?改變文件或目錄的權限
chmod?755?abc:賦予abc權限rwxr-xr-x
chmod?u=rwx,g=rx,o=rx?abc:同上u=用戶權限,g=組權限,o=不同組其他用戶權限
chmod?u-x,g+w?abc:給abc去除用戶執行的權限,增加組寫的權限
chmod?a+r?abc:給所有用戶添加讀的權限