sudoers設定檔


/etc/sudoers 設定檔

sudo 可以在不需要 root 密碼的情況下取得 root 權限,當然在正常的 Linux 系統中不可能讓所有的使用者都可以使用 sudo,它是依據 /etc/sudoers 設定檔來管控的,只有在這個檔案中有被特別設定的使用者或群組才能使用 sudo 指令。

在編輯/etc/sudoers的時候,請使用visudo這個指令來開啟vi編輯器進行編輯,系統會在編輯完成後自動檢查設定檔的語法是否正確,避免錯誤的語法導致sudo無法使用。

1.個別使用者設定

設定格式如下:

帳號名稱    來源主機=(可切換帳號) 可執行的指令

其中四的欄位的意義為:

帳號名稱

可以使用 sudo 的帳號名稱。

來源主機

限制使用者從特定網路主機連線時,才能使用 sudo 指令,可用來防止入侵者從不明的主機登入攻擊。若指定為 ALL 則代表不限制來源主機。

可切換帳號

可以取得哪些帳號的權限。若指定為 ALL 則代表可以取得任何帳號的權限。

可執行的指令

在取得特殊權限後,可以執行的指令。若指定為 ALL 則代表可以執行任何令。

範例說明:

若要讓 gtwang 這個帳號可以使用 sudo 執行所有的指令,則在 /etc/sudoers 中加入這一行設定:

gtwang    ALL=(ALL) ALL

基本上讓使用者允許使用 sudo 指令取得 root 權限,就等同於讓該使用者成為一位系統管理者了,所以別隨便開放 sudo 給一般的使用者,尤其是對於 Linux 不甚熟悉的人。

假設 accmgr 這個管理者是專門幫使用者重新這定密碼的,我們就可以透過這樣的設定限制 accmgr 這個管理者只能使用 root 權限執行 passwd 來更改使用者的密碼,而不能做其他的事情

accmgr  ALL=(root) /usr/bin/passwd

上面這種寫法有一個漏洞,就是 accmgr 也可以更改 root 帳號的密碼,如果 root 的密碼可被任意更改,整個系統的管理權限也會被取得,所以我們必須防止 accmgr 更動 root 的密碼

accmgr  ALL=(root) !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root

這裡我們將可執行的指令加上更多的限制,首先是不可以直接執行 /usr/bin/passwd,僅允許 /usr/bin/passwd 加上一般的使用者帳號,然後將 /usr/bin/passwd root 這個更改 root 密碼的指令也禁止。

2.群組設定

如果要對特定群組底下的所有帳號一次開放權限,可以使用這樣的群組設定語法

%群組名稱    來源主機=(可切換帳號) 可執行的指令

群組設定的語法跟個別帳號的方式相似,只不過群組的名稱在指定時前面要加上一個百分比 % 的符號,而其餘欄位則都相同。例如若要讓 wheel 群組中的所有使用者都可以使用 sudo,則加入:

%wheel  ALL=(ALL) ALL

3.不用輸入密碼

如果想要讓特定的使用者可以在不需要輸入密碼的情況下,直接使用 sudo,可以加入 NOPASSWD 的設定,例如:

gtwang  ALL=(ALL) NOPASSWD:ALL

讓整個群組的使用者都不需要密碼

%wheel  ALL=(ALL) NOPASSWD:ALL

在沒有加入 NOPASSWD 的設定之下,如果使用者在五分鐘之內連續使用 sudo 好幾次,那麼只有在第一次使執行時需要輸入密碼,隨後再次執行 sudo 時,系統就不會要求使用者重複輸入,這樣的設計是預設五分鐘之內連續執行的指令應該都是同一人所為,所以不用再次輸入密碼,但若是超過五分鐘之後,就要重新驗證密碼。

4.使用別名

有的時候 /etc/sudoers 的設定比較複雜,例如遇到很多的使用者以及指令組合的狀況時,我們可以使用別名(alias)的方式來管理設定:

User_Alias MYACC = accmgr, gtwang, seal
Cmnd_Alias MYEXE = !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
MYACC   ALL=(root)  MYEXE

這裡我們使用 User_Alias 建立一個帳號別名 MYACC,其內容就是等號後方的那些帳號名稱,而 Cmnd_Alias 則是建立指令的別名,若要建立來源主機的別名則可用 Host_Alias,所有的別名都要以大寫英文字母來命名,這樣的話就可以將冗長的設定簡化,並且重複使用,日後要修改也會比較方便。

results matching ""

    No results matching ""