系统相关
首页 > 系统相关> > Linux 使用sudo分配管理权限

Linux 使用sudo分配管理权限

作者:互联网

问题
本案例要求利用sudo机制分配管理操作权限,主要完成以下任务:
1)为sudo机制启用日志记录,以便跟踪sudo执行操作
2)允许网站运营专员tradm通过sudo方式控制httpd、mysqld服务的运行
3)允许用户ugadm通过sudo方式添加/删除/修改除root以外的用户账号
4)允许wheel组成员以特权执行/usr/bin/下的命令
步骤
实现此案例需要按照如下步骤进行。
步骤一:为sudo机制启用日志记录,以便跟踪sudo执行操作
1)修改/etc/sudoers配置,添加日志设置

[root@svr5 ~]# visudo
Defaults  logfile="/var/log/sudo"
.. ..

2)以root(默认有所有权限)执行sudo操作

[root@svr5 ~]# sudo -l  						//查看授权的sudo操作

匹配此主机上 root 的默认条目:

logfile=/var/log/sudo, requiretty, !visiblepw, always_set_home,
env_reset, env_keep=“COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR
LS_COLORS”, env_keep+=“MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS
LC_CTYPE”, env_keep+=“LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT
LC_MESSAGES”, env_keep+=“LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER
LC_TELEPHONE”, env_keep+=“LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET
XAUTHORITY”, secure_path=/sbin:/bin:/usr/sbin:/usr/bin

用户 root 可以在该主机上运行以下命令:
(ALL) ALL
3)确认日志记录已生效

[root@svr5 ~]# tail /var/log/sudo 
.. ..
May 16 22:14:49 : root : TTY=pts/1 ; PWD=/root ; USER=root ; COMMAND=list

步骤二:允许网站运营专员tradm通过sudo方式控制httpd、mysqld服务的运行
1)修改/etc/sudoers配置
为tradm授予相关脚本的执行权限,允许通过servivce工具来管理httpd、mysqld服务,或者直接执行这两个脚本。

[root@svr5 ~]# visudo
.. ..
Cmnd_Alias LAMP_CTRL=/sbin/service httpd *, /sbin/service mysqld, /etc/init.d/ht
tpd, /etc/init.d/mysqld
tradm localhost,svr5=LAMP_CTRL

2)切换为tradm用户,并验证sudo执行权限

[root@svr5 ~]# su - tradm
[tradm@svr5 ~]$ sudo -l
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for tradm:    						//验证用户tradm的口令
.. ..

用户 tradm 可以在该主机上运行以下命令:

    (root) /sbin/service httpd *, /sbin/service mysqld *, /etc/init.d/httpd,
/etc/init.d/mysqld

[tradm@svr5 ~]$ service mysqld start    			//不用sudo时启动服务失败
touch: 无法创建"/var/log/mysqld.log": 权限不够
chown: 正在更改"/var/log/mysqld.log" 的所有者: 不允许的操作
                                          [失败]
.. ..
[tradm@svr5 ~]$ sudo service mysqld start  			//通过sudo启动服务成功
正在启动 mysqld:                        [确定]

步骤三:允许用户ugadm通过sudo方式添加/删除/修改除root以外的用户账号
1)修改/etc/sudoers配置
为ugadm授予用户管理相关命令的执行权限,例外程序以!符号取反,放在后面。在执行相关程序时,可以利用通配符*。

[root@svr5 ~]# visudo
.. ..
Cmnd_Alias UADM_CTRL=/usr/bin/passwd,!/usr/bin/passwd root,/usr/sbin/user*,
 !/usr/sbin/user* * root
ugadm localhost,svr5=UADM_CTRL

2)切换为ugadm用户,验证sudo权限
可以通过sudo方式来添加/删除/修改普通用户:

[root@svr5 ~]# su – ugadm
[ugadm@svr5 ~]$ sudo -l
.. ..

用户 ugadm 可以在该主机上运行以下命令:

    (root) /usr/bin/passwd, !/usr/bin/passwd root, /usr/sbin/user*,
!/usr/sbin/user* * root
[ugadm@svr5 ~]$ sudo useradd newuser01  			//可以添加用户
[ugadm@svr5 ~]$ sudo passwd newuser01  				//可以修改普通用户的口令
更改用户 newuser01 的密码 。
新的 密码:
重新输入新的 密码:

passwd: 所有的身份验证令牌已经成功更新。
[ugadm@svr5 ~]$ sudo usermod -L newuser01  			//可以修改用户属性
[ugadm@svr5 ~]$ sudo userdel -r newuser01  			//可以删除用户账号

但是不能修改root用户的属性:

[ugadm@svr5 ~]$ sudo usermod -L root
对不起,用户 ugadm 无权以 root 的身份在 svr5.tarena.com 上
执行 /usr/sbin/usermod -L root。
[ugadm@svr5 ~]$ sudo passwd root

对不起,用户 ugadm 无权以 root 的身份在 svr5.tarena.com
执行 /usr/bin/passwd root。
步骤四:允许wheel组成员以特权执行/bin/下的所有命令
此案例用来展示sudo的便利性及设置不当带来的危险性,生产环境下慎用。
实现时参考下列操作:

[root@svr5 ~]# visudo
.. ..
%wheel localhost,svr5=/bin/*
[root@svr5 ~]# usermod -a -G wheel zengye
[zengye@svr5 ~]$ sudo -l
.. ..
用户 zengye 可以在该主机上运行以下命令:
(root) /bin/*
[zengye@svr5 ~]$ sudo /bin/bash  			//与sudo –i 等效,表示初始化登录
[root@svr5 zengye]#  						//直接成root了

注意:类Shell的程序不要允许用户sudo执行,否则等同于开放所有root权限。
比方说,如果将/bin/bash复制为/sbin/serv1ce(名称可以有一定迷惑性),然后夹杂在其他正常命令里一起授权给用户tradm,则用户tradm执行sudo serv1ce后就具有了root的身份。

[zengye@svr5 ~]$ sudo serv1ce  					//执行伪装的Shell程序
[sudo] password for zengye:   						//验证用户口令
[root@svr5 zengye]# whoami  						//查看当前身份
root

标签:..,tradm,sudo,svr5,管理权限,ugadm,Linux,root
来源: https://blog.csdn.net/Win_Le/article/details/90647298