關於suid/guid

xsdan發表於2006-11-22
設定檔案許可權位時我們一般忽略了suid/guid的存在,現在看看它們到底是怎麼回事。[@more@]

suid/guid是什麼?

suid意味著如果A使用者對屬於他自己的shell指令碼檔案設定了這種許可權,那麼其他使用者在執行這個指令碼的時候就擁有了A使用者的許可權。所以,如果 root使用者對某一指令碼設定了這一許可權的話則其他使用者執行該指令碼的時候則擁有了root使用者許可權。同理,guid意味著執行相應指令碼的使用者則擁有了該檔案所屬使用者組中使用者的許可權。

為什麼使用suid/guid?

舉個例子:要對資料庫系統進行備份需要有系統管理許可權,那麼我可以寫幾個指令碼,並設定了它們的guid,這樣我指定的一些使用者只要執行這些指令碼就能夠完成相應的工作,而無須以資料庫管理員的身份登入,以免不小心破壞了資料庫伺服器。透過執行這些指令碼,他們可以完成資料庫備份及其他管理任務,但是在這些指令碼執行結束之後,他們就又回覆到他們作為普通使用者的許可權。

有相當一些命令也設定了suid和guid。如果想找出這些命令,可以進入/bin或/sb in目錄,執行下面的命令:

$ ls -l | grep '^...s'
上面的命令是用來查詢suid檔案的;

$ ls -l | grep '^...s..s'
上面的命令是用來查詢suid和guid的。

如何設定suid/guid?

如果希望設定suid,那麼就將相應的許可權位之前的那一位設定為4;如果希望設定guid,那麼就將相應的許可權位之前的那一位設定為2;如果希望兩者都置位,那麼將相應的許可權位之前的那一位設定為4+2。

一旦設定了這一位,一個s將出現在x的位置上。記住:在設定suid或guid的同時,相應的執行許可權位必須要被設定。例如,如果希望設定guid,那麼必須要讓該使用者組具有執行許可權。

如果想要對檔案login設定suid,它當前所具有的許可權為rwx rw- r-- (741),需要在使用chmod命令時在該許可權數字的前面加上一個4,即chmod 4741,這將使該檔案的許可權變為rws rw- r--。

$ chmod 4741 login

還可以使用符號方式來設定suid/guid。如果某個檔案具有這樣的許可權: rwx r-x r-x,那麼可以這樣設定其suid/guid:

chmod u+s
chmod u+g

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/262387/viewspace-879298/,如需轉載,請註明出處,否則將追究法律責任。

相關文章