我在“生产”组中有 3 个用户:John、Steve 和 Bob。 “销售”组有:Sam 和 Jack。
现在,我想授予 John 更改所有用户密码的权限,但仅限于“生产”组,因此他将无法对 Sam 和 Jack 进行任何更改。
在我的 /etc/sudoers 文件中,我有“生产”组中所有用户的别名:
User_Alias PRODUCTION = %production
问题是我不知道如何写这个:
john ALL =(root) /usr/bin/passwd steve, (root) /usr/bin/passwd bob, (root) /usr/bin/passwd jack
...使用我的 PRODUCTION 别名,因此如果有新成员添加到该组,则无需将他手动添加到 sudoers 文件中。
我已经尝试了很多类似的方法:
john ALL =(root) /usr/bin/passwd PRODUCTION
但这不起作用,此时我没有更多的想法。
我将不胜感激任何线索,非常感谢!
答案1
这对于 来说太复杂了sudoers
。
您必须编写一个脚本来检查用户是否属于该组,passwd
如果属于则调用。
sudoers
然后必须进行配置,以便john
可以以 root 身份运行此脚本。当然,该脚本的路径必须只能对root
.
#! /bin/bash
group="groupname"
test $# -ne 1 && exit 2
user="$1"
if id "$user" | grep -qF "(${group})"; then
echo passwd "$user"
else
echo "User '${user}' is not in group '${group}'."
fi
称为
./testscript username
答案2
我知道这个查询已经有两年了,但我确实找到了一个不涉及脚本的答案。
您应该使用visudo
来更新该/etc/sudoers
文件。请参阅sodoers(5)
手册页。您应该会看到一个可以轻松利用的示例:
USER HOST = /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
定义为 USER 的用户可以更改除主机上的 root 之外的任何人的密码。请注意,这假设 passwd(1) 不在命令行上使用多个用户名。