visudo实例授予普通用户可使用的命令但排除对root用户

系统集成 盛行 4年前 (2015-12-06) 174次浏览 已收录 0个评论 扫描二维码
文章目录
[隐藏]

1.简介

在我们的实际工作中有可能需要对某一个用户授予多个命令的执行权限,如果我们一个一个的添加就会很麻烦,我们可以使用通配符的方式来添加,但这样又会造成一个授予的命令权限过大的问题,甚至可能造成不必要的麻烦,本文中只是举例并不代表最终的结果。(授权普通用户命令之后一定要先测试

2.相关

系统:CentOS Linux release 7.6.1810 (Core)

3.步骤

3.1.授予用户命令

[root@itbkz s]#visudo
//以下为添加的内容而不要执行的命令
itbkz  ALL=(ALL)       /usr/sbin/user*,/usr/bin/passwd,!/usr/sbin/usermod * root,/usr/bin/passwd,!/usr/bin/passwd * root,!/usr/bin/passwd root
[root@itbkz s]#visudo -c
/etc/sudoers:解析正确
[root@itbkz s]#visudo
//以下为添加的内容而不要执行的命令
User_Alias USER=itbkz,%dnnltf
Cmnd_Alias CMD=/usr/sbin/user*,/usr/bin/passwd,!/usr/sbin/usermod * root,!/usr/bin/passwd * root,!/usr/bin/passwd root
USER ALL=(ALL) CMD
[root@itbkz s]#visudo -c
/etc/sudoers:解析正确
以上我添加了一个%dnnltf组,当用户是dnnltf组中的成员时也将获得授予的命令。

3.2.测试授予用户权限

//以下为切换到itbkz普通用户下执行的命令
[root@itbkz ~]#su - itbkz
上一次登录:五 12月 6 21:34:39 CST 2019pts/1 上
[itbkz@itbkz ~]$sudo -l
匹配 %2$s 上 %1$s 的默认条目:
!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset,
env_keep="COLORS DISPLAY HOSTNAME HISTSIZE 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

用户 itbkz 可以在 itbkz 上运行以下命令:
(ALL) /usr/sbin/user*, /usr/bin/passwd, !/usr/sbin/usermod * root, !/usr/bin/passwd * root,
!/usr/bin/passwd root
[itbkz@itbkz ~]$sudo useradd test
[itbkz@itbkz ~]$grep test /etc/passwd
test:x:1001:1002::/home/test:/bin/bash
[itbkz@itbkz ~]$sudo usermod -aG root itbkz
[itbkz@itbkz ~]$id itbkz
uid=1000(itbkz) gid=1000(itbkz) 组=1000(itbkz),0(root)
[itbkz@itbkz ~]$sudo passwd root
对不起,用户 itbkz 无权以 root 的身份在 itbkz.com 上执行 /bin/passwd root。
[itbkz@itbkz ~]$sudo usermod -aG itbkz root
对不起,用户 itbkz 无权以 root 的身份在 itbkz.com 上执行 /sbin/usermod -aG itbkz root。

3.3.查看授予组权限

[itbkz@itbkz ~]$su - test
密码:
[test@itbkz ~]$id
uid=1001(test) gid=1001(dnnltf) 组=1001(dnnltf)
[test@itbkz ~]$sudo -l

我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:

    #1) 尊重别人的隐私。
    #2) 输入前要先考虑(后果和风险)。
    #3) 权力越大,责任越大。

[sudo] test 的密码:
匹配 %2$s 上 %1$s 的默认条目:
    !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset,
    env_keep="COLORS DISPLAY HOSTNAME HISTSIZE 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

用户 test 可以在 itbkz 上运行以下命令:
    (ALL) /usr/sbin/user*, /usr/bin/passwd, !/usr/sbin/usermod * root, !/usr/bin/passwd * root,
        !/usr/bin/passwd root
从以上两种方式对比可以看出授予的用户和授予的组用户获得的权限是一致的。

4.效果

visudo实例授予普通用户可使用的命令但排除对root用户


IT博客站版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:visudo实例授予普通用户可使用的命令但排除对root用户
喜欢 (0)
[使用支付宝扫码]
分享 (0)
盛行
关于作者:
企业应用技术爱好者,喜欢分享知识。如果文章中有错误,欢迎指正,谢谢。
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址