好的,出于我不愿讨论的原因(因为它们很傻),我需要制作一个Shell脚本,该脚本应每10秒在OS X上启用SSH。是的,我知道这听起来很傻/毫无意义,但这是有原因的。
为了澄清起见,我知道root密码(我可以在Terminal中成功login root
),但是该脚本将在非管理员用户登录时运行。
该脚本将作为启动代理在标准(非管理员)帐户上运行,并且需要以某种方式将其自身提升为root(我偶然知道其密码),以便可以启用SSH。
我尝试过使用expect
,但无济于事(它只是拒绝在OS X上工作),并且似乎在Bash脚本中传递密码的唯一其他选择是使用echo $pass | sudo -S $command
,但这只是标准用户的尝试到sudo
,它不起作用。
我已经尝试过echo $pass | sudo -S login root
,echo "1234" | sudo -S su root
和echo "1234" | sudo -S su
,但是它们都返回“对不起,再试一次。”,即使它回显了正确的密码,我知道因为我可以成功login root
。
无论如何,我想我的问题是,我如何才能将要sudo
的Bash指定为Bash,而不是运行脚本的当前标准帐户。否则,我该如何编写一个脚本,当它在普通用户下运行时,它本身可以提升为root或至少一个管理帐户,而无需用户输入。当然,假设我知道root的密码。
我知道这种情况听起来确实是“为什么您需要脚本来执行此操作”,但是请帮助我;我将非常感激。 Here是我当前无法使用的代码。
最佳答案
无需在脚本中存储密码。.只需在NOPASSWD
文件中使用/etc/sudoers
选项即可。您将需要在其中输入以下内容:
username ALL = NOPASSWD: /bin/launchctl load -w /System/Library/LaunchDaemons/ssh.plist
然后在脚本中执行以下操作:
sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
无需
expect
或任何怪异的东西。附言为什么需要这样做!?
关于macos - 假设我知道root密码,如何在OS X中使用标准帐户制作一个sudo本身的Bash脚本?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12379424/