『学了就忘』Linux权限管理 — 54、sudo授权
1、什么是sudo授权
在Linux系统中,/sbin/
和/usr/sbin/
两个目录中的命令只有超级用户才能使用。sudo
授权就是把指定的命令授权给普通用户,让普通用户可以执行指定的命令。(只给用户授权执行一个命令的权限)
原则上:
- 赋予的权限越详细,普通用户得到的权限越小。
- 赋予的权限越简单,普通用户得到的权限越大。
2、 sudo授权说明
root
身份操作:使用visudo
命令,赋予普通用户权限命令。
# 用户名 被管理主机的地址(IP地址)=(可使用的身份) 授权命令(绝对路径)
root ALL=(ALL) ALL
# 组名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
%wheel ALL=(ALL) ALL
# (组名前边要加上%)
说明:
- 用户名/组名:代表
root
给哪个用户或用户组赋予命令,注意组名前加%
。 - 被管理主机的地址:这里的IP地址管理的不是登录者来源的IP地址,这里的IP指定的是用户可以管理哪个IP地址的服务器。那么如果你是一台独立的服务器,这里写ALL和你服务器的IP地址,作用是一样的。如果写ALL,代表可以管理任何主机,如果我们这里写本机的IP地址,不代表只允许本机的用户使用指定命令,而代表指定的用户可以从任何IP地址来管理当前服务器。(这里记住写ALL就可以了)
- 可使用身份:就是把来源用户切换成什么身份使用(就是把前面用户的身份,切换成什么身份),(ALL)代表可以切换成任意身份,包括
root
。这个字段可以省略,代表切换成root
。 - 授权命令:代表
root
把什么命令授权给普通用户。默认是ALL,代表任何命令,这个当然不行,赋予的权限越详细,普通用户得到的权限越小。不过需要注意,命令一定要写成绝对路径。
3、sudo命令的使用
示例1
需求:比如授权用户user1
可以重启服务器。
普通用户是无法重启服务器的,因为没有这个命令的权限。
[userl@localhost ~]$ shutdown -r now
shutdown: Need to be root
由root
用户添加如下行:
执行执行visudo
命令,赋予普通用户权限。
[root@localhost ~]# visudo
user1 ALL=(省略不写)/sbin/shutdown -r now (whereis查一下)
# 查看可用的授权
[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,至少要实现哪些基本授权:
- 可以使用Apache管理脚本。
- 可以修改Apache配置文件。
- 可以更新网页内容。
剩下的解决不了,再来找我就行了。
假设Aapche管理脚本程序为/etc/rc.d/init.d/httpd
(举例的是RPM包安装的Apache)。
条件一,用visudo
命令进行授权:
[root@localhost ~]# visudo
# 编辑内容
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配置文件。
[root@localhost ~]# visudo
user1 192.168.0.156=/usr/bin/vim /etc/httpd/conf/httpd.conf
以上两种
sudo
的设置,要特别注意,使用sudo
会犯两个错误:
- 第一,授权命令没有细化到选项和参数。
- 第二,认为只能授权管理员执行的命令。
条件三:则比较简单,假设网页存放目录为/var/www/html
,则只需要授权user1
对此目录具有写权限或者索性更改目录所有者为user1
即可。
示例3
需求:授权aa
用户可以添加其他普通用户
[root@localhost ~]# visudo
# 赋予aa添加用户权限,命令必须写入绝对路径
aa ALL=/usr/sbin/useradd
# 赋予改密码权限
aa ALL=/usr/bin/passwd
# 取消对root用户的密码修改
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授权的更多相关文章
- 『学了就忘』Linux权限管理 — 53、ACL权限详解
目录 1.什么是ACL权限 2.开启ACL 3.ACL权限的相关命令 (1)设定ACL权限 (2)查询文件的ACL权限 (3)设置文件ACL权限给用户组 (4)给文件夹和里边的文件同时赋予ACL权限 ...
- 『学了就忘』Linux权限管理 — 55、文件特殊权限
目录 1.文件特殊权限说明 2.设置SetUID 3.检测SetUID的脚本 4.设置SetGID (1)针对文件的作用 (2)针对目录的作用 5.Sticky BIT 6.设定文件特殊权限 7.文件 ...
- 『学了就忘』Linux权限管理 — 56、不可改变位权限(chattr)
目录 1.命令格式 2.查看文件系统属性chattr权限 3.示例 文件系统属性chattr权限,也叫不可改变位权限,该权限没有风险,但是他能限制root用户. 1.命令格式 [root@localh ...
- 『学了就忘』Linux日志管理 — 90、Linux中日志介绍
目录 1.日志相关服务 2.系统中常见的日志文件 1.日志相关服务 在CentOS 6.x中日志服务已经由rsyslogd取代了原先的syslogd服务.RedHat认为syslogd已经不能满足在工 ...
- 『学了就忘』Linux用户管理 — 50、用户管理相关文件详细说明
目录 1.用户信息文件 2./etc/shadow影子文件 3./etc/group 组信息文件 4.组密码文件 5.用户的家目录 6.用户邮箱目录 7.用户模板目录 总结: 提示:严格的用户权限划分 ...
- 『学了就忘』Linux用户管理 — 51、用户管理相关命令
目录 1.添加用户(useradd命令) 2.设定密码(passwd命令) 3.用户信息修改(usermod命令) 4.删除用户(userdel命令) 5.切换用户身份(su命令) 1.添加用户(us ...
- 『学了就忘』Linux服务管理 — 75、Linux系统中的服务
目录 1.服务的介绍 2.Windows系统中的服务 3.Linux系统中服务的分类 4.独立的服务和基于xinetd服务的区别 5.如何查看一个服务是独立的服务还是基于xinetd的服务 (1)查看 ...
- 『学了就忘』Linux日志管理 — 92、日志轮替
目录 1.日志文件的命名规则 2.logrotate配置文件说明 3.logrotate配置文件的主要参数 1.日志文件的命名规则 日志轮替最主要的作用就是把旧的日志文件移动并改名,同时建立新的空日志 ...
- 『学了就忘』Linux日志管理 — 93、日志轮替补充
目录 1.把自己的日志加入日志轮替 (1)操作方式 (2)示例 2.logrotate命令 1.把自己的日志加入日志轮替 使用RPM包方式安装服务的日志会自动的加入logrotate轮替,一般不需要你 ...
随机推荐
- MyBatis原生批量插入的坑与解决方案!
前面的文章咱们讲了 MyBatis 批量插入的 3 种方法:循环单次插入.MyBatis Plus 批量插入.MyBatis 原生批量插入,详情请点击<MyBatis 批量插入数据的 3 种方法 ...
- netty系列之:使用netty实现支持http2的服务器
目录 简介 基本流程 CleartextHttp2ServerUpgradeHandler Http2ConnectionHandler 总结 简介 上一篇文章中,我们提到了如何在netty中配置TL ...
- 【UE4 C++】关卡切换、流关卡加载卸载
切换关卡 基于 UGameplayStatics:: OenLevel UGameplayStatics::OpenLevel(GetWorld(), TEXT("NewMap") ...
- UML图 | 时序图(顺序、序列图)绘制
上一次写过一篇 UML | 类图 相关的文章,平时规范开发会用的上,或者是写什么文档,就还是需要画图,就像毕业设计就是如此.希望能够帮助到大家. 注:本文中所用画图软件为 Microsoft Visi ...
- Java:ArrayList类小记
Java:ArrayList类小记 对 Java 中的 ArrayList类,做一个微不足道的小小小小记 概述 java.util.ArrayList 是大小可变的数组的实现,存储在内的数据称为元素. ...
- [技术博客]在团队中使用Pull Request来管理代码
在团队中使用Pull Request来管理代码 前言 在参加多人共同开发项目,且选用Git作为代码托管工具的时候,我们不免会遇到分支冲突.覆盖.合并等问题.显然,因为同一个仓库是属于大家的,所以每个人 ...
- Noip模拟68 2021.10.4
T1 玩水 成功在考试的时候注释掉正解,换成了暴力,只因为不敢保证正解思路的正确 脑子瓦特了,不知道把暴力打成函数拼在一起,不知道当时咋想的.... 就是你找有没有一个点上面和左面的字符一样, 如果这 ...
- 单片机stm32的5个时钟源的详细分析
众所周知STM32有5个时钟源HSI.HSE.LSI.LSE.PLL,其实他只有四个,因为从上图中可以看到PLL都是由HSI或HSE提供的. 其中,高速时钟(HSE和HSI)提供给芯片主体的主时钟.低 ...
- vcs(UST)Undefined System Task Call
转载:VCS求助啊 - 微波EDA网 (mweda.com) Error-[UST] Undefined System Task Call../../path/bench/path.v, 51Unde ...
- STM32程序异常——中断处理要谨慎
问题背景 最近有一个新项目(车载项目),板子上除了原来的ARM + STM32F030K6Tx又多了一个8bit的mcu的单片机,这可真是嵌入式全家福了. 系统的主要核心工作是由arm来完成,但是在开 ...