linux系統內有檔案有三種身分 u:擁有者 g:群組 o:其他人
這些身分對於文件常用的有下面權限:
r:讀取權限,使用者可以讀取文件的內容,如用cat,more查看
w:寫權限,使用者可以編輯文件
x:該目錄具有可以被系統執行的權限
除了讀寫執行權限外系統還支援強制位元(s權限)和黏滯位(t權限)
s權限: 設定使文件在執行階段具有文件擁有者的權限,相當於臨時擁有文件擁有者的身份. 典型的文件是passwd. 如果一般用戶執行該文件, 則在執行過程中, 該文件可以獲得root權限, 從而可以更改使用者的密碼.
ls -al /usr/bin/passwd -rwsr-xr-x 1 pythontab pythontab 32988 2018-03-16 14:25 /usr/bin/passwd
我們可以透過字元模式設定s權限:chmod a+s filename,也可以使用絕對模式來設定:
設定s u i d:將對應的權限位之前的那一位設定為4;
設定g u i d:將對應的權限位之前的那一位設定為2;
兩者都置位:將對應的權限位之前的那一位設定為4+2=6。
注意:在設定s權限時文件屬主、屬組必須先設定對應的x權限,否則s權限並不能正真生效(c h m o d指令不進行必要的完整性檢查,即使不設定x權限就設定s權限,chmod也不會報錯,當我們ls -l時看到rwS,大寫S說明s權限未生效)
t權限:要刪除一個文檔,您不一定要有這個文檔的寫權限,但您一定要有這個文檔的上級目錄的寫入權限。也就是說,您即使沒有一個文檔的寫權限,但您有這個文檔的上級目錄的寫權限,您也能夠把這個文檔給刪除,而假如沒有一個目錄的寫權限,也就不能在這個目錄下建立文檔。
怎麼能讓一個目錄既能夠讓任何使用者寫入文檔,又不讓使用者刪除這個目錄下他人的文檔,t權限就是能起到這個作用。 t權限一般只用在目錄上,用在文件上起不到什麼作用。
在一個目錄上設了t權限位後,(如/home,權限為1777)任何的用戶都能夠在這個目錄下創建文檔,但只能刪除自己創建的文檔(root除外),這就對任何使用者能寫的目錄下的使用者文件啟動到了保護的作用。
可以透過chmod +t filename 來設定t權限
以上是linux 檔案權限解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!