我希望能够授予我管理的系统上的用户使用 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。
例如,您可以创建一个有权访问该文件的用户或组,然后
- 只需将用户添加到该组(如果使用任何命令很好),
- 让用户“成为”该用户(或组?)而不是
root
该命令, - 创建该特定命令的副本或包装器,并以该用户或组作为拥有该命令的用户或组(而不是 root),并在其上设置 SUID 或 SGID(但取消该用户/组对副本/包装器程序的写权限),或者
- 使用与 SUID/SGID 等效的 SELinux:配置可执行文件(或其副本/包装器)以在执行时自动将 SELinux 上下文更改为对该文件具有正确权限的上下文。
这些方法中的每一种都比 sudoers 行和/或参数解释/操作包装器命令更简单、更直接,可以精确表达预期的设置。