Linux/Unix中的SUID和SGID檔案許可權和在CVS專案管理中的應用 (轉)

amyz發表於2007-11-16
Linux/Unix中的SUID和SGID檔案許可權和在CVS專案管理中的應用 (轉)[@more@]當你使用passwd改變自己的口令時,你需要訪問/etc/shadow,但作為普通你並沒有這個。這時透過一種附加許可權來實現你對該檔案的訪問。

當你一個設定了suid位的時,你就繼承了該程式的屬主許可權,而沒有設定suid位的程式在執行時只擁有執行該程式的使用者的許可權。
下面列出 /usr/bin/passwd的檔案屬性
-r-s--x--x 1 root 15368 5ôâ 29 2002 /usr/bin/passwd

可以看到,所有者執行位設定為s


而設定了sgid位的程式將以程式屬主所在組的許可權來執行。

這裡,你執行passwd時,你是以root的許可權來執行的。
suid位和粘滯位給目錄一個額外的檔案移動許可權。使用者對目錄有寫許可權就可以使使用者增加和刪除該目錄下的任何檔案,如果該目錄的粘滯位被設定,則只有當你是如下使用者時檔案才能被刪除:設定粘滯位的目錄的屬主,要被刪除的檔案的屬主,root使用者。

目錄也可以設定sgid位,如果一個目錄設定了sgid位,任何加到該目錄下的新檔案都自動繼承該目錄的組,用來代替生成檔案的使用者的組。


-------------------------------------------------
sgid的應用
眾所周知的,本身對使用者和專案許可權的管理非常薄弱,這就需要我們使用系統對使用者的目錄的功能來扶助實現。

在建立新專案時首先建立用於開發該專案的組,如:dxc

將開發人員的使用者都加入到這個組中,如有:dxca,dxcb,dxcc

使用一個專案成員賬號在$cvsroot目錄下建立 一個該專案的同名目錄如dxc,並修該目錄的所屬組為dxc,使用
chmod g+s dxc
設定 sgid位
然後,import該專案。

這樣該組的每個成員就都可以正確的checkout和commit,即使add新的目錄和檔案也不會導致其他的使用者不能正確訪問而需要手工改變新子目錄的屬性。

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

相關文章