|NO.Z.00037|——————————|LinuxBasicEnd|——|Linux&权限管理.V03|
一、sudo 授权 给普通用户赋予部分管理员权限
### --- sudo 授权 给普通用户赋予部分管理员权限
~~~ /sbin/ 在此目录下命令只有超级用户才能使用/usr/sbin/
### --- root 身份
~~~ visudo 赋予普通用户权限命令,命令执行后和 vi 一样使用
root ALL=(ALL) ALL
~~~ 用户名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
~~~ %wheel ALL=(ALL) ALL
~~~ %组名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
~~~ 用户名/组名:代表 root 给哪个用户或用户组赋予命令,注意组名前加“%”
~~~ 用户可以用指定的命令管理指定 IP 地址的服务器。
~~~ 如果写 ALL,代表可以管理任何主机,如果写固定 IP,代表用户可以管理指定的服务器。
~~~ (这里真的很奇怪啊,超哥一直认为这里的
~~~ IP 地址管理的是登录者来源的 IP 地址,查了很多资料也都是这样的。
~~~ 直到有一天超哥查看“man 5 sudoers”帮助,才发现大家原来都理解错误了,
~~~ 这里的 IP 指定的是用户可以管理
~~~ 哪个 IP 地址的服务器。那么如果你是一台独立的服务器,
~~~ 这里写 ALL 和你服务器的 IP 地址,作用是一样的。
~~~ 而写入网段,只有对 NIS 服务这样用户和密码集中管理的服务器才有意义)。
~~~ 如果我们这里写本机的 IP 地址,不代表只允许本机的用户使用指定命令,
~~~ 而代表指定的用户可以从任何 IP 地址来管理当前服务器。
### --- 可使用身份:
~~~ 就是把来源用户切换成什么身份使用,(ALL)代表可以切换成任意身份。这个字段可以省略
### --- 授权命令:
~~~ 代表 root 把什么命令授权给普通用户。默认是 ALL,代表任何命令,这个当然不行。
~~~ 如果需要给那个命令授权,写入命令名即可,不过需要注意一定要命令写成绝对路径
### --- 举例
### --- 举个例子,比如授权用户 user1 可以重启服务器,则由 root 用户添加如下行:
[root@localhost ~]# visudo
user1 ALL= /sbin/shutdown –r now
~~~ 查看可用的授权
[user1@localhost ~]$ sudo -l
### --- 再举个例子,
~~~ 授权一个用户管理你的 Web 服务器,不用自己插手是不是很爽,以后修改设置更新
~~~ 网页什么都不用管,一定 Happy 死了,Look:
### --- 首先要分析授权用户管理 Apache 至少要实现哪些基本授权:
~~~ 1、可以使用 Apache 管理脚本
~~~ 2、可以修改 Apache 配置文件
~~~ 3、可以更新网页内容
### --- 假设 Aapche 管理脚本程序为/etc/rc.d/init.d/httpd 。
### --- 为满足条件一,用 visudo 进行授权:
~~~ 授权用户 user1 可以连接 192.168.0.156 上的 Apache 服务器,
~~~ 通过 Apache 管理脚本重新读取配
~~~ 置文件让更改的设置生效(reload)和可以检测 Apache 配置文件语法错误(configtest),
~~~ 但不允许其执行关闭(stop)、重启(restart)等操作。
~~~ (“\”的意思是一行没有完成,下面的内容和上一行是同一行。)
[root@localhost ~]# visudo
user1 192.168.0.156=/etc/rc.d/init.d/httpd reload,\
/etc/rc.d/init.d/httpd configtest
### --- 为满足条件二,同样使用 visudo 授权:
~~~ 授权用户 user1 可以用 root 身份使用 vi 编辑 Apache 配置文件。
~~~ 以上两种 sudo 的设置,要特别注意,很多朋友使用 sudo 会犯两个错误:
~~~ 第一,授权命令没有细化到选项和参数;第二,认为只能授权管理员执行的命令。
~~~ 条件三则比较简单,假设网页存放目录为/var/www/html ,
~~~ ~~~ 则只需要授权 user1 对此目录具有写权限
~~~ 或者索性更改目录所有者为 user1 即可。
~~~ 如果需要,还可以设置 user1 可以通过 FTP 等文件共享服务更新网页。
[root@localhost ~]# visudo
user1 192.168.0.156=/binvi /etc/httpd/conf/httpd.conf
### --- 授权 aa 用户可以添加其他普通用户
aa ALL=/usr/sbin/useradd // 赋予 aa 添加用户权限.命令必须写入绝对路径
aa ALL=/usr/bin/passwd // 赋予改密码权限,取消对 root 的密码修改
aa ALL=/usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd "", !/usr/bin/passwd root
### --- aa 身份
sudo /usr/sbin/useradd ee // 普通用户使用 sudo 命令执行超级用户命令
二、sudo赋予权限的原则:实验专题
### --- sudo赋予权限的原则
~~~ sudo: 赋予的权限越详细,普通用户得到的权限越小
~~~ 赋予的权限越简单,普通用户得到的权限越大
### --- 被管理主机的地址定义:
[root@server11 ~]# man 5 sudoers
Host_Alias CSNETS = 128,.138.243.0, 128.138.204.0/24, 128.138.242.0 // CSNETS定义的别名
jack CSNETS = ALL // 给jack用户赋权限,赋centos这个权限
~~~ sudo执行文件
[root@server11 ~]# visudo
root ALL=(ALL) ALL // 给root赋予了所有权限,例子
### --- 切换到普通用户并授予重启权限
[root@server11 ~]# su yanqi
[yanqi@server11 ~]$ shutdown -r now
User root is logged in on sshd.
User root is logged in on sshd.
Please retry operation after closing inhibitors and logging out other users.
Alternatively, ignore inhibitors and users with 'systemctl reboot -i'.
[root@server11 ~]# visudo // 给yanqi用户授予重启命令
yanqi ALL=/sbin/shutdown
~~~ 查看yanqi用户可以执行的命令
[yanqi@server11 ~]$ sudo -l
[sudo] password for yanqi: // 输入密码
(root) /sbin/shutdown // 可以执行的命令
[root@server11 ~]# visudo
yanqi ALL=/sbin/shutdown -r now
[yanqi@server11 ~]$ sudo -l
(root) /sbin/shutdown -r now // 普通用户执行的命令发生变化
[yanqi@server11 ~]$ sudo /sbin/shutdown -h now // 必须执行特定命令,若是不一致会失败
Sorry, user yanqi is not allowed to execute '/sbin/shutdown -h now' as root on server11.
[yanqi@server11 ~]$ sudo /sbin/shutdown -r now // 重启生效
### --- 授予普通用户的特定权限:
~~~ 可以使用Apache管理脚本
[root@server21 ~]# /etc/rc.d/init.d/httpd configtest
Syntax OK
[root@server21 ~]# visudo
yanqi ALL=/etc/rc.d/init.d/httpd configtest
[yanqi@server21 ~]$ sudo /etc/rc.d/init.d/httpd configtest // 普通用户就可以执行apache的脚本
Syntax OK
~~~ 可以修改Apache配置文件
[root@server21 ~]# visudo
yanqi ALL=/usr/bin/vim /etc/httpd/conf/httpd.conf // 只能打开文件,但是不能更改
[root@server21 yanqi]# visudo
yanqi ALL=/usr/bin/vim
[yanqi@server21 ~]$ vim /etc/httpd/conf/httpd.conf // 可以更改文件内容
~~~ 可以更新网页内容
[root@server21 ~]# visudo
### --- 授权添加用户
[root@server21 ~]# visudo
yanqi ALL=/usr/sbin/useradd
yanqi ALL=/usr/bin/passwd
yanqi ALL=/usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd "", !/usr/bin/passwd root // 限制普通用户不可以修改root的密码
[yanqi@server21 ~]$ sudo useradd yanqitest
[yanqi@server21 ~]$ sudo passwd yanqitest
[yanqi@server21 ~]$ sudo passwd root // 限制普通用户不可以修改root密码
Sorry, user yanqi is not allowed to execute '/usr/bin/passwd root' as root on server21.
### --- 查看加入了那些sudo命令权限
[yanqi@server21 ~]$ sudo -l
(root) /etc/rc.d/init.d/httpd configtest
(root) /usr/bin/vim
(root) /usr/sbin/useradd
(root) /usr/bin/passwd
(root) /usr/bin/passwd [A-Za-z]*, (root) !/usr/bin/passwd \"\", (root) !/usr/bin/passwd root
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
分类:
cdv005-basic
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」