Linux 文件與目錄的權限
文件默認權限:umask
umask就是指定“目前用戶在新建文件或目錄時候的權限默認值”。查詢umask有以下兩種方式:
目錄與文件的默認權限是不一樣的:
- 文件,默認沒有可執行(x)權限,只有r、w這兩項。也就是最大為666。默認為:-rw-rw-rw
- 目錄,默認所有權限,即為777分,默認權限:drwxrwxrwx
umask的分數指的是“該默認值需要減掉的權限”,如,umask為022,
- 創建文件時:(-rw-rw-rw) - (-----w--w)==>-rw-r--r--
- 創建目錄時:(drwxrwxrwx) - (d-----w--w-)==>drwxr-xr-x
umask對於新建文件的默認權限是很有關系的。如果umask設置為022,那麽新建的數據只有用戶自己具有w權限,用戶組的人只有r這個可讀權限而已。
那如何設置umask呢,直接在umask後邊輸入002就好了:
文件的隱藏屬性 chattr,lsattr
chattr(設置文件的隱藏屬性)
chattr命令只能在Ext2/Ext3的文件系統上生效。
這個命令是很重要的,尤其在系統的數據安全上面。+i可以讓一個文件無法被改動,對於需要強烈的系統安全的人來說,真是相當重要的。
Isattr(顯示文件隱藏屬性)
文件特殊權限:SUID, SGID,SBIT
-SetUID
當s這個標記出現在文件所有者的x權限上時,此時被稱為Set UID,簡稱SUID的特殊權限。SUID有這樣的限制與功能:
- SUID權限僅對二進制程序有效
- 執行者對於該程序需要具有x的可執行權限
- 本權限僅在執行該程序的過程中有效
- 執行過程種,執行者“暫時”將具有該程序所有者的權限。
另外,SUID僅可用在二進制程序上,不能夠用在shell script 上面。這是因為shell script只是將很多的二進制執行文件調進來執行而已。
Set GID
當s標誌在文件所有者x項目為SUID,那s在用戶組的x時則成為Set GID,SGID。SGID可以針對文件或者目錄來設置。如果是對文件來說,有如下功能:
- SGID對二進制程序有用;
- 程序執行者對於該程序來說,需具備x的權限
- 執行者在執行的過程中將會“暫時”獲得該程序用戶組的支持。
當一個目錄設置了SGID的權限後,它將具有如下的功能:
- 用戶若對於此目錄具有r與x權限時,該用戶能進入此目錄;
- 用戶在此目錄下的有效用戶組將會變成該目錄的用戶組;
- 若用戶在此目錄下具有w的權限(可以新建文件),則用戶所創建的新文件的用戶組與此目錄的用戶組相同。
Sticky Bit
這個Sticky Bit(SBIT)目前只針對目錄有效,對於文件已經沒有效果了。SBIT對於目錄的作用:
- 當用戶對於此目錄具有w,x權限,即具有寫入的權限時;
- 當用戶在該目錄下創建文件或目錄時,僅有自己與root才有權利刪除該文件。
- 當甲這個用戶與A目錄是具有用戶組或其他人的身份,並且擁有該目錄的w的權限,這表示甲用戶對該目錄內任何人新建的目錄或文件均可進行刪除、重命名、
移動等操作。不過如果A目錄加上SBIT的權限項目時,則甲只能夠針對自己創建的文件或目錄進行刪除、重名命名、移動等操作,而無法刪除他人的文件。
SUID/SGID/SBIT權限設置
4為SUID
2為SGID
1為SBIT
將一個文件權限改為“-rwsr-xr-x”由於s在用戶權利中,所以是SUID,因此,在原先755之前加上4.“chmod 4755 filename”來設置。
最後一個例子出現S和T,因為s和t都是替代x這個權限的,但是你有沒有發現,我們執行7666。也就是說,user,group以及other都沒有x這個權限,所以
這個S,T代表的就是“空的”。SUID是表示這個文件在執行的時候有文件擁有者的權限,但是文件擁有者都無法執行了,哪裏來的權限給其他人使用,當然是空的。
除了數字法之外,可以用過符號法來處理,其中SUID為u+s,而SGID為g+s,SBIT則是o+t:
Linux 文件與目錄的權限