灵活的 sudo 访问

灵活的 sudo 访问

我希望能够授予我管理的系统上的用户使用 sudo 命令 Y 访问文件 X 的能力。

有没有办法做到这一点,同时允许对命令 Y 的参数具有一定的灵活性?

下列:

用户 ALL=NOPASSWD:/usr/bin/X /path/to/Y

将允许用户使用 Y 作为其唯一参数来运行 X,但如果我想允许用户向 X 提供一些可选参数怎么办?

这:

用户 ALL=NOPASSWD: /usr/bin/X * /path/to/Y

不安全,因为用户可以使用通配符将额外的文件参数传递给 X。我需要一些更具限制性的东西。

我可以简单地使用 sudo 来做到这一点吗?还是我需要使用其他方法?

答案1

创建一个指定特定命令行参数的包装命令,然后让用户sudo访问该命令。

答案2

sudo此用例或增强/添加的一种替代方法是使用 UNIX 文件系统权限、扩展文件系统 ACL 或 SELinux。

例如,您可以创建一个有权访问该文件的用户或组,然后

  1. 只需将用户添加到该组(如果使用任何命令很好),
  2. 让用户“成为”该用户(或组?)而不是root该命令,
  3. 创建该特定命令的副本或包装器,并以该用户或组作为拥有该命令的用户或组(而不是 root),并在其上设置 SUID 或 SGID(但取消该用户/组对副本/包装器程序的写权限),或者
  4. 使用与 SUID/SGID 等效的 SELinux:配置可执行文件(或其副本/包装器)以在执行时自动将 SELinux 上下文更改为对该文件具有正确权限的上下文。

这些方法中的每一种都比 sudoers 行和/或参数解释/操作包装器命令更简单、更直接,可以精确表达预期的设置。

相关内容