Linuxコマンドのsudoとsuとsudo suとsudo su -コマンドの違いを分かりやすく
suコマンド(switch user、substitute user)はユーザを切り替えるコマンドです。
[ec2-user@humidai ~]$ su ec3-user
これでec3-userというユーザが存在していればユーザを切り替えることができます。
suコマンドでユーザを省略するとrootを指定したことになります。
[ec2-user@humidai ~]$ su パスワード:
パスワードを入力します。rootのパスワードを知らない場合、rootユーザにはスイッチできません。suコマンドでrootユーザに変更するにはパスワードが必要になります。
sudoコマンドで指定コマンドをroot権限で実行する
rootユーザのパスワードを知らなくてもroot権限でコマンドを実行したいがあります。
sudoコマンド(superuser do)を使えば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の変数に変わります。
逆にハイフン(-)をつけない場合、rootに変更されますが、環境変数などはそのまま保持することになります。
コマンド | 環境変数 |
---|---|
sudo su(sudo -s) | かわらない |
sudo su -(sudo -i) | かわる |
sudo su使う人はオッサン
一部話題になったオッサン認定ですが、全然そんなことないです。sudo su
は現場でバリバリ使います。
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント