我想运行以下示例 bash 脚本,该脚本需要 sudo 密码才能执行命令
#!/bin/bash
kinit #needs sudo password
vi hello.txt
在运行上述脚本时,它要求输入密码。
我如何在命令本身中传递用户名和密码,或者有什么更好的方法可以跳过在脚本中传递我的密码?
你不能——至少,不是你想的那样。
你有几个选择:
sudo -v
. 凭据将被临时缓存,让您有时间运行脚本。其中一项或多项肯定会让你到达你想去的地方——只是不是你想去的地方。
因此,如果您可以访问整个系统,则可以更改 sudoers 文件以允许某些 sudo 命令在没有密码的情况下运行。
在命令行运行visudo
找到您的用户并将该行更改为如下所示:
pi ALL=(ALL) NOPASSWD: /path/to/kinit, /path/to/another/command
那应该这样做。再试一次!
希望有帮助
你不应该传递用户名和密码。这是不安全的,如果更改密码,它将无法正常工作。
你可以使用这个:
gksudo kinit # This is going to open a dialog asking for the password.
#sudo kinit # or this if you want to type your password in the terminal
vi hello.txt
或者你可以在 root 下运行你的脚本。但请注意,vi 也将以 root 身份运行,这意味着它可能会创建属于 root 的文件,这可能不是您想要的。