su(「Switch User:ユーザーを切り替える」の略)
ユーザーを切り替えるコマンドです。スーパーユーザになることもできます。
1 |
su - (ユーザー名) |
ユーザー名を省略した場合は、スーパーユーザー(ルートユーザー)になります。
必要な作業を行った後にexitや、logoutで元のユーザーに戻るのが一般的です。
「su」と「su -」の違い
suコマンドは、「-(ハイフン)」を付ける場合と、つけない場合で意味がかなり異なってきますので、注意しましょう。
「su」
一般ユーザーの環境(環境変数、シェル変数等)は、無条件で指定したユーザーに引き継がれます。
例えばJavaやOracle等を使っている場合に、「JAVA_HOME」、「Oracle_HOME」等の環境変数を利用したシェルを動かしたいといった場合等には影響を出すことなく実行できます。
また、ホームディレクトリは、「home」にあるものがそのまま引き継がれます。
「su -」の場合
一般ユーザーの環境(環境変数、シェル変数等)はrootになる。
また、ホームディレクトリは、「root」のものになります。
sudo(「Super User DO:スーパーユーザーで実行」の略)
「Super User Do」という読んで字のごとく、「スーパーユーザーで実行する」ことができます。
例
1 |
sudo ls -la |
コマンド実行の都度権限を与えるので、コマンド実行完了後は権限が元に戻ります。
ただ、環境変数はsuと違って、デフォルトでは引き継がれないので、環境変数を使ったシェルを動かす場合等には注意です。
また、パスワードは随時求められますが、一般ユーザーのパスワードの入力で、管理者コマンドを実行できるというのもsuとの大きな違いとなります。
suとsudoの使い分けはどのように行えばよいのか?
- 「/etc/sudoers」で権限を細かく設定することができるので、最近は権限を決め細やかに設定するために「su」は禁止して、「sudo」に統一している現場も多いです。
- rootのパスワードが設定されていなかったり、わからない場合も、sudoコマンドを使います。
- 開発元が別になります。suは「util-linuxパッケージ」に含まれていて、sudoは「sudoパッケージ」に含まれています。(機能的には似たようなものですがソースは全く別物になります。)、suはUnix初期から作られていてsudoの方が後発になります。
この記事へのコメントはありません。