好吧,由于我不会进入的原因(因为它们相当愚蠢),我需要制作一个shell脚本,它将在OS X上启用SSH,比如10秒.是的,我知道这听起来很愚蠢/没有意义,但有一个原因.
只是为了澄清,我知道root密码(我可以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.
无论如何,我想我的问题是,我如何指定Bash我想要以sudoroot身份,而不是运行脚本的当前标准帐户.或者,我如何编写一个脚本,当在普通用户下运行时,它将自己提升为root或至少一个管理帐户,而不需要用户输入; 假设我知道root的密码,当然.
我知道这个场景听起来真的"为什么你需要一个脚本才能做到这一点",但请帮助我; 我真的很感激.这是我目前的非工作代码.
而不是将密码存储在脚本中..只需使用文件中的NOPASSWD选项/etc/sudoers.你会想要一条线在那里:
username ALL = NOPASSWD: /bin/launchctl load -w /System/Library/LaunchDaemons/ssh.plist
Run Code Online (Sandbox Code Playgroud)
然后在你的脚本中做:
sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
Run Code Online (Sandbox Code Playgroud)
没有expect或任何必要的怪异.
PS为什么你需要这样做!?
| 归档时间: |
|
| 查看次数: |
4031 次 |
| 最近记录: |