linux sudo不能执行命令,为什么linux中sudo执行会“找不到命令”

  • Post author:
  • Post category:linux


sudo:command not found

在本地装了个Ubuntu虚拟机,golang环境搭好了并加入PATH环境变量,make编译源码时显示Permission denied,然后sudo执行编译源码时显示sudo: go: command not found。

然后尝试执行go version命令

非root用户执行 :go version go1.12.6 linux/amd64

root用户执行 :go version go1.12.6 linux/amd64

非root用户sudo执行 : sudo: go: command not found

这???是不是很奇怪???到底是因为什么呢??

原来root用户和非root用户正常执行命令时,使用的PATH配置文件是 /etc/environment

非root用户sudo执行命令时,使用的PATH配置文件是 /etc/sudoers

/etc/sudoers文件默认是reanonly只读的,需要加入些权限;然后在secure_path中加入GOROOT路径即可:

修改前

Defaults secure_path=”/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin”

修改后

Defaults secure_path=”/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/usr/local/go/bin”