我正在编写一个需要root访问权限的bash脚本,所以我需要做的就是编写类似
的内容$my_psswd >> sudo some_command parameter1 parameter2
自动化流程。我不担心这是否会打开安全漏洞。这或多或少是我能想到的一个例子。但问题是,当我启动sudo任何东西时,它会询问用户输入,我不确定如何自动化或提供变量。
我尝试过像
这样的事情$my_psswd >1 sudo something
echo $my_psswd | sudo something
但这些都不是我想要的。这也必须是一个bash脚本,我不能使用像expect这样的程序。感谢。
答案 0 :(得分:6)
我建议不要这样做。您将以纯文本格式存储密码,这意味着其他人可以访问该密码。或者它将在流程列表中可见,也可供其他用户使用。
有几种方法可以防止这种情况发生:
sudo -l
。这样sudo将有一个活动的会话,不会提示输入密码。这只是一种解决方法,如果其中一个命令执行的时间比为sudo配置的宽限时间要长,则会失败。但在小脚本中,这可能是一个简单的解决方法。答案 1 :(得分:5)
你需要-S开关sudo命令:
-S The -S (stdin) option causes sudo to read the password from the standard input instead of the terminal device. The password must be followed by a newline character
答案 2 :(得分:3)
尝试echo $ PW | sudo -S cmd
它可能适合你。
答案 3 :(得分:3)
你不要以这种方式使用sudo,使用visudo指定允许哪些命令用户,然后你不需要担心密码。