Linux下如何配置普通用户的sudo命令权限?

CodeWanderlust
• 阅读 765

背景

在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  

解释下每一列的含义:

  • 第一列表示用户名,如 rootubuntu 等;
  • 第二列,等号左边的 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

点赞
收藏
评论区
推荐文章
芝士年糕 芝士年糕
3年前
Linux修改MySQL数据库密码
我使用的是centos7.91.修改数据库配置文件,使之登录不需要密码此操作需要具备服务器root账户权限1.1切换Linux系统的root用户注:如果当前使用的是root账户,即不需要再切换su1.2定位配置文件位置
芝士年糕 芝士年糕
3年前
Linux修改MySQL数据库密码
我使用远程3A服务器进行操作1.修改数据库配置文件,使之登录不需要密码此操作需要具备服务器root账户权限1.1切换Linux系统的root用户注:如果当前使用的是root账户,即不需要再切换su1.2定位配置文件位置
Wesley13 Wesley13
3年前
ubuntu 搭建ftp服务器,可以通过浏览器访问,filezilla上传文件等功能
搭建ftp服务器1:首先,更新软件源,保证源是最新的,这样有利于下面在线通过aptgetinstall命令安装ftp。2:使用sudoaptgetinstallvsftp命令安装vsftp,安装软件需要root权限,我们使用sudo来暂时获取。3:安装好ftp后默认是会自动创建ftp用户的,然后我们设置ftp用户的
Stella981 Stella981
3年前
Linux系统有7个运行级别(runlevel)
命令chkconfig:查看、增加、删除、修改服务运行级别命令ntsysv:更改当前服务启动设置Linux系统有7个运行级别(runlevel)运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆运行级别2:多用户状态(没有NFS)运行级
Stella981 Stella981
3年前
CentOS7 安装 httpd 服务
安装httpd服务输入下面命令安装httpd服务,注意要使用带有root权限的用户,我是从普通用户切回超级用户root再开始执行命令的:yumyinstallhttpd报错:Cannotfindavalidbaseurlforrepo:base/7/x86\_6上网查找问题,
Stella981 Stella981
3年前
Linux 用户及权限详解
Linux用户及权限详解用户,组,权限安全上下文(securecontext);权限:r,w,x文件:r:可读,可以使用类似cat等命令查看文件内容。w:可写,可以编辑或删除此文件;x:可执行,eXcutable,可以命令提示符下当做命令提交给内核运行;
Stella981 Stella981
3年前
Linux基本命令
Linux命令一、命令基本格式命令提示符root@localhost~其中:root:当前用户localhost:当前主机名~:当前用户的根目录(所在目录)
Wesley13 Wesley13
3年前
2.18 特殊权限set_uid 2.19 特殊权限set_gid 2.20 特殊权限stick_bit 2.21 软链接文件 2.22 硬连接文件
set\_uid权限说明:setuid权限针对二进制可执行文件,使文件在执行阶段具有文件所有者的权限。比如passwd这个命令就具有该权限。当普通用户执行passwd命令时,可以临时获得root权限,从而可以更改密码。作用:setuid的作用是保证普通用户临时拥有该命令所有者的身份。给一个文件设置成setuid,前提这个文件是一个二
胖大海 胖大海
2年前
Linux 用户管理
用户配置文件/etc/passwd用户的家目录普通用户:/home/用户名/,所有者和所属组都是此用户,权限是700。超级用户:/root/,所有者和所属组都是root用户,权限是550。用户管理命令useradd\修改用户密码passwd 用户名删除用户userdel 用户名    删除用户userdel r 用户名  连同家目录一起删
通过linux-PAM实现禁止root用户登陆的方法
前言在linux系统中,root账户是有全部管理权限的,一旦root账户密码外泄,对于服务器而言将是致命的威胁;出于安全考虑,通常会限制root账户的登陆,改为配置普通用户登陆服务器后su切换到root账户使用,这种方式较为安全,限制roo
江湖有缘 江湖有缘
1年前
Linux系统之普通用户sudo提权配置
Linux系统之普通用户sudo提权配置