sudoers 文件和密码仅适用于选定的组

sudoers 文件和密码仅适用于选定的组

我在“生产”组中有 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) 不在命令行上使用多个用户名。

相关内容