如何限制 UNIX 用户只能使用给定的脚本?

如何限制 UNIX 用户只能使用给定的脚本?

如何限制 UNIX 用户(除了 sudo!)只允许其以 root 身份运行脚本?

答案1

除了sudo我知道的唯一其他方法是使用 setuid。这是 Unix 中内置的一种机制,您可以在磁盘上的程序上设置一些位,以便任何时候有人执行它时,可执行文件都会以文件所有者的身份运行,而不是尝试运行它的用户。

但此功能通常不适用于#!/bin/...顶部需要 shebang ( ) 的脚本或程序。如果文件启用了此位,它将在文件系统中显示如下:

-rws------ 1 saml saml 3354099 Oct 28 16:07 someapp

您可以设置一个启用该位的程序,如下所示:

$ chmod u+s someapp

但即使启用了该位,它也常常会被忽略,并使不明白这是设计使然的用户发疯。通常出于安全原因,不允许使用 shebang 的 shell 脚本或程序以这种方式运行。

手册页 ( credentials& capabilities) 涵盖了其中的一些内容。

因此,一般来说,即使您不想听到这个,最好的选择是使用sudo.

相关 Unix 和 Linux 问答

答案2

您可以在密码文件中为该用户指定用户 ID 0,并让该脚本成为其登录 shell。当用户使用其名称和密码登录时,脚本将以 root 身份运行、终止,然后用户注销。因此,用户仅限于该根脚本。

答案3

也许我不明白你的问题,但组可以用来控制用户可以做什么。

一种可能性是将用户分配到传统组车轮。当然,这又取决于苏多尔斯文件中应该有一个默认条目,例如:

%wheel ALL=(ALL) ALL  # password required.

或者

%wheel ALL=(ALL) NOPASSWD: ALL  # no password required.

您可以通过以下方式执行此操作:

usermod -a -G wheel {username}

那么 {username} 应该能够以 root 身份执行。

相关内容