Linuxコマンドのsudoとsuとsudo suとsudo su -コマンドの違いを分かりやすく

Linuxコマンドのsudoとsuとsudo suとsudo su -コマンドの違いを分かりやすく

suコマンド(switch user)はユーザを切り替えるコマンドです。

[ec2-user@humidai ~]$ su ec3-user

これでec3-userというユーザが存在していればユーザを切り替えることができます。

suコマンドでユーザを省略するとrootを指定したことになります。

[ec2-user@humidai ~]$ su
パスワード:

パスワードを入力します。rootのパスワードを知らない場合、rootユーザにはスイッチできません。suコマンドでrootユーザに変更するにはパスワードが必要になります。

sudoコマンドで指定コマンドをroot権限で実行する

rootユーザのパスワードを知らなくてもroot権限でコマンドを実行したいがあります。

sudoコマンドを使えばroot権限で実行することができます。(visudoで権限を与えておく必要があります)

sudo コマンド

これでroot権限でコマンドを実行することができます。sudo vi hoge.txtとするとhoge.txtがrootで作成されます。

[ec2-user@humidai ~]$ ls -la
合計 28
drwxrwxr-x 11 ec2-user ec2-user 193 12月 12 13:10 .
drwx------ 18 ec2-user ec2-user 4096 12月 11 20:32 ..
-rw-r--r-- 1 root root 3 12月 12 13:10 hoge.txt ★

rootユーザに変更する訳ではなくroot(指定したユーザ)権限でコマンドが実行できるようになります。

sudo suをわかりやすく

sudoコマンドはroot権限で指定コマンドを実行します。suコマンドはユーザを変更します。

sudo suコマンドはroot権限でsuコマンドを実行します。(sudo su rootと同じ)

これでrootユーザのパスワードを知らなくてもrootユーザに変更することが出来てしまいます。

sudo suとsudo su -の違い

sudo suとsudo su -はほぼ同じですが違います。

何が違うかというとコマンド実行後のホームディレクトリが変わります。

[ec2-user@humidai ~]$ sudo su -
[root@humidai ~]# pwd
/root

[ec2-user@humidai ~]$ sudo su
[root@humidai ec2-user]# pwd
/home/ec2-user

ハイフン(-)をつけるとホームディレクトリがrootのホームディレクトリに変わります。

環境変数(printenv)やシェル変数(set)などもrootの変数に変わります。

コマンド 環境変数
sudo su(sudo -s) かわらない
sudo su -(sudo -i) かわる

sudo su使う人はオッサン

一部話題になったオッサン認定ですが、全然そんなことないです。sudo suは現場でバリバリ使います。

コメント

タイトルとURLをコピーしました