此 sudo 规则是否允许用户更新系统而不执行其他操作?

此 sudo 规则是否允许用户更新系统而不执行其他操作?

我想设计一条 sudo 规则,允许用户ricardo使用 更新系统aptitude,但阻止他使用 sudo 运行任何其他命令(他是个问题用户)。这条规则中是否存在我遗漏的缺陷?

ricardo  ALL=(root) /usr/bin/aptitude

Ricardo 只使用aptitude,而不是apt-get。另外,我目前没有在任何地方安装 Ubuntu,所以我知道这/usr/bin/aptitude可能不是允许的正确文件。

如果这条规则存在缺陷,我该如何改进它?

答案1

此命令将限制用户使用aptitude除更新存储库缓存和执行系统安全升级之外的任何操作。

ricardo ALL=(root) /usr/bin/aptitude update, /usr/bin/aptitude safe-upgrade

类似的命令将允许用户执行完整升级,但仅此而已:

ricardo ALL=(root) /usr/bin/aptitude update, /usr/bin/aptitude full-upgrade

aptitude 文档(10.04)safe-upgrade

将已安装的软件包升级到最新版本。除非未使用,否则不会删除已安装的软件包

相比之下,full-upgrade

将已安装的软件包升级到最新版本,根据需要删除或安装软件包。此命令不像 safe-upgrade 那样保守,因此更有可能执行不必要的操作。但是,它能够升级 safe-upgrade 无法升级的软件包。

尽你所能判断用户应该被允许运行哪个。如果你不确定,请使用第一条规则,该规则仅允许safe-upgrade

请注意,如果您想允许用户安装软件包(这大大降低了对安全性的任何好处,但只是假设),则需要在命令*后添加一个aptitude,即

ricardo ALL=(root) /usr/bin/aptitude update, /usr/bin/aptitude safe-upgrade, /usr/bin/aptitude install *

否则,您将收到一条错误消息,提示用户ricardo无权运行该命令/usr/bin/aptitude install <package_name>

答案2

您可以使用它sudo -l来查看用户可以运行哪些命令。例如,查看 ricardo 可以运行哪些命令:

sudo -ll -U ricardo

看看他是否能跑得快,

sudo -ll -U ricardo /usr/bin/aptitude

这将打印由 sudo 扩展的命令名称,或者如果用户无权使用该命令则以代码 1 退出。

这应该可以在任何最新的基于 debian 的系统上运行,以供您测试;该语法不是 Ubuntu 特有的。

来源:男人须藤

答案3

我什么也看不见错误的sudo用那行 sudoers。不幸的是,我并没有对 的配置设置进行过多的调整,因此在这种情况下,我的建议可能并不可靠。幸运的是,我给你一条我知道是安全的线路:

ricardo ALL=/usr/bin/aptitude

这一行保证只让 ricardoaptitude以 root 身份执行,只要 ricardo 不是启用 sudo 的组的成员,例如sudoadmin

来源:在 Ubuntu 上调整和配置 Sudo 的 8 种方法 - How-to Geek

相关内容