參看了 http://hi.baidu.com/hehongrong/item/b64a6d6b094cf634ac3e8382 里面說
-s :在文件執行時把進程的屬主或組ID置為該文件的文件屬主。
這句話當時我看就有點誤解
到底是誰設置成誰呢?
現在明白了,是進程的主變了,不是文件的主變
總之就是 進程的主臨時改變了,變成了進程文件的主。
所以這樣要求這個文件是exe的進程文件,不能是腳本。
其次,是臨時變,就是在動態運行的過程變。
<權限范圍>+<權限設置> 開啟權限范圍的文件或目錄的該項權限設置。
<權限范圍>-<權限設置> 關閉權限范圍的文件或目錄的該項權限設置。
<權限范圍>=<權限設置> 指定權限范圍的文件或目錄的該項權限設置。
權限范圍的表示法如下:
u:User,即文件或目錄的擁有者。
g:Group,即文件或目錄的所屬群組。
o:Other,除了文件或目錄擁有者或所屬群組之外,其他用戶皆屬於這個范圍。
a:All,即全部的用戶,包含擁有者,所屬群組以及其他用戶。
權限設置的表示法如下:
-s :在文件執行時把進程的屬主或組ID置為該文件的文件屬主。
-c : 若該檔案權限確實已經更改,才顯示其更改動作
-f : 若該檔案權限無法被更改也不要顯示錯誤訊息
-v : 顯示權限變更的詳細資料
-R : 對目前目錄下的所有檔案與子目錄進行相同的權限變更(即以遞回的方式逐個變更)
如果是一個可執行文件, 那么在執行時, 一般該文件只擁有調用該文件的用戶具有的權限. 而setuid, setgid 可以來改變這種設置.
setuid: 設置使文件在執行階段具有文件所有者的權限. 典型的文件是 /usr/bin/passwd. 如果一般用戶執行該文件, 則在執行過程中, 該文件可以獲得root權
限, 從而可以更改用戶的密碼.
當其他用戶執行oracle的sqlplus這個程序時,他的身份因這個程序暫時變成oracle(這句話也是指代不清,他的身份是誰的身份呢?)
chmod u+s sqlplus
首先 sqlplus本來就屬於oracle的,所以要說清 執行chmod u+s sqlplus實在非oracle用戶環境地下執行。
這樣才可以使得執行chmod命令的這個非oracle用戶 對 sqlplus 擁有臨時的oracle的權限。