1、什么是sudo授权

在Linux系统中,/sbin//usr/sbin/两个目录中的命令只有超级用户才能使用。sudo授权就是把指定的命令授权给普通用户,让普通用户可以执行指定的命令。(只给用户授权执行一个命令的权限)

原则上:

  • 赋予的权限越详细,普通用户得到的权限越小。
  • 赋予的权限越简单,普通用户得到的权限越大。

2、 sudo授权说明

root身份操作:使用visudo命令,赋予普通用户权限命令。

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

说明:

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

3、sudo命令的使用

示例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

『学了就忘』Linux权限管理 — 54、sudo授权的更多相关文章

  1. 『学了就忘』Linux权限管理 — 53、ACL权限详解

    目录 1.什么是ACL权限 2.开启ACL 3.ACL权限的相关命令 (1)设定ACL权限 (2)查询文件的ACL权限 (3)设置文件ACL权限给用户组 (4)给文件夹和里边的文件同时赋予ACL权限 ...

  2. 『学了就忘』Linux权限管理 — 55、文件特殊权限

    目录 1.文件特殊权限说明 2.设置SetUID 3.检测SetUID的脚本 4.设置SetGID (1)针对文件的作用 (2)针对目录的作用 5.Sticky BIT 6.设定文件特殊权限 7.文件 ...

  3. 『学了就忘』Linux权限管理 — 56、不可改变位权限(chattr)

    目录 1.命令格式 2.查看文件系统属性chattr权限 3.示例 文件系统属性chattr权限,也叫不可改变位权限,该权限没有风险,但是他能限制root用户. 1.命令格式 [root@localh ...

  4. 『学了就忘』Linux日志管理 — 90、Linux中日志介绍

    目录 1.日志相关服务 2.系统中常见的日志文件 1.日志相关服务 在CentOS 6.x中日志服务已经由rsyslogd取代了原先的syslogd服务.RedHat认为syslogd已经不能满足在工 ...

  5. 『学了就忘』Linux用户管理 — 50、用户管理相关文件详细说明

    目录 1.用户信息文件 2./etc/shadow影子文件 3./etc/group 组信息文件 4.组密码文件 5.用户的家目录 6.用户邮箱目录 7.用户模板目录 总结: 提示:严格的用户权限划分 ...

  6. 『学了就忘』Linux用户管理 — 51、用户管理相关命令

    目录 1.添加用户(useradd命令) 2.设定密码(passwd命令) 3.用户信息修改(usermod命令) 4.删除用户(userdel命令) 5.切换用户身份(su命令) 1.添加用户(us ...

  7. 『学了就忘』Linux服务管理 — 75、Linux系统中的服务

    目录 1.服务的介绍 2.Windows系统中的服务 3.Linux系统中服务的分类 4.独立的服务和基于xinetd服务的区别 5.如何查看一个服务是独立的服务还是基于xinetd的服务 (1)查看 ...

  8. 『学了就忘』Linux日志管理 — 92、日志轮替

    目录 1.日志文件的命名规则 2.logrotate配置文件说明 3.logrotate配置文件的主要参数 1.日志文件的命名规则 日志轮替最主要的作用就是把旧的日志文件移动并改名,同时建立新的空日志 ...

  9. 『学了就忘』Linux日志管理 — 93、日志轮替补充

    目录 1.把自己的日志加入日志轮替 (1)操作方式 (2)示例 2.logrotate命令 1.把自己的日志加入日志轮替 使用RPM包方式安装服务的日志会自动的加入logrotate轮替,一般不需要你 ...

随机推荐

  1. MC-BE基岩版服务器搭建与日常维护

    有部分内容被csdn和谐,强烈建议移步我的个人博客以获得更好的排版和阅读体验: xzajyjs.cn. 目录 环境搭建 开始部署 日常维护 服务器的白名单机制 定时备份 服务器升级 服务器模组安装 搭 ...

  2. Javascript深入之作用域与闭包

    相信绝大多数同学都听过闭包这个概念,但闭包具体是什么估计很少有人能够说的很详细.说实话闭包在我们平时开发中应该是很常见的,并且在前端面试中闭包也是常见的重要考点,在学习闭包之前我们先来看看作用域与作用 ...

  3. .Net Core中使用ElasticSearch(一)

    一.安装配置 在官网下载Es,注意版本号,不同大版本号之间差异很大.我安装的是7.14.0版本 1.1 安装成服务 cmd 进入bin目录下执行 elasticsearch-service.bat i ...

  4. 我们一起来回顾一下Synchronized关键字吧

    多线程一直Java开发中的难点,也是面试中的常客,趁着还有时间,打算巩固一下JUC方面知识,我想机会随处可见,但始终都是留给有准备的人的,希望我们都能加油!!! 沉下去,再浮上来,我想我们会变的不一样 ...

  5. logstash收集的日志输出到elasticsearch中

    logstash收集的日志输出到elasticsearch中 一.需求 二.实现步骤 1.编写pipeline文件 1.`elasticsearch`配置参数解析: 2.可能会报的一个异常 2.准备测 ...

  6. Noip模拟14 2021.7.13

    T1 队长快跑 本身dp就不强的小马看到这题并未反映过来是个dp(可能是跟题面太过于像那个黑题的队长快跑相似) 总之,基础dp也没搞出来,不过这题倒是启发了小马以后考试要往dp哪里想想 $dp_{i, ...

  7. 『学了就忘』Linux基础 — 7、补充:安装Linxu系统时设置硬盘挂载说明

    目录 (1)新建一个/home分区 (2)再创建一个/boot分区. (3)创建一个swap分区 (4)最后剩余的空间全部分给根目录 (5)总结 上一篇在VMwar虚拟机中安装Linux操作系统中ht ...

  8. jquery 实现 <imput>标签 密码框显示/隐藏密码功能

    1 <!doctype html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 < ...

  9. Xtrabackup 全量备份脚本

    #!/bin/bash #备份文件的名字为当前主机的IP地址+tar.gz,例如172.16.103.1.tar.gz,且每次备份成功之后都会清空本地的备份目录. #相关目录 mkdir -p /xt ...

  10. 【解决方案】Pyinstaller打包exe策略(简单实用)

    场景说明 在业务场景中, 经常需要Python开发一些小程序/脚本/GUI界面,进行简单的项目测试或未安装Python 的小伙伴们使用. 使用Pyinstaller将Python脚本或者项目打包,生成 ...