为了账号安全,请及时绑定邮箱和手机立即绑定

解决sudo command not found 报错

标签:
PHP Linux

偶尔发现的一个问题,平时主要使用 Ubuntu 操作系统,有时候安装一些软件会用加一些自定义PATH,往往为了方便都会把配置写到 /etc/environment 里面,这样所有用户包括root都有效:

jwang@jwang:~$ cat /etc/environment 
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:
/bin:/usr/games:/usr/local/games:/home/jwang/MyBin:/opt/go/bin"
export GOPATH=/home/jwang/Go


比如说安装了go,在使用 sudo go 这样命令的时候会报错,但是切换到 root 用户却没有问题,使用普通用户也没问题,查了一下发现原来 sudo 里面有一些配置:

sudo visudo


在这个 /etc/sudoers 文件里面,有一个secure_path配置,大家一看就知道了,它的意思当你使用 sudo+command 这种形式执行命令的时候会从其配置的路径里面寻找命令,肯定是没有你自定义的PATH的,这个主要是安全考虑。

解决方法有几种:

  1. 直接把自定义PATH路径配置在secure_path里面,简单粗暴,就是有点麻烦
  2. 将 Defaults env_reset 改成 Defaults !env_reset 取消掉对PATH变量的重置,然后在.bashrc中最后添加alias sudo='sudo env PATH=$PATH',这个感觉更麻烦
  3. 直接把这3行注释掉,经测试完全没有任何问题
点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消