sudo的權(quán)限控制可以在/etc/sudoers文件中查看到。一般來(lái)說(shuō),通過(guò)cat /etc/sudoers指令來(lái)查看該文件, 會(huì)看到如下幾行代碼:
root ALL=(ALL:ALL) ALL
%wheel ALL=(ALL) ALL
%sudo ALL=(ALL:ALL) ALL
對(duì)/etc/sudoers文件進(jìn)行編輯的代碼公式可以概括為:
授權(quán)用戶/組 主機(jī)=[(切換到哪些用戶或組)] [是否需要輸入密碼驗(yàn)證] 命令1,命令2,...
凡是[ ]中的內(nèi)容, 都能省略; 命令和命令之間用,號(hào)分隔给猾,為了方便說(shuō)明, 將公式的各個(gè)部分稱呼為字段1 - 字段5:
授權(quán)用戶/組 主機(jī) =[(切換到哪些用戶或組)] [是否需要輸入密碼驗(yàn)證] 命令1,命令2,...
字段1 字段2 =[(字段3)] [字段4] 字段5
[ ]中的內(nèi)容, 都能省略
字段1
不以%號(hào)開(kāi)頭的表示"將要授權(quán)的用戶", 比如例子中的root仗谆;以%號(hào)開(kāi)頭的表示"將要授權(quán)的組", 比如例子中的%wheel組 和 %sudo組城须。
字段2
表示允許登錄的主機(jī), ALL表示所有; 如果該字段不為ALL,表示授權(quán)用戶只能在某些機(jī)器上登錄本服務(wù)器來(lái)執(zhí)行sudo命令. 比如:
jack mycomputer=/usr/sbin/reboot,/usr/sbin/shutdown
表示: 普通用戶jack在主機(jī)(或主機(jī)組)mycomputer上, 可以通過(guò)sudo執(zhí)行reboot和shutdown兩個(gè)命令。"字段3"和"字段4"省略律姨。
字段3
如果省略, 相當(dāng)于(root:root),表示可以通過(guò)sudo提權(quán)到root; 如果為(ALL)或者(ALL:ALL), 表示能夠提權(quán)到(任意用戶:任意用戶組)臼疫。請(qǐng)注意线召,"字段3"如果沒(méi)省略,必須使用( )雙括號(hào)包含起來(lái)。這樣才能區(qū)分是省略了"字段3"還是省略了"字段4"多矮。
字段4
的可能取值是NOPASSWD:缓淹。請(qǐng)注意NOPASSWD后面帶有冒號(hào):。表示執(zhí)行sudo時(shí)可以不需要輸入密碼塔逃。比如:
lucy ALL=(ALL) NOPASSWD: /bin/useradd
表示: 普通用戶lucy可以在任何主機(jī)上, 通過(guò)sudo執(zhí)行/bin/useradd命令, 并且不需要輸入密碼讯壶。又比如:
peter ALL=(ALL) NOPASSWD: ALL
表示: 普通用戶peter可以在任何主機(jī)上, 通過(guò)sudo執(zhí)行任何命令, 并且不需要輸入密碼。
字段5
是使用逗號(hào)分開(kāi)一系列命令,這些命令就是授權(quán)給用戶的操作; ALL表示允許所有操作湾盗。
命令都是使用絕對(duì)路徑, 這是為了避免目錄下有同名命令被執(zhí)行伏蚊,從而造成安全隱患。如果你將授權(quán)寫(xiě)成如下安全性欠妥的格式:
lucy ALL=(ALL) chown,chmod,useradd