我们经常需要在 headless 环境下做一些事情,自动执行一些脚本。有时我们需要 sudo
却苦恼于它需要交互输入密码,那我们应该怎么办?
echo| sudo -S
通过查阅 man sudo
,我们发现有这个方案,-S, --stdin
表示从 stdin 读取密码。
如果我们希望一劳永逸,使某个用户一直处于免密码 sudo
的状态,我们可以通过 sudo visudo
命令修改 /etc/sudoers
文件来实现。
user ALL=(ALL) NOPASSWD:ALL
格式为:
=( ) % =( )
第一个是执行 sudo 的用户,第二个是允许 sudo 的主机,等号后的括号内是允许 sudo 借用的目标用户(一般是 root 或者 ALL),括号外是允许 sudo 的命令。
NOPASSWD 是指无需密码。
但我们仍然可能遇到错误,当发生 sudo: sorry, you must have a tty to run sudo
时,可以 sudo visudo
然后注释掉 Defaults requiretty
行解决。