回答:
このsudo suコマンドは「ユーザーの切り替え」の略で、別のユーザーになることができます。許可されたユーザーは、sudoersファイルで指定されているスーパーユーザーまたは別のユーザーとしてコマンドを実行できます。
‑i(初期ログインのシミュレート)オプションは、ターゲットユーザーのパスワードデータベースエントリで指定されたシェルをログインシェルとして実行します。これは、.profileや.loginなどのログイン固有のリソースファイルがシェルによって読み取られることを意味します。コマンドが指定されている場合、シェルの‑cオプションを介して実行するためにコマンドがシェルに渡されます。コマンドが指定されていない場合、対話型シェルが実行されます。
ソース:ManPage
sudo suすると、rootパスワードではなくパスワードが求められます。rootユーザーはパスワードさえ持っている必要はありません。とにかく、管理者がrootパスワードを使用している場合、すべての一般ユーザーがそれを知っていることを意味するわけではありません。
sudo実行さsuれ、rootはsuパスワードを知らなくてもすべてのユーザーに対して実行できます。システムがどのように機能するかについての基本的な誤解は、下票IMOに値する。
sudo -iルートのパスワードも要求されないため、質問には関係ありません。
sudo su現在のユーザーのみをルートに変更します。環境設定(PATHなど)は変わりません。
sudo -i rootがログインしたばかりのような新鮮な環境を作成します。
他のユーザーを使用する場合、違いはより顕著です。後はsudo su bob、あなたがたが、同じ場所で、ボブになります。後はsudo -i -u bob、あなたはボブのデフォルトのシェルとボブのホームディレクトリにあるボブ、そしてボブのとなり.profile、他のログインスクリプトが実行されました。
実行man sudo内容の詳細については、をご覧ください-i。残念ながら、man su詳細はわずかです。
以下を含むman su(login-1:4.1.4.2 + svn3283-3ubuntu5.1からの)バージョンを見つけました:
/etc/login.defsオプションENV_PATHまたはENV_SUPATHに従って$ PATHがリセットされます(以下を参照)。
$ IFSが「<space> <tab> <newline>」に設定されていた場合、リセットされます。
環境のデフォルトの動作は次のとおりです。
$ HOME、$ SHELL、$ USER、$ LOGNAME、$ PATH、および$ IFS環境変数がリセットされます。
--loginを使用しない場合、上記の変数を除き、環境がコピーされます。
--loginが使用される場合、$ TERM、$ COLORTERM、$ DISPLAY、および$ XAUTHORITY環境変数が設定されている場合、それらがコピーされます。
他の環境は、PAMモジュールによって設定される場合があります。
そのためsudo su、環境が変化するかどうか、またどの程度変化するかは、配布とセットアップに依存します。したがってsudo -i、理論的にはよりポータブルです。
su い変更の環境設定をし、使用してログインをシミュレートするために使用することができます-か-l。さえせずに-l、$PATH される変更。主張する前にこれらの主張をテストしてください!(それPWDは同じままですか?)
sudo su -ありsudo -iますか?
man su(あなたがリンクしたものより長い)は、それがの一部であると言いますshadow-utils 4.1.5.1。私のmanページには、$PATHたとえ--preserve-environment使用されていても設定されていると書かれています。だから私はそれが本当に異なるバージョン間の単なる違いだと思いますsu。
/etc/pam.d/sudoまた、/etc/pam.d/suまったく異なることやまったく同じことを行うように設定できます。
主な問題は、(そうではないが)健全な環境設定の1つです。
sudo su新しいシェルを使用すると、コマンドを発行したユーザーから環境が取得されます。これは問題がある可能性があります。
sudo -iあなたはクリーンなrootシェルを取得します。
sudoおよびシェルに関する特記事項を参照してください
ルートシェルを作成する必要はほとんどないことを引き続き確認してください。
sudo -iはに似ていますがsudo su -、実際にはコマンドを発行したユーザーから環境を取得しません。
sudo suvs. に関するものsudo -iです。