美文网首页
sudo xx 找不到命令

sudo xx 找不到命令

作者: 田丰w | 来源:发表于2020-07-18 16:22 被阅读0次

    使用 sudo 执行时, 环境变量默认会重置, PATH 不再是执行 sudo 之前的了. 导致很多命令在一般用户下找得到, 换sudo执行就找不到了

    方案一. 直接指定到文件,相对安全

    在 /usr/bin 下面给需要的命令建立软连接. 因为 /usr/bin 包含在sudo的secure_path路径中. 如
    sudo ln -s /opt/nodejs/node/bin/node /usr/bin/node

    方案二. 指定到了目录,有点风险

    修改 /etc/sudoers 里的 secure_path 变量, 把需要的目录路径加入进去.
    修改/etc/sudoers文件使用 visudo 命令:
    sudo visudo

    Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/opt/nodejs/node/bin
    

    然后使用 sudo -E 执行命令. -E会保持当前的环境变量,但仍然需要执行的命令位于 secure_path 路径之中. 如"
    sudo -E pm2 status

    方案三. 可执行sudo的范围更大,比较危险

    sudo env PATH=$PATH <需要使用sudo执行的命令>

    嫌每次输入麻烦的,配置sudo命令别名
    vim .bash_aliases # 或者 vim .bashrc
    alias sudo='sudo env PATH=$PATH'

    相关文章

      网友评论

          本文标题:sudo xx 找不到命令

          本文链接:https://www.haomeiwen.com/subject/hmkfkktx.html