奇怪的问题是,如果您使用 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 文件中再次定义了它