如何限制 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 身份执行。