我正在创建一个脚本。我希望此脚本执行下一个任务:以 root 用户身份登录。 (我正在尝试使用一行)如何创建自动输入密码的脚本?
#echo "Hello Admin"
#su root@admin
我只想执行 bash 脚本而不输入密码。为什么它要求我输入密码?
答案1
这是不可能的!不适用于该命令,但您可以使用 创建 sudo 用户ALL ALL: NO Password
,在线搜索如何创建 sudo 用户以sudo
在没有密码的情况下运行命令。
答案2
如果您的目标是su
没有密码,我建议使用sudo su
.允许用户su
在没有密码的/etc/sudoers
情况下使用
[username] ALL=(ALL) NOPASSWD: /bin/su
或者
[username] ALL=(ALL) NOPASSWD: ALL
因为用户已经可以通过 root 访问权限做任何他/她想做的事情。与从脚本传递明文密码相比,其优点是root
密码不会泄露。请记住,删除脚本后密码可能是可读的。
编辑:下面的解决方案毕竟不起作用,su
将其stdin
视为命令并在执行后退出。echo 'passwd'|sudo -S [command]
适用于大多数命令,但su
如果您使用它,请注意,如果没有要求stdin
密码,则仍然有密码,因为时间戳仍然是新鲜的。sudo
您可以使用sudo -k
first 来强制查询密码。sudo -k && echo 'passwd'|sudo -S [cmd]
。不过,更好地使用NOPASSWD
在/etc/sudoers
.
NOPASSWD:
编辑:此外,您还可以使用sudo -S
读取sudo
密码stdin
并使用类似 的内容,而不是使用echo [password]|sudo -S su
。sudo
获取用户密码并需要运行权限/bin/su
或ALL
如上所述。与所有sudo
命令一样,预期的密码是用户的密码,而不是root
'