引言: Linux系統(tǒng)對用戶的權限定義比較嚴格,root用戶具有至高無上的權限。管理員一般先以普通用戶身份登錄,需要時再利用su命令切換到root用戶身份。普通用戶如果需要更高權限,則可以由管理員通過sudo命令對其授權。本文將介紹su和sudo命令在Linux運維工作中的一些常見用法
Linux系統(tǒng)對用戶的權限定義比較嚴格,root用戶在系統(tǒng)中具有至高無上的權限,而普通用戶的權限則受到嚴格限制。在實際使用中,管理員一般都是先以普通用戶的身份登錄,然后當需要時再利用su命令切換到root用戶身份。對于普通用戶,如果需要執(zhí)行更高權限的命令,則可以由管理員通過sudo命令對其授權。本文將介紹su和sudo命令在Linux運維工作中的一些常見用法。
默認情況下,任何用戶只要知道了root用戶的密碼,都可以執(zhí)行su命令切換到root用戶。但是我們并不希望所有用戶都能切換到root身份,而是只想指定某個用戶可以切換,比如只允許zhangsan用戶使用su命令切換身份。
要限制使用su命令的用戶,需要進行兩個方面的設置。
首先需要啟用pam_wheel認證模塊:
這樣,凡是執(zhí)行“su -root”命令的用戶都將受到限制,只有wheel組中的成員才有權限執(zhí)行該命令。
因而下面需要做的就是將zhangsan加入到wheel組中:
這樣,當使用一個不屬于wheel組成員的賬號切換到root時,系統(tǒng)便會拒絕。
例如,使用lisi切換到root,即使輸入了正確的root用戶密碼,也會提示“密碼不正確”:
口令:
su: 密碼不正確
利用su命令切換到root身份,必須要知道root用戶的密碼。這對于管理員沒什么問題,但如果將密碼透露給一個普通用戶,則很明顯不利于系統(tǒng)安全管理,因而對于普通用戶更常使用的是sudo命令。
sudo命令的作用主要在于能夠允許經過授權的個別普通用戶以root權限執(zhí)行一些授權使用的管理命令。
比如以普通用戶zhangsan的身份創(chuàng)建用戶,系統(tǒng)會提示沒有權限:
下面讓zhangsan使用sudo命令以root權限去執(zhí)行命令。注意,普通用戶使用sudo執(zhí)行命令時,會要求提供自己的密碼進行驗證。
zhangsan使用sudo命令仍然無法創(chuàng)建用戶,這是因為在Linux中只有被授權的用戶才能執(zhí)行sudo命令,而且使用sudo也只能執(zhí)行那些被授權過的命令。
所以,要使用sudo命令,首先必須要經過管理員的授權設置,需要修改配置文件“/etc/sudoers”,sudoers文件的基本配置格式如圖1所示。
圖 1 sudoers文件的配置格式
例如授權普通用戶zhangsan可以通過sudo方式執(zhí)行所有的命令:
授權普通用戶lisi可以執(zhí)行/sbin/和/usr/sbin/目錄中的所有命令:
注 意,“/etc/sudoers”是 一個只讀文件,修改完成保存退出時,要使用“wq!”命令。
如果希望用戶只能執(zhí)行部分命令,可以在“/etc/sudoers”中指定用戶所能執(zhí)行的命令的文件路徑,命令的文件路徑可以通過which命令查找。
例如:授權zhangsan只能執(zhí)行 useradd、userdel和passwd命令:
用戶每次在執(zhí)行sudo命令時,都要輸入自己的密碼,為了省去普通用戶執(zhí)行sudo命令時需要輸入密碼的麻煩,可以在“/etc/sudoers”進行如下設置:
除了針對用戶授權之外,我們也可以對用戶組授權,這樣用戶組內的所有成員用戶就都具有了執(zhí)行sudo命令的權限。如果授權的對象是用戶組,需要在組名的前面加上“%”。
例如:授權managers組內的成員用戶可以添加、刪除用戶賬號:
% managersALL=NOPASSWD:/usr/sbin/useradd,/usr/sbin/userdel,/usr/bin/passwd,! /usr/bin/passwd
圖2 查看用戶被授權執(zhí)行的命令
圖3 命令測試結果
最后,我們以zhangsan的身份登錄系統(tǒng),執(zhí)行“sudo-l”命令可以查看當前用戶被授權執(zhí)行的命令(如圖2)。進行命令測試,發(fā)現zhangsan可以更改普通用戶lisi的密碼,即使密碼不符合安全規(guī)則也同樣可以設置成功,這證明zhangsan是在以root用戶的權限執(zhí)行passwd命令。而當zhangsan試圖更改root用戶的密碼時,系統(tǒng)則提示沒有權限。測試結果如圖3所示。