posts - 262,  comments - 221,  trackbacks - 0
          【1.SUID與SGID】
          前面我們知道了Linux中文件、目錄一般有rwx三種權(quán)限,但是請看下面命令的結(jié)果,我們可以發(fā)現(xiàn)了多了2個權(quán)限:s,t:
          [root@localhost ~]# ls -ld /tmp /usr/bin/passwd
          drwxrwxrwt  
          11 root root  4096  1月  5 21:36 /tmp
          -r-s--x--x   
          1 root root 19336 2004-09-07  /usr/bin/passwd
          [root@localhost ~]# ls /usr/bin/passwd

          其中s權(quán)限當(dāng)出現(xiàn)于用戶的x位置時被稱為SUID,當(dāng)s權(quán)限出現(xiàn)于組用戶的x位置時被稱為SGID (而SGID又分為作用于文件還是目錄,SUID僅對文件有用)

          那么這兩個權(quán)限有什么作用呢?簡單的概括起來:
           ①SUID允許執(zhí)行該文件的用戶在運(yùn)行時暫時擁有所有者的權(quán)限
           ②SGID允許執(zhí)行該文件的用戶在運(yùn)行時暫時擁有用戶組的權(quán)限
           ③如果SGID作用于目錄,則使用者在該目錄下創(chuàng)建的文件,其用戶組都和該目錄一樣

          Example 1:修改passwd文件中用戶paul的密碼

          我們知道/usr/bin/passwd文件的用戶是root,用戶組也是root,如果沒有s權(quán)限,那么光憑用戶paul的x權(quán)限我們只能執(zhí)行而不能看到,更改這個文件的內(nèi)容。但是實(shí)際上我們完全可以通過passwd命令來修改自己的密碼。
          [paul@localhost ~]$ passwd
          Changing password for user paul.
          Changing password for paul
          (current) UNIX password:
          New UNIX password:
          Retype new UNIX password:
          passwd: all authentication tokens updated successfully.
          [paul@localhost ~]$

          那么為什么我們不具備對passwd這個文件rw權(quán)限,卻能夠修改這個文件呢?原因就在于我們前面提到的s權(quán)限--SUID。從描述可以知道當(dāng)paul用戶執(zhí)行該文件時(x權(quán)限),可以暫時地獲得用戶root對這個文件的權(quán)限,用戶root對passwd是rwx權(quán)限,所以我們當(dāng)然可以修改自己的密碼了。

          但一旦我們執(zhí)行完畢時這個權(quán)限就還回去了,如果我們cat這個文件我們會發(fā)現(xiàn)沒有權(quán)限顯示
          [paul@localhost ~]$ cat /usr/bin/passwd
          cat: /usr/bin/passwd: 權(quán)限不夠
          [paul@localhost ~]$

          不過SUID和SGID也不是隨便那個人,那個文件都可以用的,必須滿足下面兩個條件
           ①用戶對要執(zhí)行的文件必須具備x權(quán)限
           ②SUID,SGID僅對二進(jìn)制文件起作用

          【2.SBIT】
          SBIT權(quán)限就是前面我們看到的t權(quán)限,它只能作用于目錄,它的作用是:但用戶在該目錄下建立文件或目錄時,僅有用戶自己或root用戶有權(quán)刪除。其他人無法刪除,而用戶也無法刪除他人的目錄或文件。
          [paul@localhost ~]$ ls -ld /tmp
          drwxrwxrwt  
          11 root root 4096  1月  5 22:34 /tmp
          [paul@localhost ~]$

          我們看到/tmp目錄的x位置被替換成t了,這意味著這個目錄下的內(nèi)容只有root用戶和創(chuàng)建者有權(quán)刪除。

          Example 1:試驗(yàn)SBIT權(quán)限

          首先我們以paul用戶身份在/tmp目錄下建立一個文件test,并設(shè)置成為777權(quán)限。讓所有人可以修改文件。
          [paul@localhost tmp]$ touch test
          [paul@localhost tmp]$ ls -l test
          -rw-rw-r--  
          1 paul paul 0  1月  5 23:26 test
          [paul@localhost tmp]$ chmod 777 test
          [paul@localhost tmp]$ ls -l test
          -rwxrwxrwx  
          1 paul paul 0  1月  5 23:26 test
          [paul@localhost tmp]$

          然后我們以O(shè)racle用戶身份分別嘗試刪除該文件和修改該文件
          [oracle@localhost ~]$ cd /tmp
          [oracle@localhost tmp]$ ls -l /tmp/test
          -rwxrwxrwx  
          1 paul paul 0  1月  5 23:26 /tmp/test
          [oracle@localhost tmp]$ rm test
          rm: 無法刪除‘test’: 不允許的操作
          [oracle@localhost tmp]$ vi test
          [oracle@localhost tmp]$ cat test
          Modify this file

          經(jīng)過試驗(yàn)我們發(fā)現(xiàn)兩個結(jié)果:
           ①我們不能以O(shè)racle身份刪除test文件,即便/tmp目錄對其他用戶開放w權(quán)限
           ②我們可以O(shè)racle身份修改test文件,因?yàn)槲覀儗est文件設(shè)置了777權(quán)限

          這就是SBIT權(quán)限的好處,即不會限制正常的刪除,又可以防止意外或惡意的刪除。

          【3.如何設(shè)置特殊權(quán)限】
          如何設(shè)置權(quán)限我們已經(jīng)在前面提到過了,設(shè)置特殊權(quán)限也是同樣的。只是特殊權(quán)限在設(shè)置時是位于普通權(quán)限的前面,而且4代表SUID權(quán)限,2代表SGID權(quán)限,1代表SBIT權(quán)限。見下面例子:
          [root@www ~]# cd /tmp
          [root@www tmp]# touch test                  <==建立一個測試用空檔
          [root@www tmp]# chmod 4755 test; ls -l test <==加入具有 SUID 的權(quán)限
          -rwsr-xr-x 1 root root 0 Sep 29 03:06 test
          [root@www tmp]# chmod 6755 test; ls -l test <==加入具有 SUID/SGID 的權(quán)限
          -rwsr-sr-x 1 root root 0 Sep 29 03:06 test
          [root@www tmp]# chmod 1755 test; ls -l test <==加入 SBIT 的功能!
          -rwxr-xr-t 1 root root 0 Sep 29 03:06 test
          [root@www tmp]# chmod 7666 test; ls -l test <==具有空的 SUID/SGID 權(quán)限
          -rwSrwSrwT 1 root root 0 Sep 29 03:06 test

          注意最后一個7666權(quán)限的例子,大寫S和T和上面小寫的s和t不同,這是空的特殊權(quán)限的表示。因?yàn)楸旧?66已經(jīng)斷絕了所有人的執(zhí)行權(quán)限,所以特殊權(quán)限也就沒有意思了。

          (來自《鳥哥的私房菜》的例子)


          -------------------------------------------------------------
          生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。
          posted on 2009-01-05 22:03 Paul Lin 閱讀(877) 評論(0)  編輯  收藏 所屬分類: Unix / Linux
          <2009年1月>
          28293031123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(21)

          隨筆分類

          隨筆檔案

          BlogJava熱點(diǎn)博客

          好友博客

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 巢湖市| 中阳县| 中西区| 渑池县| 莱州市| 松桃| 格尔木市| 康保县| 沾益县| 高青县| 广汉市| 天水市| 镇江市| 鹿泉市| 晋城| 招远市| 浙江省| 西乌珠穆沁旗| 余姚市| 长治县| 旬邑县| 吴堡县| 晴隆县| 新津县| 武鸣县| 长沙县| 二连浩特市| 上犹县| 乡宁县| 松桃| 松阳县| 宁武县| 稻城县| 扶沟县| 龙胜| 上饶县| 镇康县| 格尔木市| 青岛市| 丰顺县| 甘洛县|