root以外のユーザーとしてログインすると、一部のコマンドにアクセスできなくなります(「su root」以降)。

root以外のユーザーとしてログインすると、一部のコマンドにアクセスできなくなります(「su root」以降)。

だから私はここで何が起こっているのか理解していません。

私は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と比較してみましょう。

  1. するsu -
  2. ない。which serviceコマンドを実行すると、serviceバイナリがservice
  3. ない。echo $PATHこれにより、ルートパスが表示されます。service見つけることができるディレクトリがここにリストされていることがわかります。
  4. 再度exitroot 以外のユーザーになります。
  5. ない。echo $PATH手順2で識別したディレクトリがここにないことがわかります。

serviceこれは、特定のハイパーバイザー(たとえば、など)が同じディレクトリにfdisk保持され、そのディレクトリが通常のユーザーパスから離れている環境/配布版では一般的なデフォルトです。/usr/sbin/sbin

おすすめ記事