• Linux权限管理— sudo授权


    sudo授权

    1、什么是sudo授权

    /sbin//usr/sbin/
    以上两个目录下命令只有超级用户才能使用。
    sudo授权:把指定的命令授权给普通用户,让普通用户可以执行指定的命令。(只给用户授权执行一个命令的权限)
    原则上:
    赋予的权限越详细,普通用户得到的权限越小。
    赋予的权限越简单,普通用户得到的权限越大。

    2、 sudo授权说明

    root身份操作:执行visudo命令,赋予普通用户权限命令,命令执行后和vi一样使用。

    1. 用户名 被管理主机的地址(IP地址)=(可使用的身份) 授权命令(绝对路径)
    2. root ALL=ALLALL
    3. 组名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
    4. %wheel ALL=ALLALL
    5. (组名前边要加上%)

    说明:

    • 用户名/组名:代表root给哪个用户或用户组赋予命令,注意组名前加"%"。
    • 被管理主机的地址:这里的IP地址管理的不是登录者来源的IP地址,这里的IP指定的是用户可以管理哪个IP地址的服务器。那么如果你是一台独立的服务器,这里写ALL和你服务器的IP地址,作用是一样的。如果写ALL,代表可以管理任何主机,如果我们这里写本机的IP地址,不代表只允许本机的用户使用指定命令,而代表指定的用户可以从任何IP地址来管理当前服务器。(这里记住写ALL就可以了)
    • 可使用身份:就是把来源用户切换成什么身份使用(就是把前面用户的身份,切换成什么身份),(ALL)代表可以切换成任意身份,包括root。这个字段可以省略,代表切换成root。
    • 授权命令:代表root把什么命令授权给普通用户。默认是ALL,代表任何命令,这个当然不行,赋予的权限越详细,普通用户得到的权限越小。不过需要注意,命令一定要写成绝对路径。

    3、举例

    1)比如授权用户user1可以重启服务器
    普通用户是无法重启服务器的,因为没有这个命令的权限。

    1. [userl@localhost ~ ] $ shutdown -r now
    2. shutdown: Need to be root

    由root用户添加如下行:
    执行执行visudo命令,赋予普通用户权限。

    1. [root@localhost ~ ] # visudo
    2. user1 ALL=(省略不写)/sbin/shutdown -r now(whereis查一下)
    3. #查看可用的授权
    4. [user1@localhost ~ ] $ sudo -1

    查看结果如下图:

    上图中蓝框前边的(root),是因为我上边配置的时候省略了等号后边的赋值,默认切换成root用户,如果我配置成ALL,(root)位置会显示成ALL。(root和ALL效果上都一样)
    还要注意一点,如果编辑授权内容是user1 ALL=/sbin/shutdown,代表user1用户可以使用shutdown所有的参数,如-r重启,-h关机。所以就向上面的说赋予的权限越详细,普通用户得到的权限越小。
    注意:配置sudo授权,不需要重启服务器,保存退出即可。

    • 普通用户如何执行呢?

    普通用户直接使用shutdown命令是不行的,需要使用sudo /sbin/shutdown -r now,才能执行。注意要使用shutdown命令的绝对路径。如下图所示。

    2)我想授权一个用户管理我的Web服务器,以后修改设置更新网页什么都不用管。
    首先要分析授权用户管理Apache,至少要实现哪些基本授权:

    • 1、可以使用Apache管理脚本
    • 2、可以修改Apache配置文件
    • 3、可以更新网页内容

    剩下的解决不了,再来找我就行了。
    假设Aapche管理脚本程序为/etc/rc.d/init.d/httpd(举例的是rpm包安装的apache)。

    • 条件一,用visudo进行授权:
    1. [root@localhost ~ ] # visudo
    2. 编辑内容
    3. user1 192. 168. 0. 156(写ALL一样)=/etc/rc. d/init. d/httpd reload

    扩展:
    reload:是重新加载配置文件的命令。如果你正在访问服务器,比如下载,先不会关闭服务器,会等你访问完成后再重启服务器。(起作用时间有时候会比较长)
    restart:重启,先把服务关了,再进行重启。如果有人正在你的服务器下程序,也直接断了。(但是常用)

    授权用户user1可以连接192.168.0.156上的Apache服务器,通过Apache管理脚本重新读取配置文件,让更改的设置生效(reload),但不允许其执行关闭(stop)、重启(restart)等操作。

    • 条件二,同样使用visudo授权:

    授权用户user1可以用root身份使用vim编辑器,编辑Apache配置文件。

    1. [root@localhost ~ ] # visudo
    2. user1 192. 168. 0. 156=/usr/bin/vim /etc/httpd/conf/httpd. conf

    以上两种sudo的设置,要特别注意,使用sudo会犯两个错误:
    第一,授权命令没有细化到选项和参数;
    第二,认为只能授权管理员执行的命令。

    • 条件三则比较简单,假设网页存放目录为/var/www/html,则只需要授权user1对此目录具有写权限或者索性更改目录所有者为user1即可。

    3)授权aa用户可以添加其他普通用户

    1. [root@localhost ~ ] # visudo
    2. # 赋予aa添加用户权限,命令必须写入绝对路径
    3. aa ALL=/usr/sbin/useradd
    4. # 赋予改密码权限
    5. aa ALL=/usr/bin/passwd
    6. #取消对root用户的密码修改
    7. aa ALL=/usr/bin/passwd [A-Za-z]*,(逗号后一定要有一个空格)!/usr/bin/passwd"", !/usr/bin/passwd root

    说明:

    • [A-Za-z]*:正则表达式,表示任意字母任意重复多次。
    • !/usr/bin/passwd" ":表示不能在passwd命令后加空。因为passwd命令后什么都不加,表示修改当前用户密码,因为sudo授权passwd命令给user1用户,当user1用户执行passwd命令时的身份时root,所以也是修改root用户的密码。
    • !/usr/bin/passwd root:表示禁止在passwd命令后加root。
    • 以上三个条件的顺序也不能改变,测试改变顺序好像不太好用了。
    • 注意:有多个权限的时候用逗号隔开。

    普通用户使用sudo命令执行添加新用户命令
    sudo /usr/sbin/useradd ee
     

    感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

    ① 2000多本Python电子书(主流和经典的书籍应该都有了)

    ② Python标准库资料(最全中文版)

    ③ 项目源码(四五十个有趣且经典的练手项目及源码)

    ④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

    ⑤ Python学习路线图(告别不入流的学习)

    重点:配套学习资料和视频教学

    那么在这里我也精心准备了上述大纲的详细资料在下方链接如下

     

  • 相关阅读:
    mysql面试题——存储引擎相关
    Real-Time Rendering——Chapter 8 Light and Color光和颜色
    面试总结之微服务篇
    使用Python进行钻石价格分析
    『现学现忘』Docker基础 — 42、补充:save和load命令说明
    老哥们平日是怎么排查线上问题的?
    ESXi 6.7添加螃蟹2.5g网卡支持
    极狐GitLab 如何重置管理员密码
    Milvus 2.4 向量库安装部署
    让你的 Runner 可视化,使用 Prometheus + Grafana 实现极狐GitLab Runner 可视化
  • 原文地址:https://blog.csdn.net/m0_59868866/article/details/126432478