關於suid/guid

設置文件權限位時我們一般忽略了suid/guid的存在,現在看看它們到底是怎麼回事。

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--(764),需要在使用chmod命令時在該權限數字的前面加上一個4,即chmod 4764,這將使該文件的權限變爲rws rw-r--。

$ chmod 4764 login

還可以使用符號方式來設置suid/guid。如果某個文件具有這樣的權限: rwx r-xr-x,那麼可以這樣設置其suid/guid:

chmod u+s <filename>
chmod u+g <filename>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章