UNIX SUDO

2018-11-24 15:22 更新

Sudo 可以給用戶一些超級(jí)用戶的權(quán)限而不需要 root 密碼。Sudo 對(duì)于一個(gè)服務(wù)器和工作站混合的多用戶環(huán)境來說非常有用。使用 sudo 運(yùn)行命令:

# sudo /etc/init.d/dhcpd restart            # 用 root 權(quán)限運(yùn)行 rc 腳本
# sudo -u sysadmin whoami                   # 使用其他用戶運(yùn)行命令

配置

Sudo 的配置在 /etc/sudoers 中,并且只能用 visudo 編輯。其基本語法是(列表是以逗號(hào)分隔的):

user hosts = (runas) commands          # 在 /etc/sudoers 中
  • users 一個(gè)或多個(gè)用戶或是%用戶組(像 %wheel) 來獲得權(quán)限

  • hosts 主機(jī)列表(或 ALL)

  • runas 列出用戶以何種身份(或 ALL)來執(zhí)行命令,放在 ( ) 內(nèi)!

  • commands 列出可被 users 以 runas 或 root 權(quán)限運(yùn)行的命令(或 ALL)

另外一些關(guān)鍵字可以定義別名,他們是 User_Alias, Host_Alias, Runas_Alias 和 Cmnd_Alias。這對(duì)于一些較大的設(shè)置比較有用。下面是 sudoers 例子:

# cat /etc/sudoers
# 主機(jī)別名
Host_Alias   DMZ     = 212.118.81.40/28
Host_Alias   DESKTOP = work1, work2
# 用戶別名 和 runas 別名
User_Alias   ADMINS  = colin, luca, admin
User_Alias   DEVEL   = joe, jack, julia
Runas_Alias  DBA     = oracle,pgsql
# 命令別名,其值為全路徑命令
Cmnd_Alias   SYSTEM  = /sbin/reboot,/usr/bin/kill,/sbin/halt,/sbin/shutdown,/etc/init.d/
Cmnd_Alias   PW      = /usr/bin/passwd [A-z]*, !/usr/bin/passwd root # Not root pwd!
Cmnd_Alias   DEBUG   = /usr/sbin/tcpdump,/usr/bin/wireshark,/usr/bin/nmap

# 一個(gè)真實(shí)的規(guī)則
root,ADMINS  ALL     = (ALL) NOPASSWD: ALL    # ADMINS 別名中的用戶可做任何事情不需要密碼
DEVEL        DESKTOP = (ALL) NOPASSWD: ALL    # 開發(fā)人員可在 DESKTOP 別名的主機(jī)上做任何事情
DEVEL        DMZ     = (ALL) NOPASSWD: DEBUG  # 開發(fā)人員可以在 DMZ 別名的主機(jī)上使用 DEBUG 別名中的命令

# 用戶 sysadmin 可以在 DMZ 服務(wù)器上執(zhí)行一些命令
sysadmin     DMZ     = (ALL) NOPASSWD: SYSTEM,PW,DEBUG
sysadmin     ALL,!DMZ = (ALL) NOPASSWD: ALL   # 可以在非 DMZ 主機(jī)上做任何事情
%dba         ALL     = (DBA) ALL              # 用戶組 dba 可以運(yùn)行 DBA 別名中用戶權(quán)限的所有命令
# 所有用戶可以在 DESKTOP 別名的主機(jī)上 掛載/卸載 CD-ROM
ALL          DESKTOP = NOPASSWD: /sbin/mount /cdrom,/sbin/umount /cdrom
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)