Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 如何制作sudo';假设我知道根密码,那么在OSX的标准帐户上,这一切都会自动发生吗?_Macos_Bash_Ssh_Sudo - Fatal编程技术网

Macos 如何制作sudo';假设我知道根密码,那么在OSX的标准帐户上,这一切都会自动发生吗?

Macos 如何制作sudo';假设我知道根密码,那么在OSX的标准帐户上,这一切都会自动发生吗?,macos,bash,ssh,sudo,Macos,Bash,Ssh,Sudo,好吧,出于我不想深入讨论的原因(因为它们相当愚蠢),我需要制作一个shell脚本,每隔10秒在OSX上启用SSH。是的,我知道这听起来很愚蠢/毫无意义,但这是有原因的 为了澄清,我知道root密码(我可以在终端中成功地登录root),但脚本将在非管理员用户登录时运行 脚本将作为标准(非管理员)帐户上的启动代理运行,并且需要以某种方式将自身提升到root(我碰巧知道其密码),以便启用SSH 我尝试过使用expect,但没有效果(它只是拒绝在OS X上工作),而且在Bash脚本中传递密码的唯一其他选

好吧,出于我不想深入讨论的原因(因为它们相当愚蠢),我需要制作一个shell脚本,每隔10秒在OSX上启用SSH。是的,我知道这听起来很愚蠢/毫无意义,但这是有原因的

为了澄清,我知道root密码(我可以在终端中成功地
登录root
),但脚本将在非管理员用户登录时运行

脚本将作为标准(非管理员)帐户上的启动代理运行,并且需要以某种方式将自身提升到root(我碰巧知道其密码),以便启用SSH

我尝试过使用
expect
,但没有效果(它只是拒绝在OS X上工作),而且在Bash脚本中传递密码的唯一其他选择似乎是使用
echo$pass | sudo-S$命令
,但它只是一个标准用户尝试
sudo
,而且不起作用

我尝试了
echo$pass | sudo-S登录root
echo“1234”| sudo-S su root
,和
echo“1234”| sudo-S su
,但它们都只返回“对不起,再试一次”,即使它回显了正确的密码,我知道,因为我可以成功地
登录root

无论如何,我想我的问题是,如何向Bash指定我想要
sudo
作为root用户,而不是当前运行脚本的标准帐户。或者,我如何编写一个脚本,当在普通用户下运行时,它将自己提升到root或至少一个管理帐户,而不需要用户输入;当然,假设我知道root的密码


我知道这个场景听起来真的很“为什么你需要一个脚本来做这个”,但请帮帮我;我会非常感激的。”这是我当前的非工作代码。

是否尝试在脚本中使用setuid标志?

是否尝试在脚本中使用setuid标志?

而不是将密码存储在脚本中。。只需使用
/etc/sudoers
文件中的
NOPASSWD
选项。您将需要一行,如:

username ALL = NOPASSWD: /bin/launchctl load -w /System/Library/LaunchDaemons/ssh.plist
然后在脚本中只需执行以下操作:

sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
没有
预期
或任何必要的奇怪之处


还有,你为什么要这么做

而不是将密码存储在脚本中。。只需使用
/etc/sudoers
文件中的
NOPASSWD
选项。您将需要一行,如:

username ALL = NOPASSWD: /bin/launchctl load -w /System/Library/LaunchDaemons/ssh.plist
然后在脚本中只需执行以下操作:

sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
没有
预期
或任何必要的奇怪之处


还有,你为什么要这么做

无法为解释脚本设置UID。你必须给翻译输入。你能解释一下怎么做吗?@jordanm-Oh谢谢你的精确性,我不知道。实际上,出于安全原因,这是有意义的;)@cookiesui:谷歌上有很多关于这方面的教程。正如jordanm所说,无论如何,您不能在脚本上设置setuid位。但是如果在您的情况下有可能,您可能会在自己的可执行文件上设置它(例如,将脚本转换为简单的C程序,编译它,然后尝试将setuid位设置为o)。谷歌上也有很多关于这方面的教程。你不能设置解释脚本。你必须给翻译输入。你能解释一下怎么做吗?@jordanm-Oh谢谢你的精确性,我不知道。实际上,出于安全原因,这是有意义的;)@cookiesui:谷歌上有很多关于这方面的教程。正如jordanm所说,无论如何,您不能在脚本上设置setuid位。但是如果在您的情况下有可能,您可能会在自己的可执行文件上设置它(例如,将脚本转换为简单的C程序,编译它,然后尝试将setuid位设置为o)。谷歌上也有很多关于这方面的教程。
$pass
的价值是什么?是根密码还是运行脚本的用户密码?因为
sudo
需要用户密码,而不是根密码。事实上,是的,我刚刚意识到。我想我可以使用edit the sudoers。
$pass
的值是多少?是根密码还是运行脚本的用户密码?因为
sudo
需要用户密码,而不是根密码。事实上,是的,我刚刚意识到。我想我可以用“编辑苏多尔”来编辑,快来吧。允许
sudo
在不输入密码的情况下工作。您应该将其限制为您需要的命令。当你使用sudo时输入密码是一种安全装置。它警告你,你将要做的事情可能会造成巨大的破坏。快告诉我。允许
sudo
在不输入密码的情况下工作。您应该将其限制为您需要的命令。当你使用sudo时输入密码是一种安全装置。它警告你,你将要做的事情可能会造成巨大的破坏。