在看《鳥哥的linux私房菜》的過程中,關於suid和sgid有了自己的一點心得體會,來這裡發表一下!
首先說suid,這個許可權的含義就是當乙個使用者執行乙個程式的時候,如果這個程式有suid許可權,那麼這個程式執行時的所屬使用者不是執行這個程式的使用者,而是這個程式的所屬使用者。舉個例子:chfn這個程式,如下圖:這個程式是屬於root的,且具有suid許可權,其他使用者具有執行許可權,如果我用乙個普通使用者vbird來執行會發生什麼情況呢?請看下圖:
vbird是乙個普通使用者,當vbird執行這個程式的時候,我用root去查詢系統中關於chfn的程序,會發現這個程序的所有者是root,這就是suid。
接下來再講一下sgid,我個人感覺關於程序的sgid許可權和suid差不多,這裡沒有什麼難點。主要是在於關於資料夾的。如果乙個資料夾擁有sgid許可權的話,那麼其他使用者進入到這個檔案之後,有效使用者組都是這個資料夾的使用者組,即建立的檔案或者資料夾的使用者組都是這個資料夾的使用者組。這句話聽起來可能比較拗口,接下來舉個例子,就很好理解了。
首先,介紹使用者和組,我這裡有乙個使用者michael,其主組也是michael,附屬組是乙個project。如下圖:
michael的主組是michael意味著michael登入後,預設的有效組就是michael,即michael建立乙個乙個檔案或者資料夾,預設都是屬於michael組的。
現在,有乙個資料夾project,擁有sgid許可權,且所屬組為project,那麼michael在裡面建立檔案或者資料夾會發生什麼情況呢?請看下圖:
大家請看,我建立的檔案test和資料夾dtest都是屬於project組的,而不是屬於michael組,且dtest資料夾也擁有sgid的許可權。這就是sgid的功能。
最後,我是有個想法,如果michael的附屬組裡面不包含project,那麼michael在project/這個資料夾裡面建立東西會怎麼樣呢?我特地實驗了一下,發現建立的檔案還是和原來一樣,這就出現了一種很神奇的情況,某個檔案所屬的使用者和所屬的組並沒有任何關係。如下圖:
linux下粘滯位引出的SUID和SGID
許可權字母表示 r 讀許可權 檢視檔案中的資料 檢視目錄的內容 w 寫 修改許可權 修改檔案以及刪除 在目錄內建立或刪除物件 x 執行許可權 執行程式 進入目錄 許可權數字表示 0 x 1 w 2 wx 3 r 4 r x 5 rw 6 rwx 7 故 bin bash的許可權集合的數字表示為 75...
suid和sgid的個人理解
uid是使用者id,gid是組id,它們的許可權有rwx,檔案位置在 etc passwd和 etc group 目錄預設許可權是755,檔案預設許可權是644,預設掩碼是022,suid的特殊許可權是4 命令的本身也是檔案相關 sgid的特殊許可權是2 和目錄相關 striky的特殊許可權是1 防...
android中suid無效解決方法
設定了suid的程式不能放置在掛載為nosuid的目錄下,如果你堅持要把檔案放在那個目錄的話只能重新掛載,可按如下步驟重新掛載 以 data目錄為例,首先用mount命令檢視該目錄的掛載資訊,可見其中有乙個nosuid,表明在此目錄下suid無效 然後使用mount o remount,suid d...