1. 程式人生 > >linux chattr lsattr SUID SGID SBIT

linux chattr lsattr SUID SGID SBIT

有效 fec 沒有效果 文件隱藏 註意 -a layout rem att

chattr(配置文件案隱藏屬性)

chattr [+-=][ASacdistu]文件或目錄名稱

選項與參數:

+ :增加某一個特殊參數,其他原本存在參數則不動。

- :移除某一個特殊參數,其他原本存在參數則不動。

= :設定一定,且僅有後面接的參數

A :當設定了 A 這個屬性時,若你有存取此文件(或目錄)時,他的訪問時間 atime 將不會被修改,可避免 I/O 較慢的機器過度的存取磁盤。(目前建議使用文件系統掛載參數處理這個項目)

S :一般文件是異步寫入磁盤的(原理請參考前一章 sync 的說明),如果加上 S 這個屬性時,當你進行任何文件的修改,該更動會『同步』寫入磁盤中。

a :當設定 a 之後,這個文件將只能增加數據,而不能刪除也不能修改數據,只有 root 才能設定這屬性

c :這個屬性設定之後,將會自動的將此文件『壓縮』,在讀取的時候將會自動解壓縮,但是在儲存的時候,將會先進行壓縮後再儲存(看來對於大文件似乎蠻有用的!)

d :當 dump 程序被執行的時候,設定 d 屬性將可使該文件(或目錄)不會被 dump 備份

i :這個 i 可就很厲害了!他可以讓一個文件『不能被刪除、改名、設定連結也無法寫入或新增數據!』對於系統安全性有相當大的幫助!只有 root 能設定此屬性

s :當文件設定了 s 屬性時,如果這個文件被刪除,他將會被完全的移除出這個硬盤空間,所以如果誤刪了,完全無法救回來了喔!

u :與 s 相反的,當使用 u 來配置文件案時,如果該文件被刪除了,則數據內容其實還存在磁盤中,可以使用來救援該文件喔!

註意 1:屬性設定常見的是 a 與 i 的設定值,而且很多設定值必須要身為 root 才能設定

註意 2:xfs 文件系統僅支援 AadiS 而已 範例:請嘗試到/tmp 底下建立文件,並加入 i 的參數,嘗試刪除看看。

[root@study ~]# cd /tmp

[root@study tmp]# touch attrtest <==建立一個空文件

[root@study tmp]# chattr +i attrtest <==給予 i 的屬性

[root@study tmp]# rm attrtest <==嘗試刪除看看

rm: remove regular empty file `attrtest‘? y

rm: cannot remove `attrtest‘: Operation not permitted

# 看到了嗎?呼呼!連 root 也沒有辦法將這個文件刪除呢!趕緊解除設定!

範例:請將該文件的 i 屬性取消!

[root@study tmp]# chattr -i attrtest

lsattr (顯示文件隱藏屬性)

[root@study ~]# lsattr [-adR] 文件或目錄

選項與參數:

-a :將隱藏文件的屬性也秀出來;

-d :如果接的是目錄,僅列出目錄本身的屬性而非目錄內的文件名;

-R :連同子目錄的數據也一並列出來!

[root@study tmp]# chattr +aiS attrtest

[root@study tmp]# lsattr attrtest --S-ia---------- attrtest

Set UID

當 s 這個標誌出現在文件擁有者的 x 權限上時,例如剛剛提到的 /usr/bin/passwd 這個文件的權限狀態:『-rwsr-xr-x』,此時就被稱為 Set UID,簡稱為 SUID 的特殊權限。

基本上 SUID 有這樣的限制與功能: ?

SUID 權限僅對二進制程序(binary program)有效; ?

執行者對於該程序需要具有 x 的可執行權限; ?

本權限僅在執行該程序的過程中有效 (run-time); ?

執行者將具有該程序擁有者 (owner) 的權限。

Set GID 當 s 標誌在文件擁有者的 x 項目為 SUID,那 s 在群組的 x 時則稱為 Set GID, SGID 。

如果是對文件來說, SGID 有如下的功能: ?

SGID 對二進制程序有用; ?

程序執行者對於該程序來說,需具備 x 的權限; ?

執行者在執行的過程中將會獲得該程序群組的支持。

當一個目錄設定了 SGID 的權限後,他將具有如下的功能: ?

用戶若對於此目錄具有 r 與 x 的權限時,該用戶能夠進入此目錄; ?

用戶在此目錄下的有效群組(effective group)將會變成該目錄的群組; ?

用途:若用戶在此目錄下具有 w 的權限(可以新建文件),則使用者所建立的新文件,該新文件的群組與此目錄的群組相同。

Sticky Bit

這個 Sticky Bit, SBIT 目前只針對目錄有效,對於文件已經沒有效果了。

SBIT 對於目錄的作用是: ?

當用戶對於此目錄具有 w, x 權限,亦即具有寫入的權限時; ?

當用戶在該目錄下建立文件或目錄時,僅有自己與 root 才有權力刪除該文件

換句話說:當甲這個用戶於 A 目錄是具有群組或其他人的身份,並且擁有該目錄 w 的權限, 這表示『甲用戶對該目錄內任何人建立的目錄或文件均可進行 "刪除/更名/搬移" 等動作。』 不過,如果將 A 目錄加上了 SBIT 的權限項目時,則甲只能夠針對自己建立的文件或目錄進行刪除/更名/移動等動作,而無法刪除他人的文件。

4 為 SUID

2 為 SGID

1 為 SBIT

假設要將一個文件權限改為『-rwsr-xr-x』時,由於 s 在用戶權力中,所以是 SUID ,因此, 在原 先的 755 之前還要加上 4 ,也就是:『 chmod 4755 filename 』來設定!此外,還有大 S 與大 T 的

也可以透過符號法來處理喔!其中 SUID 為 u+s ,而 SGID 為 g+s ,SBIT 則是 o+t 啰!來看看如下的範例

# 設定權限成為 -rws--x--x 的模樣:
[root@study tmp]# chmod u=rwxs,go=x test; ls -l test -rws--x--x 1 root root 0 Jun 16 02:53 test

# 承上,加上 SGID 與 SBIT 在上述的文件權限中! [root@study tmp]# chmod g+s,o+t test; ls -l test -rws--s--t 1 root root 0 Jun 16 02:53 test

linux chattr lsattr SUID SGID SBIT