web-dev-qa-db-ja.com

Debian(buster)suが正しく機能せず、コマンドが見つかりません

  • 例:ifconfigをインストールしました
  • まずは「su」でrootになります
  • ここで、「ifconfig」と記述して、「コマンドが見つかりません」を取得します。
  • 「Sudoifconfig」と書いて、動作するようになりました。

これは多くのプログラム(すべてではない)で発生するようです。

別の例:同じ方法を使用していない場合、apt-getはアプリケーションを正しくインストールしていないようです。

すでにrootになっている場合は、Sudoを作成する必要はありません。

何故ですか?これを修正するにはどうすればよいですか?

1
James Greenland

TL、DR:su --loginまたはSudoを使用します。


Debianは、通常のユーザーに対して異なるPATHを設定します。 /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を実行すると、PATH変数を含め、呼び出し元のユーザーの環境が保持されます。一方、Sudoは新しい環境を提供し、呼び出し元のユーザーのPATHをオーバーライドします。


suが誤動作していると思われる理由は、デフォルトでPATHIFSをリセットするのはレガシー動作だからです。バスターは最近、動作が異なるsuutil-linux実装に切り替えました。詳細については、/usr/share/doc/util-linux/NEWS.Debian.gzを参照してください。

4
user873319

su - rootの代わりにsu rootを使用してください。次に、adduser username Sudoと入力します

0
pauls

Dsstorefile1が言ったように、動作が変更されました。

「su」の代わりに「su-」を実行するか、

古いDebianの動作を維持するには、「/ etc /login.defs」に「ALWAYS_SET_PATHyes」を追加します。

0
PiT