![]() |
![]() |
![]() |
![]() |
![]() |
root | ALL | = | (ALL) | ALL |
↑ | ↑ | ↑ | ↑ | |
帳號 | 主機 | (欲分權的帳號) | 可執行的指令 |
root | ALL | = | (ALL) | ALL |
aaa | ALL | = | (ALL) | ALL ←依樣畫葫蘆增加的行 |
↑ | ↑ | ↑ | ↑ | |
帳號 | 主機 | (欲分權的帳號) | 可執行的指令 |
aaa | ALL | = | (root) | /sbin/shutdown |
↑ | ↑ | ↑ | ↑ | |
帳號 | 主機 | (欲分權的帳號) | 可執行的指令 |
$ sudo /sbin/shutdown -k now ←如指令不在環境變數〝$PATH〞內,所下的指令要輸入路徑 Passwd: ←此輸入的為帳號〝aaa〞的密碼,並不是〝root〞的密碼哦! Broadcast message from root (tty1) (The Oct 8 12:45 2016): ←開始執行 shutdown |
%wheel ALL=(root) /sbin/shutdown |
aaa ALL=(root) NOPASSWD: /sbin/shutdown ←TAG 的地方加入 NOPASSWD: |
aaa,bbb | ALL | = | (root) | /sbin/shutdown, /sbin/halt |
↑ | ↑ | ↑ | ↑ | |
帳號 | 主機 | (欲分權的帳號) | 可執行的指令 |
帳號 | 主機 | 欲分權的帳號 |
|
|
aaa,bbb | ALL | = | (root) | /sbin/shutdown, /sbin/halt |
↑ | ↑ | ↑ | ↑ | |
User_Alias 使用者別名 |
Host_Alias 主機別名 |
Runas_Alias 操作者別名 |
Cmnd_Alias 指令別名 |
User_Alias TURN_OFF = aaa,bbb ←〝TURN_OFF〞此別名=〝aaa〞和〝bbb〞這二個帳號 TURN_OFF ALL=(root) /sbin/shutdown |
#〞開頭為註解,雖不會被 sudo 解讀但方便日後的維護,建議加註解不要偷懶 User_Alias ADMI = %wheel #↑〝ADMI〞這一別名=〝wheel〞這群組 User_Alias PRINT = ken,emma,cherry #↑〝PRINT〞這一別名 =〝ken,emma,cherry〞這三個帳號 #可用〝!〞開頭來排除別名的成員 User_Alias PT = USER, PRINT, !ken, !ADMI #↑別名〝PT〞=〝USER+PRINT"這二個別名的使用者,但排除〝ken〞這個帳號和〝ADMI〞這別名的使用者 |
User_Alias ADMI = %wheel User_Alias PRINT = ken,emma,cherry User_Alias PT = USER, PRINT, !ken, !ADMI ADMI ALL=(root) /usr/sbin/useradd, /user/sbin/userdel PRINT ALL=(ALL) /usr/sbin/lpc, /usr/sbin/lprm PT xxx=(xxx) NOPASSWD: xxx ←〝xxx〞 由 user 自行定義 |
Host_Alias LAN = 192.168.0.0/255.255.255.0 #↑This is for all of network Host_Alias SERVERS = master, mail, www Host_Alias RD_DEP = net_sw, net_hw, !SERVERS ADMI LAN=(root) /sbin/ip |
Runas_Alias PT = #505, austin, jam, !WHEEL_GRP Runas_Alias ADMIN = #0 ←〝uid〞=0 即 root %wheel ALL=(ADMIN) ALL ←用〝Runas_Alias〞取代欲分權帳號的範例 |
Cmnd_Alias SHUTDOWN_CMD = /sbin/shutdown, /sbin/halt Cmnd_Alias ACC_CMD = /usr/sbin/useradd, /usr/sbin/passwd, /usr/sbin/visudo aaa ALL=(root) SHUTDOWN_CMD ←用指令別名取代命令的範例 |
aaa ALL=(root) NOPASSWD: /sbin/shutdown, /sbin/init #↑ 帳號〝aaa〞執行的指令〝shutdown〞 不用再輸密碼 |
aaa ALL=(root) NOPASSWD: NOEXEC: /sbin/shutdown, /sbin/init #↑ 如果標籤不止一個時可再加上去 |
語法:sudo [-otpiton][--option] [USER_NAME][COMMAND] | ||
指令名稱/功能/命令使用者 | 選項 | 功能 |
sudo/ (superuser do)/ Any |
-b | 在背景執行指令 |
-E | 保留目前使用者的環境變數 | |
-H | 將 HOME 環境變數設為新身份的 HOME 環境變數 | |
-k | 再執行 sudo 時需要輸入自己的密碼 | |
-l | (小寫的 L)列出被分權的指令 | |
-p [%u][%h][%H] |
改變詢問密碼的提示符號,可接的選項有: 〝%u〞:以使用者為提示符號 〝%h〞:以主機名稱為提示符號 〝%H〞:以主機名稱 + domain 名稱為提示符號 |
|
-u <帳號> | 以指定的帳號執行指令(無此選項時預設是 root ) | |
-v | 再延長密碼有效期限 5 分鐘 | |
-V | 顯示版本訊息 | |
--help | 指令自帶說明 |
$ sudo -l ←如忘了有那些指令可透過 sudo 執行,用選項〝-l〞就對了 User aaa may run the following commands on this hust: (root) /sbin/shutdown /sbin/halt $ sudo -u lee cp fileA fileB ←雖〝sudo〞大部分是執行〝root〞授權的指令,如要指定其他授權者可用選項〝-u〞。此例〝fileB〞的檔案擁有者會變〝lee〞所有,可用於如要把某檔複製給別人修改時 |
$ sudo -k ←下次再執行 sudo 時一定要輸入密碼 $ sudo -p %u /sbin/shutdown -k now ←以使用者名稱為密碼提示符號 $ sudo -H -u smith ←HOME 環境變數設為新身份〝smith〞的 HOME 環境變數 $ sudo cd /root ←利用 sduo 執行〝cd〞指令看看 sudo: cd: command not found ←sudo 是不支援 Shell 內建指令的(〝cd〞指令為 Shell 內建) |
kevin SERVERS=(root) ALL |
# Defaults specification Defaults syslog=auth Defaults log_year, logfile=/var/log/sudo.log |
[註1A]:預設為間隔 5 分鐘內操作 sudo 就不用再輸入密碼。