我已经使用交钥匙 linux redmine 设置了一个虚拟机,并且正在尝试通过 SSH 连接到服务器以安装更多项目。
它似乎无法识别 sudo 命令。每次我尝试 sudo 某些操作时,都会收到一条错误消息:
-bash: sudo: command not found
我在其他地方读到输入“whereis sudo”,输出是:
sudo:
答案1
也许是没有安装?打开你的包管理器并安装须藤包裹。
答案2
它看起来来自http://www.turnkeylinux.org/redmine像Redmine一样,与Ubuntu不同,默认情况下不使用sudo。您使用什么用户名进行 SSH?如果是root
,那么您不需要使用sudo
,因为当您通过 SSH 连接到 Redmine 系统时所做的一切都是按照 进行的root
。如果是其他内容,例如admin
,那么您可以尝试使用该su
命令来获取一个root
shell,在其中以root
.
答案3
首先登录您的根帐户。然后
$ apt-get install sudo
将您现有的用户添加到组中sudo
$ sudo adduser <user> sudo
然后您应该以 身份登录<user>
,并且sudo
命令应该在那里。
答案4
发生错误的原因是您尝试从命令行调用的二进制文件只是当前用户的 PATH 变量的一部分,而不是 root 用户的 PATH 的一部分。
您可以通过找到您尝试访问的二进制文件的路径来验证这一点。就我而言,我试图调用“bettercap-ng”。于是我跑了,
$ which bettercap-ng
output: /home/user/work/bin/bettercap
我检查了这个位置是否是我的根用户路径的一部分。
$ sudo env | grep ^PATH
输出:PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
因此 sudo 找不到我尝试从命令行调用的二进制文件。因此返回错误命令未找到。
您可以在调用二进制文件时指示 sudo 使用当前用户的 PATH,如下所示。
$ sudo -E env "PATH=$PATH" [command] [arguments]
事实上,我们可以用它来创建一个别名:
$ alias mysudo='sudo -E env "PATH=$PATH"'
也可以将别名本身命名为 sudo,替换原来的 sudo。
请参阅这个视频逐步解决方案