Linux下如何配置普通用戶的sudo命令權限?
?背景
在Linux系統(tǒng)操作時,通常不會直接采用root用戶。但當某些命令需要root權限執(zhí)行時,往往會通過sudo命令提升當前用戶的執(zhí)行權限來完成。
如果普通用戶并未進行配置相應的配置,則在使用sudo命令時會提示“xxx 不在 sudoers 文件中。此事將被報告。“
本篇文章就帶大家實踐一下如何對普通用戶配置sudo命令執(zhí)行的權限。
sudo命令權限配置
sudo? 的英文全稱是 super user do?,即以超級用戶(root 用戶)的方式執(zhí)行命令。用戶是否擁有sudo?命令的執(zhí)行權限,要看是否在于 /etc/sudoers 文件進行了設置。
/etc/sudoers? 是一個文本文件,有其特定的語法,不要直接用 vim? 或者 vi? 來進行編輯,而是采用 visudo 命令。需要注意的是只有root用戶有該命令的執(zhí)行權限。
切換到root用戶,命令行輸入 visudo? ,即可直接進入/etc/sudoers 的編輯頁面。
[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 等;
- 第二列,等號左邊的ALL 表示允許從任何主機登錄當前的用戶賬戶;
- 第二列,等號右邊的ALL 表示:第一列的用戶可以切換到系統(tǒng)中任何一個其它用戶;
- 第三列,ALL? 表示:第一列的用戶能以root用戶的身份下達什么命令,ALL 表示可以下達任何命令。
- ubuntu用戶第三列有一個NOPASSWD? 關鍵字,表明ubuntu用戶在請求sudo 時不需要輸入密碼。
如果你的用戶在切換時,如果出現(xiàn)”不在 sudoers 文件中“的警告信息,那么核查一下,對應的用戶應該沒有在該文件中進行配置,因此也無法使用 sudo 命令。
參考ubuntu用戶的配置,將需要提升權限的用戶(比如test_user)添加到 /etc/sudoers 文件中:
test_user ALL=(ALL:ALL) ALL # test_user 使用sudo需要提供test_user的密碼
上面配置在執(zhí)行sudo時需要提供密碼,那么不需要提供密碼配置方式如下:
test_user ALL=(ALL:ALL) NOPASSWD:ALL # test_user 使用sudo需要提供test_user的密碼
添加完畢,esc退出編輯,執(zhí)行:wq,退出并保存。
此時切換到test_user用戶,執(zhí)行需要root權限的命令時,前面添加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)可以正常使用了。
小結
針對普通用戶臨時提升權限執(zhí)行命令的場景,只需在 /etc/sudoers? 文件中進行配置即可。網(wǎng)絡上也有其他的配置方案,但未使用visudo?命令,而是先對 /etc/sudoers 文件進行全變更,然后再進行修改,最后再將權限變更回去。雖然也能實現(xiàn)同樣的修改功能,但繞的太遠了。讀完這篇文章的朋友,現(xiàn)在你已經(jīng)解鎖了新的、更方便的命令。