Categories: Linux

Ubuntu Linux 設定 sudo 使用者、群組教學與範例

介紹如何修改 Ubuntu Linux 系統的 sudo 設定,管理可取得 root 權限的使用者與群組。

新增可用 sudo 的使用者

由於 Ubuntu Linux 系統上預設是以 sudo 這個特殊群組在管理可用 sudo 指令的使用者,所以若要新增一位可以使用 sudo 的使用者,只要將使用者加入 sudo 群組即可。

若在 CentOS Linux 系統中,其用來管理 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 使用者使用 sudooperator 使用者權限或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

參考資料:TecmintDigitalOcean

Share
Published by
Office Guide

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

9 個月 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

9 個月 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

9 個月 ago

Windows 使用 TPM 虛擬智慧卡保護 SSH 金鑰教學與範例

本篇介紹如何在 Windows...

10 個月 ago

Linux 以 Shamir’s Secret Sharing 分割保存金鑰教學與範例

介紹如何在 Linux 中使用...

11 個月 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

11 個月 ago