介紹如何修改 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