Linuxコマンドのsudoとsuとsudo suとsudo su -コマンドの違いを分かりやすく
suコマンド(switch user)はユーザを切り替えるコマンドです。
1 |
[ec2-user@humidai ~]$ su ec3-user |
これでec3-userというユーザが存在していればユーザを切り替えることができます。
suコマンドでユーザを省略するとrootを指定したことになります。
1 2 |
[ec2-user@humidai ~]$ su パスワード: |
パスワードを入力します。rootのパスワードを知らない場合、rootユーザにはスイッチできません。suコマンドでrootユーザに変更するにはパスワードが必要になります。
sudoコマンドで指定コマンドをroot権限で実行する
rootユーザのパスワードを知らなくてもroot権限でコマンドを実行したいがあります。
sudoコマンドを使えばroot権限で実行することができます。(visudoで権限を与えておく必要があります)
1 |
sudo コマンド |
これでroot権限でコマンドを実行することができます。sudo vi hoge.txt
とするとhoge.txtがrootで作成されます。
1 2 3 4 5 |
[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 -はほぼ同じですが違います。
何が違うかというとコマンド実行後のホームディレクトリが変わります。
1 2 3 4 5 6 7 |
[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) | かわる |
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^