普通權限
-rw-r–r--. 1 root root 0 Feb 14 23:33 test
-
第1位標識文件類型:
-:普通文件
b:塊設備
c:字符設備
d:目錄
l:符號鏈接
s:套接字文件
p:命名管道 -
2~4位表示擁有者的權限
-
5-8位表示所屬組的權限
-
9~11位表示其他人的權限
-
權限的定義:
r:可讀,對文件來說即可以讀取文件的具體內容(cat,more,less,vim),對目錄而已即爲可讀取目錄列表(ls)
w:可寫,對文件即可以修改文件內容(vi),對目錄即可以修改目錄內容(創建,重命名,刪除文件)
x:可執行,對文件即能執行文件內容(這裏的文件一般是二進制文件,shell腳本,其他任何需要執行的文件),對目錄即爲可以進入目錄(cd)
權限修改相關命令
- chown(改變文件所有者,也可以實現chgrp的功能)
* chown [-R] username filename/dirname:只修改所有者,-R是遞歸更改目錄下的文件
* chown [-R] username:groupname filename/dirname:同時修改所有者和用戶組
* chown [-R] .groupname filename/dirname:只修改用戶組
- chgrp(改變文件所屬用戶組)
* chgrp [-R] groupname filename/dirname
- chmod(改變文件的權限)
* 符號表達 chmod [-R] [{ugoa}{+-=}{rwx}] filename/dirname
備註: u:所有者 g:所屬組 o:其他人 a:所有人
+:爲用戶增加權限 -:爲用戶減少權限 =:爲用戶賦予權限
r:讀權限 w:寫權限 x:執行權限
例子: 將一個文件的權限設置爲-rwxr-xr-x
chmod u=rwx,g=rx,o=rx /tmp/test
* 數字表達 chmod [-R] [mode=421] filename/dirname ←(這種方法用的比較多)
備註: r:4 w:2 x:1
例子: 將一個文件的權限設置爲-rwxr-xr-x
chmod 755 /tmp/test
特殊標識位
1.SUID
當s出現在文件的所有者標記上,代替了x權限,就稱爲Set UID,簡稱爲SUID,該權限針對命令和二進制程序,當普通用戶執行某個(passwd)命令的時候,可以擁有這個命令對應用戶的權限,
即讓普通用戶可以以root用戶的角色執行程序或命令。
2. SGID
當s出現在用戶所有組標記上,代替了x權限,就稱爲Set GID,簡稱爲SGID
該權限具有以下功能:
SGID應用在文件上:
- SGID對二進制程序有用
- 程序執行者對於該程序來說,需具備x的權限
- 執行者在執行過程中將會獲得該程序用戶組的支持
SGID應用在目錄上:
- 用戶若對於此目錄具有r和x的權限時,該用戶能夠進入此目錄
- 用戶在此目錄下的有效用戶組將會變成該目錄的用戶組
- 若用戶在此目錄下具有w的權限(可以新建文件),則用戶所創建的新文件的用戶組與此目錄的用戶組相同
3. SBIT
SBIT,只針對目錄有效,當用戶在該目錄下創建文件或目錄時,僅有自己與root纔有權利刪除該文件
4. 特殊權限變更命令
同樣通過chmod命令來修改特殊權限
符號表達:
chmod a+s filename
chmod g+s filename/dirname
chmod o+t dirname
數字表達:
suid:4 sgid:2 sbit:1
只要在普通權限的前面加上一位即可
例如,要設置一個普通權限爲755,並且是SUID,就使用命令:chmod 4755 filename即可
權限掩碼(umask)
文件目錄初始權限
文件:inux系統新建文件默認沒有執行權限,其最大權限爲rw-rw-rw-(666)
目錄:新建目錄的最大權限爲rwx-rwx-rwx(777)
計算默認權限
文件:666-umask值所對應的權限
目錄:777-umask值所對應的權限
可通過umask命令查看當前的umask值,一般情況下,root的umask022,普通用戶爲002,計算時建議將umask值轉化爲對應權限去相加減,數字加減後轉換在umask值中有奇數的情況可能會產生錯誤。
ACL
ACL是Access Control List的縮寫,主要提供更加細粒度的權限設置,ACL可以針對單一用戶,單一文件或目錄進行r、w、x的權限設置,對於需要特殊權限的使用狀況非常有用,,需要文件系統選項(ACL)支持。
setfacl命令:設置某個目錄/文件的ACL規定
用法:setfacl [-bkRd] [{-m | -x}] acl參數 filename
參數:
-m:設置後續的acl參數給文件使用,不可與-x合用
-x:刪除後續的acl參數,不可與-m合用
-b:刪除所有的acl參數
-k:刪除默認的acl參數
-R:遞歸設置acl,子目錄也會被設置acl
-d:設置默認的acl參數,只對目錄有效,在該目錄新建的數據都會引用該值
舉例說明:幾個程序員對同一個目錄(/tmp/test)具有完全的權限,但是隻允許項目經理(manager)進入到該目錄裏查看(不允許任何的其他人進入該目錄,同時項目經理也不能修改任何的東西)。此時就要使用到acl:
setfacl -m u:manager:rx /tmp/test
設置acl的文件這裏會有一個+號
getfacl命令:取得某個文件/目錄的ACL設置項目
文件特殊屬性
- chattr +a filename 只允許以追加方式讀寫文件
- chattr +c filename 允許這個文件能被內核自動壓縮/解壓
- chattr +d filename 在進行文件系統備份時,dump程序將忽略這個文件
- chattr +i filename 設置成不可變的文件,不能被刪除、修改、重命名或者鏈接
- chattr +s filename 允許一個文件被安全地刪除
- chattr +S filename 一旦應用程序對這個文件執行了寫操作,使系統立刻把修改的結果寫到磁盤
- chattr +u filename 若文件被刪除,系統會允許你在以後恢復這個被刪除的文件
- lsattr filename 顯示特殊的屬性