網頁

2013年3月15日 星期五

suid、sgid、sticky權限概述


  • 在linux系街中還存在一個比較特殊的set權限,set權限可以分為:suid、guid、sticky權限3種。雖然這3種權限很少使用,但一些特殊時侯這3種權限卻很方便(例如需要普通用戶幫root用戶執行一項任務時)。
    • 注意:由於set權限很容易發生安全問題,某些系統可能會出於安全方面的考慮,修改或禁止使用這些權限。
  • 【suid,sgid權限及其使用方法】
    • 有時可能希望以某個用戶的身份執行一個腳本或命令,例如root用戶編寫了一個用於備份的腳本,並希望普通用戶能執行這個備份腳本。存在的問題是,普通用戶可能沒有權限讀取這些需要備份的文件,如果因此修改需要備份的文件的訪問權限是不明智的。像這樣的情形下,就可以使用set權限(由於這3個權限名稱都以s開頭,許多時侯也稱為s權限),包含s權限的程序或腳本運行時,其訪問文件的權限與程序、腳本的屬主或屬組的訪問權限相同。
      • set權限的例子
        • 一個最典型的例子是普通用戶修改密碼或default shell等設置時,需要修改系統用戶文件/etc/passwd和影子文件/etc/shadow.你可以查看一下/usr/bin/passwd,/usr/bin/chsh你會發現屬主權限中是以s表示。即表示是一個suid的權限設置;一個sgid是屬組權限設置。
  • 設置s權限
    • s權限可以設為以屬主的文份運行,也可以以屬組的身份運行。
      • chmod u+s test.sh 
        • 設定suid權限
      • chmod g+s test.sh
        • 設定sgid權限
      • 在絕對模式中,使用第4各權限位來表示s權限;若為4表示suid,若為2表示sgid,若為6表示suid+sgid
      • 就使用小寫s表示有s權限和執行權限;如果原文件沒有可執行權限,則用大寫字母S表示具有s權限並且沒有執行權限。
  • 【sticky權限應用】
    • 我們可能希望某個目錄中的文件,其他用戶能夠寫入,但不能刪除,這時可以給相應的目錄加上sticky權限,這樣其他用戶就能使用該目錄中具有寫入權限的文件,但不能刪除這些文件。由於sticky權限能阻止用戶刪除文件,所以經常被稱為為刪除位。在系統臨時目錄/tmp中有許多文件,這些文件都是用戶及其應用程序使用的臨時文件。任何人都能夠編輯這個目錄中具有寫權限的文件,但只有屬主才能刪除這些文件。這是因為/tmp目錄具有sticky權限。
    • 設置sticky權限
      • chmod o+t file 
        • file是一個目錄;使用o+t表示為目錄加入防刪除位
      • 在絕對權式中,使用數字1表示防刪除位。
        • chmod 1777 file
      • 用小寫的t表示原目錄有可執行權限和sticky權限,字母大寫的T表示目錄沒有可執行權限但具有sticky權限。











沒有留言:

張貼留言