允许以 sudoers 组中的任何用户身份登录

允许以 sudoers 组中的任何用户身份登录

我想添加一条/etc/sudoers规则,允许组中的任何用户admin以组用户的身份登录users

例子:

在群组adminI 中有:alansmith。在群组 中usersannamike。以及其他用户:stephennick

alan并且smith可以这样做:

sudo su - anna
sudo su - mike

但不能这样做:

sudo su -
sudo su - root
sudo su - stephen

我徒劳地尝试了这样的事情:

%admin ALL=(ALL) NOPASSWD:/bin/su - %users

有任何想法吗?


PS如果能再满足一个依赖关系就更好了:

alan也在users群组中,smith不能执行以下操作:

sudo su - alan

因为alan是在admin团体中。

答案1

我认为您实际上并不想要或需要su您的用例。您似乎想要的是让特定用户组能够任意假设特定其他组中任何用户的身份。您只需要 sudoers 即可:

%admin ALL=(%users) NOPASSWD:ALL

上述 sudoers 规则意味着admin组内的所有用户都可以运行任何命令作为组中的任何用户users通过sudo -u <user> <command>

如果您愿意,您可以限制管理员用户可以以其他用户身份运行的命令,ALL最后用更具体的命令替换。man sudoers有关更多信息,请参阅。

要获取给定组用户的 ~login shell users,而不是su使用行政可以做:

sudo -u anna /bin/bash -il

su关于(man su)的注释:

su 命令用于在登录会话期间成为另一个用户。

su总是提示你输入登录用户的密码,除了对于调用用户为 root 的情况。sudo su - [user]不会提示输入密码,因为您提升为 root(通过 sudo),然后 execsu - [user]开始新的登录会话。但如果您不想将 sudoer 提升为 root,则 sudoer 需要知道他们想要作为的用户的密码,这首先su违背了使用的目的。sudo

答案2

您不能使用“%users”,因为这意味着一个 Linux 组,而不是一个 sudoers 变量。

您可以执行以下操作:

Cmnd_Alias      SWITCH_USERS = /bin/su - anna, /bin/su - mike
%admin      ALL=(ALL) NOPASSWD: SWITCH_USERS

如果你只为此事在系统中创建两个组 admin/users,你可能想要创建 sudoers 用户别名(这样你只需要跟踪 sudoers 文件)我个人认为,最好对 sudo 使用 sudoers 选项,对文件/目录使用系统组相关权限(但这是我认为,不是必须的

Sudoers 手册在某些主题上有点难以理解。这里有一份很好的指南(附有示例),可以帮助您编辑 sudoers 文件:如何编辑 sudoers 文件

我认为对于您要完成的任务,您需要牢记的最有用的一点是:如果您在 sudoers 中添加完整的命令(包含所有选项和参数,则应该以这种方式运行,因此,如果您在命令后指定用户名,“/bin/su - ”将不起作用(参见我的示例)您可以使用 NOEXEC 否定:您想在 sudo 中以任何方式禁止的命令,并始终使用“visudo”来编辑 /etc/sudoers,以检查语法。

相关内容