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


    背景

    在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
    
    • 1

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

    # 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  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    解释下每一列的含义:

    • 第一列表示用户名,如 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的密码  
    
    • 1

    上面配置在执行sudo时需要提供密码,那么不需要提供密码配置方式如下:

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

    添加完毕,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
    
    • 1
    • 2
    • 3

    可以看到,现在 sudo 命令已经可以正常使用了。

    小结

    针对普通用户临时提升权限执行命令的场景,只需在 /etc/sudoers 文件中进行配置即可。网络上也有其他的配置方案,但未使用visudo命令,而是先对 /etc/sudoers 文件进行全变更,然后再进行修改,最后再将权限变更回去。虽然也能实现同样的修改功能,但绕的太远了。读完这篇文章的朋友,现在你已经解锁了新的、更方便的命令。

    博主简介:《SpringBoot技术内幕》技术图书作者,酷爱钻研技术,写技术干货文章。

    公众号:「程序新视界」,博主的公众号,欢迎关注

    技术交流:请联系博主微信号:zhuan2quan


    微信公众号:程序新视界

    程序新视界”,一个100%技术干货的公众号

  • 相关阅读:
    MCU常见通信总线串讲(二)—— RS232和RS485
    Vite 启动默认只能访问localhost解决方法
    MySQL8-主从搭建
    卡特兰数(Catalan number)
    1封开发信收获7个客户订单,怎么做到21%回复率的?(内涵英文邮件模板)
    金仓数据库KingbaseES数据库开发指南(2. 开发基础)
    @ControllerAdvice + ResponseBodyAdvice实现返回统一结构
    经典算法学习之-----顺序查找
    element ui 中文离线文档(百度云盘下载)
    CREO:CREO软件之工程图【布局】之一般视图、投影视图、详细视图、局部剖视图、向视图、局部放大视图、旋转剖视图的简介及其使用方法(图文教程)之详细攻略
  • 原文地址:https://blog.csdn.net/wo541075754/article/details/126152666