这三个东东有些时候很困扰人,今天我折腾了半天才搞明白是怎么回事,现在拿上来和大家分享具体划分.

  • SUID 與 SGID:
    其實,說到這裡之前,應該先說明一下 UID (user ID)與 GID (Groupt ID)的!基本上, Linux 認得的帳號只是一堆數字而已!而由於我們每個檔案中同時含有『使用者』與『使用者群組』的屬性,因此,就有所謂的 UID 與 GID 囉! UID 代表我們的使用者『代號』而 GID 則是群組的『代號』。您能够使用『 more /etc/passwd 』這個指令來看一下您的系統當中的任何帳號,然後您會注意到每行的第三、四個欄位(以 : 分隔)為數字,那個就是 UID 與 GID 了,您更會注意到的是, root 的 UID 與 GID 都是 0 !因此,當您建立了一個帳號,而您將該帳號的 UID 與 GID 都改為零,呵呵!那個帳號的使用者就具备 root 的身份囉!
     
    那麼什麼是 SUID 與 SGID 呢?!在說明之前我們先來以一般身份使用者 ( 還記得安裝的時候曾經增加一個 test 帳號的一般身份使用者嗎?對啦!用他!然後呢?直接在鍵盤上按下 [Alt] [Ctrl] [F2] 到第二個終端機呀!) test 的身份登入,再來看一個檔案的內容:
     
    [test@test test]$ ls -l /usr/bin/passwd
    -r-s--x--x 1 root root 13476 Aug 7 2001 /usr/bin/passwd
     
    看到了 /usr/bin/passwd 檔案的前面屬性了嗎?怎麼會有 s 的屬性在原本的 x 呀!?那個就是所謂的 SUID 了!假如是『 -r-xr-s--x 』時,那麼 s 就成為所謂的 SGID 了!
     
      當一個檔案具备 SUID 的時候,同時 other 的群組具备可執行的權限,那麼當 others 群組執行該程式的時候, other 將擁有該檔案的 owner 的權限!』。
      
    [test@test test]$ ls -l /usr/bin/passwd /etc/shadow
    -r-s--x--x 1 root root 13476 Aug 7 2001 /usr/bin/passwd
    -rw------- 1 root root 2423 Jun 25 14:29 /etc/shadow
     
    我們以帳號的密碼檔來說明好了!注意上面的範例囉!能够看到的是, /etc/shadow 的權限是『只有 root 才能存取』呦!那麼您會不會覺得很奇怪?明明我的一般使用者能够自己修改密碼呀!對不對?那麼修改密碼一定跟 /etc/shadow 這個檔案有關,那麼怎麼回事呀!?使用者是如何修改 /etc/shadow 這個檔案的呢?嗯!沒錯!就是使用 SUID 的功能啦!上面的例子說明了, /usr/bin/passwd 這個檔案具备 SUID 的屬性,那麼當使用者使用 /usr/bin/passwd 這個執行檔時,在執行 pass word 修改的期間就具备 /usr/bin/passwd 這個檔案的擁有者 root 的所屬權限囉!所以,所以當一般使用者執行 passwd 的時候,將具备 root 的權限,所以他們也能够更改 /etc/shadow 的內容囉!那麼由此也能够知道,由於這個 Set UID ( SUID ) 的主要功能是在『某個檔案執行的期間具备檔案擁有者的權限』,因此, s 就是替代上面提到的 x 這個可執行的位置囉!那萬一該檔案並沒有 x 的屬性呢?哈哈!問的好!那麼該檔案的屬性就會將小寫的 s 變成大寫的 S 啦! ( 這裡即使暫時不瞭解也沒有關係,等到過一陣子再回來看一看,您就會瞭解啦! )
     
    不過,由此也知道 SUID 與 SGID 的問題所在,沒錯!就是太不安全了!假如您有一個檔案具备 root 的權限,那麼當開啟了 SUID 的時候,嘿嘿!夠您瞧的了!!因此上,在變更一個檔案成為具备 SUID 或 SGID 的情況時,必須要特別小心呢!知道乎!?
     
  • Sticky bit:
    OK!接著下來,我們要來看一下,既然有 SUID 與 SGID ,那麼為什麼沒有在最末位出現 s 取代 x 呢?呵呵!這當然沒有必要啦!因為那是屬於 others 的權限,您的檔案假如是任何人皆可執行的話,那麼本來他們就具备權限啦!幹嘛還要設定 s 的屬性!?不過,這裡卻真的有另一個屬性出現了,那就是 Sticky bit 的屬性 ( t ) !這個屬性的最大用處在於『具备 sticky bit 屬性的該”目錄”下的檔案,其檔案或目錄只有檔案擁有者及 root 才有權力刪除!』這樣是否能够瞭解了呢?嘿嘿!沒錯!在我們系統裡面本來就預設有一個啦!那就是 /tmp 這個目錄!
      

    文章整理:西部数码--专业提供域名注册虚拟主机服务
    http://www.west263.com
    以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

    [test@test test]$ ls -l /
    drwxrwxrwt 2 root root 4096 Jul 18 13:08 tmp
    Google