背景

Linux系统操作时,一般不会直接采用root用户。但当个别命令须要root权限执行时linux设置环境变量,常常会通过sudo命令提高当前用户的执行权限来完成。

假如普通用户并未进行配置相应的配置,则在使用sudo命令时会提示“xxx不在sudoers文件中。此事将被报告。“

本篇文章就带你们实践一下怎样对普通用户配置sudo命令执行的权限。

sudo命令权限配置

sudo的中文全称是superuserdo,即以超级用户(root用户)的形式执行命令。用户是否拥有sudo命令的执行权限,要看是否在于/etc/sudoers文件进行了设置。

/etc/sudoers是一个文本文件,有其特定的句型,不要直接用vim或则vi来进行编辑,而是采用visudo命令。须要注意的是只有root用户有该命令的执行权限。

Linux sudoers 文件配置_sudo命令权限设置方法_linux登录其它用户

切换到root用户,命令行输入visudo,即可直接步入/etc/sudoers的编辑页面。

[root@iZ2zedonrtl5m2zsh6tr1xZ ~]# visudo

忽视掉其他配置信息,直接查看顶部如下信息:

# User privilege specification  
root    ALL=(ALL:ALL) ALL  
  

sudo命令权限设置方法_Linux sudoers 文件配置_linux登录其它用户

# 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:

linux登录其它用户_Linux sudoers 文件配置_sudo命令权限设置方法

#includedir /etc/sudoers.d ubuntu ALL=(ALL:ALL) NOPASSWD: ALL

解释下每一列的涵义:

假如你的用户在切换时,假若出现”不在sudoers文件中“的警告信息,这么核查一下,对应的用户应当没有在该文件中进行配置,因而也难以使用sudo命令。

参考ubuntu用户的配置,将须要提高权限的用户(例如test_user)添加到/etc/sudoers文件中:

test_user  ALL=(ALL:ALL)  ALL   # test_user 使用sudo需要提供test_user的密码  

linux登录其它用户_sudo命令权限设置方法_Linux sudoers 文件配置

里面配置在执行sudo时须要提供密码,这么不须要提供密码配置方法如下:

test_user  ALL=(ALL:ALL)  NOPASSWD:ALL   # test_user 使用sudo需要提供test_user的密码  

添加完毕,esc退出编辑,执行:wq,退出并保存。

此时切换到test_user用户linux登录其它用户,执行须要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命令linux登录其它用户,而是先对/etc/sudoers文件进行全变更,之后再进行更改,最后再将权限变更回来。似乎也能实现同样的更改功能,但绕的太远了。读完这篇文章的同学,如今你已然解锁了新的、更便捷的命令。

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复