2014-02-06 170 views
2

我正試圖修復Debian服務器上的一些權限問題。我的一個團隊中的某個人正在改變權限,並且在這個過程的某個地方,事情被搞砸了。每當我現在sudo,我得到這個錯誤信息/警告:Sudo錯誤消息

sudo: /var/lib/sudo writable by non-owner (040720), should be mode 0700 

我對括號中的數字感到困惑。這是什麼意思?另外,可能運行了什麼命令來設置這些權限?應如何設置這些權限?

/var/lib/sudo權限是:

drwx-w---- 5 root  sudo 4096 Feb 4 02:36 sudo 

我理解的意思:這個目錄是由須藤組讀取根寫的可執行文件,並且寫的,且爲用戶剩下沒有特權。它是否正確?

回答

3

許可模式的最後三個數字分別是所有者,組和其他用戶,並且是一個總和下列值:

4是用於讀(R)

2是用於寫(W)

1是用於執行(x)

所以,如果在/ var/lib中/蘇伯是*** 720,這意味着:

  • 所有者權限= 7 = 4 + 2 + 1 =讀+寫+執行
  • 組權限= 2 =寫出
  • 其他權限= 0 =沒有權限。

所以,是的,你對這條產出線的解釋是正確的。

文件模式與chmod命令

chmod MODE FILE 

改變現在,有趣的事情是,你可以指定模式作爲一個八進制數字或一個以上的人可讀的字符串(閱讀以下)。要修復警告,您可以chmod 700 /var/lib/sudo,或更可能的sudo chmod 700 /var/lib/sudo

更可讀的形式需要更多一點的說明中,雖然:

  1. 使用ug,或o來指示用戶,組,或其他
  2. 使用+-授予或撤銷權限
  3. 使用rwx進行讀取,寫入或執行。

所以這裏會是chmod g-w /var/lib/sudo,其中,在僞英語,內容變化模式:該組撤銷的/ var/lib中/須藤的寫入。

4

040720值是在inode(st_mode元素爲struct stat)中存儲權限和文件類型信息的16位值的八進制表示形式。 4個最低有效(八進制)數字表示權限,其他數字表示文件類型。通過推斷,040表示'目錄'。 0720權限是讀取,寫入,執行用戶(所有者),寫入組(寫入正在被抱怨的內容),並且不允許其他人訪問。 0720的前0表示setuid,setgid和sticky位全部爲零。

您可以通過運行以下命令來修復錯誤報告:

sudo chmod 700 /var/lib/sudo 

你可能想這樣做遞歸(chmod -R),但持謹慎態度使數據文件的可執行文件,不應該。您可能需要修復所有者;該目錄由root正確擁有,但您可能需要修復目錄下的所有者。對於這一點,你可以用它來設置這兩個用戶(root)和組(sudo):

sudo chown -R root:sudo /var/lib/sudo