使用 sudo 时找不到命令,但不使用 sudo 则无法以 root 身份运行命令

使用 sudo 时找不到命令,但不使用 sudo 则无法以 root 身份运行命令

奇怪的问题是,如果您使用 sudo 命令执行某些命令,则找不到它。但是以 root 用户身份运行它而不使用 sudo 却可以工作。

root@ip-172-31-43-153:/home/ubuntu# sudo xfs_growfs -d /
sudo: xfs_growfs: command not found
root@ip-172-31-43-153:/home/ubuntu# which xfs_growfs
/usr/sbin/xfs_growfs
root@ip-172-31-43-153:/home/ubuntu# sudo which xfs_growfs
root@ip-172-31-43-153:/home/ubuntu# 

路径相同

root@ip-172-31-43-153:/home/ubuntu# sudo echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
root@ip-172-31-43-153:/home/ubuntu# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

说实话,这真是令人难以置信。我现在无法重启机器,所以我不知道重启是否能解决这个问题。

编辑:

我认为问题在于 secure_path 在这里重复了:

root@ip-172-31-43-153:/usr/bin# sudo -l
Matching Defaults entries for root on ip-172-31-43-153:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, use_pty, secure_path=/usr/bin

这是否意味着路径被覆盖为 /usr/sbin?

它看起来sudo which适用于 /usr/sbin 中的任何内容

root@ip-172-31-43-153:/usr/bin# sudo which gio
/usr/bin/gio
root@ip-172-31-43-153:/usr/bin# which gio
/usr/bin/gio

但我不知道它是怎么变成这样的,也不知道如何解决它

/etc/sudoers 只有这个:

root@ip-172-31-43-153:/sbin# cat /etc/sudoers |grep secure
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

答案1

搞清楚了,我的同事在 /etc/sudoers.d 文件中再次定义了它

相关内容