如何在没有“sudo”的情况下以 root 身份运行程序?

如何在没有“sudo”的情况下以 root 身份运行程序?

我在 OS X 上有一个二进制程序,它只能以 root 身份运行。

我厌倦了sudo每次调用它并输入密码时都要添加前缀,并且希望它在我定期调用它时自动以 root 身份运行,而不要求输入密码。

该程序的所有者是 root,其组是 wheel。

我尝试chmod ug+s在执行时将用户 ID 和组 ID 设置为 root/wheel,但是当我在没有 sudo 的情况下运行该程序时,它仍然抱怨它只能使用 sudo 或以 root 身份运行。

答案1

您确定要执行的程序实际上是二进制文件,而不是 shell 脚本吗?大多数 shell 会忽略 suid 脚本,因为它们确实很难安全地执行。一种简单的检查方法是使用file程序上的命令。

答案2

解决您问题的一半方法:

在 sudoers 文件中,添加以下内容:

username ALL= NOPASSWD: /path/to/command

然后从命令行输入:

sudo command

它将运行该命令而不要求您输入密码。此命令将以 root 身份运行。

请注意,您需要用您的实际用户名替换用户名。

答案3

如果你出于某种原因无法将其作为守护进程调用(该问题与该实例相关),这种方法很容易被黑客入侵,但是它非常肮脏,而且一点也不安全。

概念是使用 AppleScript 启动它。您首先需要知道如何从命令行调用该进程(如果您已经在使用 sudo,则意味着您必须已全部设置好)。您将使用命令启动该进程do shell script,而不是使用 sudo,而是将您的凭据写入 AppleScript:

do shell script "/path/to/your/executable/here" user name "me" password "mypassword" with administrator privileges

我重申一下关于这种不安全的部分:这意味着您的管理员凭证将以纯文本形式存储。如果可能的话,您应该找到某种方法将其作为 LaunchDaemon 背景化。

答案4

你可以做

sudo tcsh

这将使您进入 root shell。

相关内容