介紹如何修改 Ubuntu Linux 系統的 sudo
設定,管理可取得 root
權限的使用者與群組。
新增可用 sudo
的使用者
由於 Ubuntu Linux 系統上預設是以 sudo
這個特殊群組在管理可用 sudo
指令的使用者,所以若要新增一位可以使用 sudo
的使用者,只要將使用者加入 sudo
群組即可。
sudo
權限的群組是 wheel
。首先以 adduser
新增一個普通的 Linux 帳號:
# 新增使用者帳號
sudo adduser newuser
在設定好基本的帳號資訊之後,若要讓此帳號可以使用 sudo
,只要將該帳號加入 sudo
群組即可:
# 將 newuser 加入 sudo 群組 sudo usermod -aG sudo newuser
接著切換為該使用者的權限,測試該使用者是否可以正常使用 sudo
執行指令:
# 切換為 newuser 帳號權限 sudo su - newuser # 測試 newuser 帳號是否可以使用 sudo sudo ls -la /root
撤除使用者的 sudo
使用權限
若要將指定使用者的 sudo
使用權限撤除,只要將該使用者從 sudo
群組中移除即可:
# 將 newuser 從 sudo 群組移除
sudo deluser newuser sudo
限制 sudo
執行的指令
Ubuntu Linux 預設的 sudo
群組只能設定讓使用者取的最高的 root
權限,如果需要針對特殊的使用者依據不同指令給予不同的執行權限,就需要使用 visudo
編輯 /etc/sudoers
設定檔。
設定個別使用者 sudo
執行權限的語法如下:
使用者 主機=(使用者權限:群組權限) 指令
若要指定多個不同的指令,則以逗點分隔。使用者權限
與群組權限
若省略的話,預設會允許以 root
權限來執行。
假設我們想讓允許 myuser
使用者使用 sudo
以 operator
使用者權限或admin
群組權限執行 /bin/ls
、以 root
權限執行 /bin/kill
與 /usr/bin/lprm
,可以這樣寫:
# 允許 myuser 使用者使用 sudo 以 operator 使用者權限或 admin 群組權限執行 /bin/ls, # 以 root 權限執行 /bin/kill 與 /usr/bin/lprm myuser ALL=(operator:admin) /bin/ls, (root) /bin/kill, /usr/bin/lprm
新增可用 sudo
的群組
若要讓指定群組內的所有人都可以使用 sudo
取得 root
權限,可以使用 visudo
編輯 /etc/sudoers
,授權整個群組使用 sudo
,其語法如下:
%群組 主機=(使用者權限:群組權限) 指令
若要允許 mygroup
群組中的使用者使用 sudo
以任何權限執行任何指令,可以加入以下設定:
# 允許 mygroup 群組中的使用者使用 sudo 以任何權限執行任何指令 %mygroup ALL=(ALL:ALL) ALL
群組亦可針對不同指令給予不同的執行權限,多個指令之間以逗點分隔:
# 允許 mygroup 群組中的使用者使用 sudo # 以 operator 使用者權限執行 /bin/ls, # 以 root 權限執行 /bin/kill 與 /usr/bin/lprm %mygroup ALL=(operator) /bin/ls, (root) /bin/kill, /usr/bin/lprm
不用密碼執行 sudo
如果希望使用者在使用 sudo
時不需要輸入密碼,可以在設定檔中加上 NOPASSWD
設定:
# 允許 myuser 使用者不需要密碼使用 sudo 執行任何程式 myuser ALL=(ALL:ALL) NOPASSWD: ALL # 允許 mygroup 群組中的使用者不需要密碼使用 sudo 執行任何程式 %mygroup ALL=(ALL:ALL) NOPASSWD: ALL
亦可設定某些指令需要密碼,某些不需要:
# 允許 myuser 使用者不需要密碼使用 sudo 以 root 權限執行 /bin/kill, # 以 root 權限執行 /bin/ls 與 /usr/bin/lprm 則需要密碼 myuser rushmore = NOPASSWD: /bin/kill, PASSWD: /bin/ls, /usr/bin/lprm
密碼有效時間
當使用者執行一次 sudo
並輸入密碼成功執行之後,預設在 15 分鐘之內若再次執行 sudo
就不需要再輸入一次密碼,若想要更改這個密碼的有效時間,可以修改 /etc/sudoers
設定檔的 timestamp_timeout
參數:
# 設定密碼有效時間為 30 分鐘 Defaults:USER timestamp_timeout=30
密碼嘗試次數
sudo
預設只讓使用者嘗試輸入密碼三次,若要更改此設定值,可以修改 /etc/sudoers
設定檔的 passwd_tries
參數:
# 設定密碼輸入嘗試次數上限值 Defaults passwd_tries=5
改用目標使用者的密碼
在預設的狀況下,使用 sudo
時所輸入的密碼是目前使用者(切換使用者權限之前的使用者)的密碼,如果要改成輸入切換目標使用者的密碼,可以設定 targetpw
參數:
# 輸入目標使用者密碼 Defaults targetpw
參考資料:Tecmint、DigitalOcean