2016-02-26 101 views
0

我想在终端中运行“sudo rm ing/tmp/instruments_sock”。我通过使用robotil jar的代码来做到这一点。但我无法输入密码。有没有什么办法可以在mac上不要求输入密码的情况下运行这个命令! 我想仅为此命令移除密码。如何在mac中无密码运行Sudo代码

+0

好吧,我只是谷歌“MAC须藤没有密码”,它给我造成的。如果你想我可以在这里复制粘贴步骤... –

+0

@AlexanderB。最好不要,OP也可以谷歌 - 这表明OP没有做任何研究。更重要的是 - 这不是一个编程问题,它是关于StackOverflow的主题,OP应该在超级用户中查看是否有人已经回答了这个问题。 –

+0

@ErwinBolwidt,我同意,基本上我的评论是一个提示和搜索的东西。 –

回答

2

如果你想执行一个没有密码的特权任务,最好的方法是使用一个setuid二进制。

总之,你做了一个小程序,做你想做的。然后通过将其所有者设置为root并启用setuid位来赋予程序root权限。

一个非常重要的警告:不要只在您的setuid二进制文件中调用system("rm /tmp/something")!这是一个经典的安全漏洞。不洁净的环境变量(例如PATH)可以劫持该命令。上面的维基百科链接中有一个简短的安全问题介绍。

而不是使用system(),最简单和最安全的方法是使用该语言自己的文件处理库。如果您不是100%确定自己在做什么,请避免从二进制文件运行shell命令。

+2

也许指出你用'sudo chmod u + s YourScript'设置'setuid'位,并且用'sudo chown root YourScript'将它的所有者设置为root。 –

-1

添加以下行使用sudo的/ etc/sudoers文件你都设置:

# %wheel ALL=(ALL) NOPASSWD: ALL 


dscl . append /Groups/wheel GroupMembership your_username 
+0

第一行不是命令,这就是需要添加到'/ etc/sudoers'文件而没有'#'的地方。这也将消除每个命令的密码需求,而不仅仅是问题中提到的单个命令。 – Jimi