欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

假设我知道 root 密码,我如何在标准帐户的 OS X 中单独制作一个 sudo 的 Bash 脚本? 有大用 有大大用

 echo "1234" | sudo -S date "121212122022"   这条命令是能够正常执行的  有大用



1个                
           

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

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

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

我试过使用expect,但无济于事(它只是拒绝在 OS X 上工作),而且似乎在 Bash 脚本中传递密码的唯一其他选择是使用echo $pass | sudo -S $command,但它只是一个标准用户试图sudo,它不起作用。                

我已经尝试过echo $pass | sudo -S login rootecho "1234" | sudo -S su rootecho "1234" | sudo -S su,但它们都只是返回“抱歉,请再试一次。”,即使它正在回显正确的密码,而且我知道,因为我可以成功login root                

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

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

                               
获取问题和答案的更新                                        
  • 的价值是多少$pass是根密码还是运行脚本的用户密码?因为sudo需要用户密码,而不是 root 密码。 
    – 格里沙莱维特                                
     2012 年 9 月 12 日 1:29                            
  • 事实上,是的,我刚刚意识到这一点。我想我可能只使用编辑 sudoers。 
    – 用户1650369                                
     2012 年 9 月 12 日 4:44                             
   

2 个回答                

   
6个                    
               

不要将密码存储在脚本中。只需使用文件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必要或有任何奇怪的地方。                    

PS 为什么你需要这样做!?                    

                                   
  • 击败我。允许sudo在不输入密码的情况下工作。您应该将其限制为您需要的命令。当你 sudo 时输入密码是一种安全装置。它警告你,你将要做的事情可能会造成巨大的破坏。 
    – 大卫·W。                                    
     2012 年 9 月 12 日 3:25                                
   
0                    
               

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

来自  https://stackoverflow.com/questions/12379424/how-can-i-make-a-bash-script-that-sudos-all-by-itself-in-os-x-on-a-standard-acc


普通分类: