在已赋予用户sudo权限的基础上,配置用户sudo执行指定命令时不需要输入密码:
位置必须在#includedir /etc/sudoers.d
后面,添加在其他地方不生效
sudo chmod u+w /etc/sudoers
sudo vim /etc/sudoers
# 赋予用户执行所有命令不需要输入密码,只需要下面一行
xxx ALL=(ALL) NOPASSWD:ALL
# 赋予用户执行某几个命令不需要密码,注意各个命令必写绝对路径,
# 此时只有指定的命令可以免密sudo执行,其他命令不再有sudo执行权限
xxx ALL= NOPASSWD: /usr/bin/lnmp php-fpm reload,b命令,c命令
# 若设置某些命令免密,其他命令需要密码,需要同时设置如下两行
test ALL=(ALL) ALL
test ALL=(ALL) NOPASSWD: /usr/bin/lnmp php-fpm reload
sudo chmod u-w /etc/sudoers
上面方式实现了不需要密码执行sudo命令,且在控制台手动执行时也不需要输入密码,但对于敏感命令这样也不好,还有一种方法是在运行命令时从输入自己获取密码
'echo "111111" | sudo -S rm -rf ./123.txt'
-S ; 从标准输入读取密码
这种方法将密码暴露在了代码中(也可以将密码放在一个公共位置,在代码中读取),但在控制台手动执行时是需要输入密码的。
两种方法可权衡选择。