.配置指定命令sudo免密码使用 - 图1

    在已赋予用户sudo权限的基础上,配置用户sudo执行指定命令时不需要输入密码:

    位置必须在#includedir /etc/sudoers.d 后面,添加在其他地方不生效

    1. sudo chmod u+w /etc/sudoers
    2. sudo vim /etc/sudoers
    3. # 赋予用户执行所有命令不需要输入密码,只需要下面一行
    4. xxx ALL=(ALL) NOPASSWD:ALL
    5. # 赋予用户执行某几个命令不需要密码,注意各个命令必写绝对路径,
    6. # 此时只有指定的命令可以免密sudo执行,其他命令不再有sudo执行权限
    7. xxx ALL= NOPASSWD: /usr/bin/lnmp php-fpm reload,b命令,c命令
    8. # 若设置某些命令免密,其他命令需要密码,需要同时设置如下两行
    9. test ALL=(ALL) ALL
    10. test ALL=(ALL) NOPASSWD: /usr/bin/lnmp php-fpm reload
    11. sudo chmod u-w /etc/sudoers

    上面方式实现了不需要密码执行sudo命令,且在控制台手动执行时也不需要输入密码,但对于敏感命令这样也不好,还有一种方法是在运行命令时从输入自己获取密码

    1. 'echo "111111" | sudo -S rm -rf ./123.txt'

    -S ; 从标准输入读取密码

    这种方法将密码暴露在了代码中(也可以将密码放在一个公共位置,在代码中读取),但在控制台手动执行时是需要输入密码的。

    两种方法可权衡选择。