1.简介
在我们的实际工作中有可能需要对某一个用户授予多个命令的执行权限,如果我们一个一个的添加就会很麻烦,我们可以使用通配符的方式来添加,但这样又会造成一个授予的命令权限过大的问题,甚至可能造成不必要的麻烦,本文中只是举例并不代表最终的结果。(授权普通用户命令之后一定要先测试)
2.相关
系统:CentOS Linux release 7.6.1810 (Core)
3.步骤
3.1.授予用户命令
方法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:解析正确
方法2:别名方式
[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
从以上两种方式对比可以看出授予的用户和授予的组用户获得的权限是一致的。