コマンドの違いは何ですかSudo -i
およびSudo su -
?
彼らは同じですか?
それらは機能的に同じものに近いものを提供するかもしれませんが、 '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'はすでにアクセスレベルをrootに引き上げています。 Sudo内でユーザー名を指定せずにsuを実行すると、現在のユーザーがrootに2回変更されます。
これを調査する別の方法は、strace -fを使用して両方のコマンドを実行することです。
strace -f -o sudoi Sudo -i
対
strace -f -o sudosu Sudo su -
これらの2つのstraceを比較すると、Sudo su-に対して実行されているexeveが増えることがわかります。
もう一つ。
Sudo -i Sudoによって設定された追加の環境変数を維持します。
Sudo_USER=jkrauska
Sudo_UID=1000
Sudo_COMMAND=/bin/bash
Sudo_GID=1000
Sudo su-それらの変数を破壊します。
ショットの答え:いいえ、それらは同じではありません。
長い答え:Sudoとsu-は、同じタスクを実行する異なるプログラムであり、root権限に昇格します。
suは、Linuxシステムでrootになるための事実上の方法でした。ただし、特権を分離し、一部の監査情報を残しておく必要が常にありました。また、su-を実行する場合も、実行するすべての操作はrootとして実行されるため、それだけの能力を持つことは危険です。ここで須藤が助けになりました。
sudoには、suにはないいくつかの特性があります。 Sudoの重要な要素は、「1つの」コマンドをrootとして実行し、特権を通常のユーザーにドロップできることです。 例:rootが所有するファイルを削除します。
Sudo rm /root/someFile
Sudoは、別のコマンドの前にSudoコマンドを使用するたびにrootに昇格するため、このコマンドはファイルを消去します。次に実行するコマンドは、通常のユーザーのように実行されます(最初にSudoコマンドを追加しない限り)。これにより、管理タスクを実行し、すぐに特権を削除して、危険な状態を回避できます。
Sudoには、ユーザーが実行できる一連のプログラムを制限したり、Sudoで実行されたコマンドをログに記録したりするなど、他の利点もあります。詳細情報 sudoの概要
su-またはSudo -iを実行すると、同じことを行います。これはルートになりつつありますが、suとSudoは完全に異なり、システム管理者としてさまざまなツールを提供することに注意してください。個人的に私はsuを実行することはありません-私の pamポリシーはそれを禁止します 。私のシステムでは、常にSudoを使用する必要があるため、追加の利点があります。
詳細: Sudoの使用と有効化