回答:
機能的に同じものを提供するかもしれませんが、「sudo -i」はより軽量で、環境内で便利な後方参照を保持しているようです。
'ps auxf'を見ると、追加のプロセスを確認できます(fはフォレストビューを提供します)
sudo -i はこのプロセスツリーを生成します
jkrauska 4480 0.0 0.0 76828 1656 ? S 23:38 0:00 | \_ sshd: jkrauska@pts/0
jkrauska 4482 0.0 0.0 21008 3816 pts/0 Ss 23:38 0:00 | \_ -bash
root 4675 0.6 0.0 19512 2260 pts/0 S+ 23:42 0:00 | \_ -bash
sudo su-このプロセスツリーを生成します
jkrauska 4480 0.0 0.0 76828 1656 ? S 23:38 0:00 | \_ sshd: jkrauska@pts/0
jkrauska 4482 0.0 0.0 21008 3816 pts/0 Ss 23:38 0:00 | \_ -bash
root 4687 0.5 0.0 43256 1488 pts/0 S 23:42 0:00 | \_ su -
root 4688 0.5 0.0 19508 2252 pts/0 S+ 23:42 0:00 | \_ -su
それらは同じbashプロセスpid、4822から開始しますが、そのsu-は別のステップを生成するように見えることに注意してください。
最初の「sudo」はすでにアクセスレベルをルートに引き上げています。sudo内でユーザー名を指定せずにsuを実行すると、現在のユーザーがrootに2回変更されます。
これを調べる別の方法は、両方のコマンドをstrace -fで実行することです。
strace -f -o sudoi sudo -i
対
strace -f -o sudosu sudo su -
これらの2つのstraceを比較すると、sudo su-に対してより多くの実行が実行されていることがわかります。
もう一つ。
sudo -iは、SUDOによって設定された追加の環境変数を維持します。
SUDO_USER=jkrauska
SUDO_UID=1000
SUDO_COMMAND=/bin/bash
SUDO_GID=1000
sudo su-これらの変数を上書きします。
ショットの答え:いいえ、それらは同じではありません。
長い答え: sudoとsu-同じタスクを実行する異なるプログラムであり、ルート特権に昇格します。
suは、Linuxシステムでルートになるための事実上の方法でした。しかし、常に特権を分離し、監査情報を残す必要がありました。また、suを実行する場合、実行することはすべてrootとして実行され、そのような権限を持つことは危険です。ここで、sudoが助けになりました。
sudoには、suにはないいくつかの特性があります。sudoの重要な要素は、rootとして「1つの」コマンドを実行し、通常のユーザーに特権をドロップする機能です。 例:ルートが所有するファイルを削除します。
sudo rm /root/someFile
別のコマンドの前にsudoコマンドを使用するたびにsudoがルートに昇格するため、このコマンドはファイルを消去します。次に実行したコマンドは、通常のユーザーのように実行されます(最初にsudoコマンドを追加しない限り)。これにより、管理タスクを完了し、すぐに特権をドロップして、危険な状態を回避できます。
sudoは、ユーザーが実行できるプログラムのセットを制限したり、sudoで実行されたコマンドをログに記録したりするなど、他の利点も提供します。詳細については、sudoの概要
あなたが行う場合はsuコマンドを-または-iをSUDOあなたは同じことを行います。これはrootになりつつありますが、suとsudoは完全に異なり、システム管理者として異なるツールを提供することに注意してください。個人的に私はsuを実行することはありません-私のpamポリシーはそれを禁止し、誰も実行することを許可しません。私のシステムでは、追加の利点のsudoの原因を常に使用する必要があります。
詳細:sudoの使用と有効化
su
また、単に単一のコマンドを実行することができます:su -c 'command ...'
sudo -i
とsudo su -
、いない間sudo
とsu
。
sudo su -
無意味ですか?