だから私はここで何が起こっているのか理解していません。
私はDebian 10.2サーバーを設定し、他のサーバーで行ったように設定しました。ローカルコンピュータであり、私だけが唯一のユーザーなので、すべてがうまく機能するため、すべてのタスクにrootを使用します。これでSSHルートログインを無効にしたいと思います。
ただし、root以外のユーザーを使用してSSH経由でログインすると、「service」や「reboot」などの基本的なコマンドが見つかりません。 (Bash:サービス:コマンドが見つかりません。)
これ以上のことは、「su root」を使用してもこのエントリにアクセスできないことです。私は実際にはルートですが、まだこれらのコマンドにアクセス/見つけることはできません。
ルートとして直接ログインすると、すべてがうまく機能します。
ベストアンサー1
ユーザーのPATH
環境変数には、これらのファイルを含むパスは含まれていません。を使用すると、su -
ルートの環境変数がセッションにロードされます。バラよりman su
:
-, -l, --login
Start the shell as a login shell with an environment similar
to a real login:
o clears all the environment variables except TERM and
variables specified by --whitelist-environment
o initializes the environment variables HOME, SHELL,
USER, LOGNAME, and PATH
o changes to the target user's home directory
o sets argv[0] of the shell to '-' in order to make
the shell a login shell
これをよりよく理解するために、これらのバイナリの1つがどこにあるかを確認し、rootのPATHをユーザーのPATHと比較してみましょう。
- する
su -
- ない。
which service
コマンドを実行すると、service
バイナリがservice
。 - ない。
echo $PATH
これにより、ルートパスが表示されます。service
見つけることができるディレクトリがここにリストされていることがわかります。 - 再度
exit
root 以外のユーザーになります。 - ない。
echo $PATH
手順2で識別したディレクトリがここにないことがわかります。
service
これは、特定のハイパーバイザー(たとえば、など)が同じディレクトリにfdisk
保持され、そのディレクトリが通常のユーザーパスから離れている環境/配布版では一般的なデフォルトです。/usr/sbin
/sbin