我正在尝试编写一个 shell 脚本,以便当我再次重新安装 Ubuntu 时。我可以只运行脚本并保留所有包。我计划以参数的形式传递密码。
我的问题是如何sudo
在不手动输入密码的情况下进入域。因为我还计划设计一个无法访问终端的用户界面。
前任:
./recover.sh password
答案1
您可以使用...
echo password | sudo -S recover.sh
密码是你的 sudo 密码。
来自 sudo 手册页..
-S, --stdin 将提示写入标准错误并从标准输入读取密码,而不是使用终端设备。
第二种方法是
sudo -S <<< password apt-get install pkg_name
答案2
如果您不想手动输入密码,可以使用-A
以下选项sudo
-A, --askpass Normally, if sudo requires a password, it will read it from the user's terminal. If the -A (askpass) option is specified, a (possibly graphi‐ cal) helper program is executed to read the user's password and output the password to the standard output. If the SUDO_ASKPASS environment variable is set, it specifies the path to the helper program.
如何使用它?
创建一个包含您的密码的文件(未加密):
cat .pass #!/bin/bash echo password
现在将其权限设置为仅可由您执行:
chmod u=x,go= .pass
现在实际使用情况
SUDO_ASKPASS="~/.pass" sudo -A <command>
这样你就可以运行任何命令根无需输入密码
我不建议您将未加密的密码存储在计算机上,这是非常不安全的。