Debain(buster) su 无法正常工作,未找到命令

Debain(buster) su 无法正常工作,未找到命令
  • 例如:我安装了ifconfig
  • 首先我使用“su”成为 root
  • 现在我写“ifconfig”并得到:“未找到命令”。
  • 我写下“sudo ifconfig”,现在它可以工作了。

这似乎发生在很多程序中(并非全部)。

另一个例子:如果我不使用相同的方法,apt-get 似乎无法正确安装应用程序。

如果我已经是 root 身份,则不需要写 sudo。

这是为什么?我该怎么做才能解决这个问题?

答案1

TL,DR:使用su --loginsudo


DebianPATH为普通用户设置了不同的权限。在 中,您可以看到为 root/etc/profile保留的默认权限:/sbin

if [ "`id -u`" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
export PATH

type ifconfig表示实用程序驻留在 ,/sbin/ifconfig这就是普通用户无法轻松访问它的原因。当您su不带参数运行时,调用用户的环境将保留,包括变量PATHsudo另一方面, 提供了一个新的环境并覆盖了调用用户的PATH


su您认为出现故障的原因是因为重置PATHIFS默认是遗留行为。buster 最近切换到了不同工作原理util-linux的实现;请参阅以了解详情。su/usr/share/doc/util-linux/NEWS.Debian.gz

答案2

正如 dsstorefile1 所说,行为已经改变。

你可以运行“su -”而不是“su”,或者你可以

将“ALWAYS_SET_PATH yes”添加到“/etc/login.defs”以保留旧的 Debian 行为。

答案3

使用su - root而不是su root。然后输入adduser username sudo

相关内容