有什么好方法可以允许受限用户运行需要管理员权限的脚本?

有什么好方法可以允许受限用户运行需要管理员权限的脚本?

我有一个脚本,希望我的一些用户能够运行该脚本,但该脚本需要管理员权限。当然,我不想授予他们管理员权限。如何允许该脚本以安全的方式运行?

更新:这是一个 Ubuntu 9.10 系统。

答案1

只需使用 sudo。您需要在 中配置 sudo /etc/sudoers,如下所示:

fred ALL = (root) NOPASSWD: /path/to/command

将 fred 替换为用户名,或使用 %group 表示组。如果删除 NOPASSWD: 选项,则每次都会提示他们输入密码。

脚本上的 setuid 不安全,并且在 Linux 上不起作用。

答案2

sudo 和 SUID 都是非常没有安全感. 有可能 — — 并且,根据脚本语言的不同,很容易 — — 摆脱其中任何一个。SUID 是迄今为止最糟糕的,如果这样做,一些脚本语言甚至无法运行。

我有一篇关于如何安全地做到这一点的博客文章,这是我最初为以 root 身份运行 Nagios 检查插件但在这里完全适用。有一个小型 C 程序(多年来一直在 Linux 管理世界中流传)只是充当脚本的包装器。您只需编辑 C 程序源代码以包含脚本的完整路径,编译它,然后设置该 SUID(或授予 sudo 访问权限)。源代码在我的网站上:设置uid程序

以 root 身份运行脚本的固有问题是,在许多语言中,使用各种技术(从糟糕的输入检查到溢出),可能会打破正在运行的脚本并获得完全的 root 访问权限。许多老牌 Unix 专家建议只编写一个 C 程序来做你需要做的事情 - 但话又说回来,他们中的大多数人都是 SA,而你需要能够熟练地编写C语言。

答案3

在哪个操作系统上?

在 Linux/Unix 上,您可以允许他们通过 sudo 运行它。可以修改 /etc/sudoers 文件以向某些 ID(用户)授予指定命令的特定权限。

或者,您可以设置其 SUID 位,并将脚本更改为由特权用户拥有。这会将脚本设置为以该用户的身份运行,而不是以运行它的用户的身份运行。但是,这适用于运行它的所有用户。

答案4

有两种方法:

最好的办法是对其设置 SUID 位:chown root yourscript; chmod a+s yourscript

或者,您可以授予他们使用 修改它的权限sudo,方法是运行visudo并按照说明操作。但是,这是不必要的,因为这可以通过运行sudo(具有 SUID 位)来实现。

相关内容