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


10

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

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

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

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


它可以在特定时间或某些事件发生时运行吗?
user151019 2011年

9
旧时的unix专家建议,定期手工调用仅root用户操作就意味着您做错了。这可以自动化吗?还是作为守护程序运行?更多细节可能会提出其他解决方案的建议。
dmckee ---前主持人小猫,

该程序实际上由root拥有吗?Setuid / gid将使用文件的用户/组。
丹尼尔·贝克

2
…“更多细节”还包括诸如该程序的二进制文件是否在NFS挂载的卷上以及是否使用nosuidmount选项等……以及为什么必须作为超级用户定期运行程序的原因。
JdeBP

@dmckee许多Mac用户在其工作站上运行服务器软件,并且通常将其设置为需要root才能真正不需要的东西...但是重新配置LAMP堆栈以在没有root的情况下运行很麻烦。另一方面,每天重新启动Apache 20次并每次键入sudo也是一个麻烦。这是一个简单的解决方案。
Abhi Beckert 2012年

Answers:


2

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


17

解决您的问题的方法:

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

username ALL= NOPASSWD: /path/to/command

然后从命令行输入:

sudo command

它将在不要求您输入密码的情况下运行该命令。该命令将以root身份运行。

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


惊讶地发现底部的最佳答案。谢谢!
CDR 2012年

仅供参考,要解决另一半(不必键入sudo命令),请创建一个在命令中包含sudo的shell别名(例如surm = sudo rm“ $ @”)
Walter

4

如果您确实由于某种原因不能将其作为守护程序调用(该问题在该实例中将是相关的)可以将该方法一起使用,但是它很脏,并且根本不安全。

其概念是使用AppleScript启动它。首先,您需要知道如何从命令行调用该过程(如果您已经在使用sudo,则意味着您已经准备就绪)。您将使用do shell script命令启动该过程,而不是使用sudo,而是将凭据写入AppleScript:

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

我重申关于这种不安全的部分:这意味着您的管理员信用将以纯文本形式存储。如果可能的话,您应该找到某种方法将其作为LaunchDaemon进行后台处理。


一种为您的Mac使用“ Runas”的方法:)谢谢
Vlueboy 2011年

2

在OSX上,假设您拥有的程序位于/ usr / local / bin / YourProgramName ...中,要解决此问题,请使用以下命令,要更改以文件而不是文件本身为根的文件层次结构的用户ID /组ID, 。

sudo chown -R $(whoami) /usr/local/bin/

...然后在终端中调用您的programName,$ YourProgramName


我的问题是已安装的程序没有适当的权限安装,因此我在这些程序的目录上运行了此程序,现在它们可以正常运行而无需sudo。谢谢!
atwixtor

0

你可以做

sudo tcsh

这会让您进入根目录。


0

看起来程序本身检查是否正在以ID = 0运行


1
…如果它是set-UID超级用户,那当然是哪个(将上面提到的问题放在一边)。什么你可能想说的是,该方案正在检查实际 UID 0,而不仅仅是有效的 UID 0
JdeBP

-1

你可以的sudo chown YOUR-USERNAME-HERE BINARY-NAME-HERE

不过,我完全同意dmckee的评论。


这将有什么帮助??
Scott
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.