これまで見てきたように、root 権限でサーバーに直接ログオンすることはお勧めできません。標準ユーザー アカウントでログオンし、必要に応じて権限を root に昇格させることをお勧めします。特権を昇格させる 1 つの方法は、su コマンドを使用して「ユーザーを置き換える」ことです。オプションなしで su コマンドを使用すると、ユーザーは ID を別のユーザーの ID に切り替えることができますが、元のユーザーのプロファイルと変数は保持されます。切り替えられたユーザーも、元のユーザーのホーム ディレクトリに残ります。 root ユーザー以外の su を使用するすべてのユーザーは、切り替え先のユーザー アカウントのパスワードを求められます。
su の後にハイフンを付けて使用すると、ユーザーはユーザーを変更し、その新しいユーザーのコンテキストで新しいシェルを起動できます。これははるかに優れた方法です。 root ユーザー以外の「su –」を使用するユーザーは、切り替え先のユーザーのパスワードを求められます。 root ユーザーに切り替えるのが最も一般的ですが、ユーザーのパスワードを知っている限り、どのユーザーも他のユーザーに切り替えることができます。
su コマンドの構文は次のとおりです。
$ su [-] [user name]注意 注:ユーザー名の引数がない場合、「su -」コマンドは、root としてサインインするつもりであると想定します。
su コマンドの実行中に以下のエラーが発生した場合:
su: command not found
選択したディストリビューションに従って、以下に示すように util-linux パッケージをインストールしてみてください。
分布 | コマンド |
---|---|
OS X | brew install util-linux |
Debian | apt-get install util-linux |
Ubuntu | apt-get install util-linux |
アルパイン | apk add util-linux |
Arch Linux | pacman -S util-linux |
カリ Linux | apt-get install util-linux |
CentOS | yum install util-linux |
Fedora | dnf インストール util-linux |
Raspbian | apt-get インストール ログイン |
su コマンドの例
1. スーパーユーザーに切り替えます (root パスワードが必要です):
$ su
2. 特定のユーザーに切り替えます (ユーザーのパスワードが必要です):
$ su username
3. 特定のユーザーに切り替えて、完全なログイン シェルをシミュレートします。
$ su - username
4. 別のユーザーとしてコマンドを実行します:
$ su - username -c "command"
注意
su コマンドの実行時に許可されるオプションは、– オプションです。 – オプションを指定して su コマンドを実行すると、新しいログイン シェルが提供されます。 – 文字を使用しない場合、非ログイン シェルが提供されます。