ネットワークインストーラを使用してDebian 11 "Bullseye"(サーバーとして使用)を新規インストールする場合、ルートのパスは次のようになります。
root@debian:~# echo $PATH | tr : '\n'
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
他のユーザーのパスは次のとおりです。
jivan@debian:~$ echo $PATH | tr : '\n'
/usr/local/bin
/usr/bin
/bin
/usr/local/games
/usr/games
この動作は最初の数行で発生します/etc/profile
。
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
しかし、なぜこれがデフォルトの動作ですか? Ubuntuサーバーから来たすべてのユーザー/usr/sbin
は自分のPATHを持っ/usr/local/sbin
ています(私が言及/etc/profile
した行はUbuntuインストールには存在しません)。ルート注文。この問題を「修正」するために1行を追加しましたが、/etc/profile.d
これがデフォルトの理由を知りたいです。
答え1
~からファイルシステム階層標準:
3.16。 / sbin:システムバイナリ3.16.1。目的システム管理ユーティリティ(および他のルート専用コマンド)は、/ sbin、/usr/sbin、および/usr/local/sbinに保存されます。
したがって、私たちは正しく実行するために必要な管理レベルのコマンド/sbin
だけが必要であることがわかります。root
一般ユーザーには不要で、実行しようとするとエラーが発生する可能性があります。
管理者権限を持つ単一のユーザー(たとえばを通じて)を使用するシステムでは、sudo
これらのディレクトリを追加するのが妥当である可能性があります。管理者と非管理者を持つマルチユーザーシステムでは、管理者は自分の$HOME/.profile
。