Linux下如何配置普通用戶的sudo命令權(quán)限?
?背景
在Linux系統(tǒng)操作時(shí),通常不會(huì)直接采用root用戶。但當(dāng)某些命令需要root權(quán)限執(zhí)行時(shí),往往會(huì)通過sudo命令提升當(dāng)前用戶的執(zhí)行權(quán)限來完成。
如果普通用戶并未進(jìn)行配置相應(yīng)的配置,則在使用sudo命令時(shí)會(huì)提示“xxx 不在 sudoers 文件中。此事將被報(bào)告。“
本篇文章就帶大家實(shí)踐一下如何對(duì)普通用戶配置sudo命令執(zhí)行的權(quán)限。
sudo命令權(quán)限配置
sudo? 的英文全稱是 super user do?,即以超級(jí)用戶(root 用戶)的方式執(zhí)行命令。用戶是否擁有sudo?命令的執(zhí)行權(quán)限,要看是否在于 /etc/sudoers 文件進(jìn)行了設(shè)置。
/etc/sudoers? 是一個(gè)文本文件,有其特定的語法,不要直接用 vim? 或者 vi? 來進(jìn)行編輯,而是采用 visudo 命令。需要注意的是只有root用戶有該命令的執(zhí)行權(quán)限。
切換到root用戶,命令行輸入 visudo? ,即可直接進(jìn)入/etc/sudoers 的編輯頁(yè)面。
[root@iZ2zedonrtl5m2zsh6tr1xZ ~]# visudo
忽略掉其他配置信息,直接查看底部如下信息:
# User privilege specification
root ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
ubuntu ALL=(ALL:ALL) NOPASSWD: ALL
解釋下每一列的含義:
- 第一列表示用戶名,如root? 、ubuntu 等;
- 第二列,等號(hào)左邊的ALL 表示允許從任何主機(jī)登錄當(dāng)前的用戶賬戶;
- 第二列,等號(hào)右邊的ALL 表示:第一列的用戶可以切換到系統(tǒng)中任何一個(gè)其它用戶;
- 第三列,ALL? 表示:第一列的用戶能以root用戶的身份下達(dá)什么命令,ALL 表示可以下達(dá)任何命令。
- ubuntu用戶第三列有一個(gè)NOPASSWD? 關(guān)鍵字,表明ubuntu用戶在請(qǐng)求sudo 時(shí)不需要輸入密碼。
如果你的用戶在切換時(shí),如果出現(xiàn)”不在 sudoers 文件中“的警告信息,那么核查一下,對(duì)應(yīng)的用戶應(yīng)該沒有在該文件中進(jìn)行配置,因此也無法使用 sudo 命令。
參考ubuntu用戶的配置,將需要提升權(quán)限的用戶(比如test_user)添加到 /etc/sudoers 文件中:
test_user ALL=(ALL:ALL) ALL # test_user 使用sudo需要提供test_user的密碼
上面配置在執(zhí)行sudo時(shí)需要提供密碼,那么不需要提供密碼配置方式如下:
test_user ALL=(ALL:ALL) NOPASSWD:ALL # test_user 使用sudo需要提供test_user的密碼
添加完畢,esc退出編輯,執(zhí)行:wq,退出并保存。
此時(shí)切換到test_user用戶,執(zhí)行需要root權(quán)限的命令時(shí),前面添加sudo即可。
[test_user@iZ2zedonrtl5m2zsh6tr1xZ ~]$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
903734808a1e hello-world "/hello" About an hour ago Exited (0) About an hour ago happy_jennings
可以看到,現(xiàn)在 sudo 命令已經(jīng)可以正常使用了。
小結(jié)
針對(duì)普通用戶臨時(shí)提升權(quán)限執(zhí)行命令的場(chǎng)景,只需在 /etc/sudoers? 文件中進(jìn)行配置即可。網(wǎng)絡(luò)上也有其他的配置方案,但未使用visudo?命令,而是先對(duì) /etc/sudoers 文件進(jìn)行全變更,然后再進(jìn)行修改,最后再將權(quán)限變更回去。雖然也能實(shí)現(xiàn)同樣的修改功能,但繞的太遠(yuǎn)了。讀完這篇文章的朋友,現(xiàn)在你已經(jīng)解鎖了新的、更方便的命令。