背景
在 Linux 零碎操作时,通常不会间接采纳 root 用户。但当某些命令须要 root 权限执行时,往往会通过 sudo
命令晋升以后用户的执行权限来实现。
如果普通用户并未进行配置相应的配置,则在应用 sudo
命令时会提醒“xxx 不在 sudoers 文件中。此事将被报告。“
本篇文章就带大家实际一下如何对普通用户配置 sudo
命令执行的权限。
sudo 命令权限配置
sudo
的英文全称是 super user do
,即以超级用户(root 用户)的形式执行命令。用户是否领有 sudo
命令的执行权限,要看是否在于 /etc/sudoers
文件进行了设置。
/etc/sudoers
是一个文本文件,有其特定的语法,不要间接用 vim
或者 vi
来进行编辑,而是采纳 visudo
命令。须要留神的是只有 root 用户有该命令的执行权限。
切换到 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
示意:第一列的用户能够切换到零碎中任何一个其它用户; - 第三列,
ALL
示意:第一列的用户能以 root 用户的身份下达什么命令,ALL
示意能够下达任何命令。 - ubuntu 用户第三列有一个
NOPASSWD
关键字,表明 ubuntu 用户在申请sudo
时不须要输出明码。
如果你的用户在切换时,如果呈现”不在 sudoers 文件中“的正告信息,那么核查一下,对应的用户应该没有在该文件中进行配置,因而也无奈应用 sudo
命令。
参考 ubuntu 用户的配置,将须要晋升权限的用户(比方 test_user)增加到 /etc/sudoers
文件中:
test_user ALL=(ALL:ALL) ALL # test_user 应用 sudo 须要提供 test_user 的明码
下面配置在执行 sudo 时须要提供明码,那么不须要提供明码配置形式如下:
test_user ALL=(ALL:ALL) NOPASSWD:ALL # test_user 应用 sudo 须要提供 test_user 的明码
增加结束,esc 退出编辑,执行:wq
,退出并保留。
此时切换到 test_user 用户,执行须要 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
能够看到,当初 sudo
命令曾经能够失常应用了。
小结
针对普通用户长期晋升权限执行命令的场景,只需在 /etc/sudoers
文件中进行配置即可。网络上也有其余的配置计划,但未应用 visudo
命令,而是先对 /etc/sudoers
文件进行全变更,而后再进行批改,最初再将权限变更回去。尽管也能实现同样的批改性能,但绕的太远了。读完这篇文章的敌人,当初你曾经解锁了新的、更不便的命令。
博主简介:《SpringBoot 技术底细》技术图书作者,热爱钻研技术,写技术干货文章。
公众号:「程序新视界」,博主的公众号,欢送关注
技术交换:请分割博主微信号:zhuan2quan