sudo suとsudo -iの機能的な違いは何ですか?


19

この例では、なぜ一方が他方よりも優先されるのですか?

sudo su
echo "options iwlwifi 11n_disable=1" >> /etc/modprobe.d/iwlwifi.conf
exit

Ubuntuドキュメントへのリンクを提供してください。


「受け入れられた」回答の選択を再検討してください。最も投票数の少ないものが実際には唯一の正しいものです。
カイルストランド

回答:


15

このsudo suコマンドは「ユーザーの切り替え」の略で、別のユーザーになることができます。許可されたユーザーは、sudoersファイルで指定されているスーパーユーザーまたは別のユーザーとしてコマンドを実行できます。

‑i(初期ログインのシミュレート)オプションは、ターゲットユーザーのパスワードデータベースエントリで指定されたシェルをログインシェルとして実行します。これは、.profileや.loginなどのログイン固有のリソースファイルがシェルによって読み取られることを意味します。コマンドが指定されている場合、シェルの‑cオプションを介して実行するためにコマンドがシェルに渡されます。コマンドが指定されていない場合、対話型シェルが実行されます。

ソース:ManPage


1
「suを使用すると、セキュリティの問題が発生し、本質的に危険です。」何?
停止ハーミングモニカ

1
実行sudo suすると、rootパスワードではなくパスワードが求められます。rootユーザーはパスワードさえ持っている必要はありません。とにかく、管理者がrootパスワードを使用している場合、すべての一般ユーザーがそれを知っていることを意味するわけではありません。
停止ハーミングモニカ

2
いいえ、それはしません。rootとしてsudo実行さsuれ、rootはsuパスワードを知らなくてもすべてのユーザーに対して実行できます。システムがどのように機能するかについての基本的な誤解は、下票IMOに値する。
ハーミングモニカを停止

3
また、コメントを削除すると混乱を招くだけです。
ハーミングモニカを停止

1
あなたはそれをずっと良くしていない。sudo -iルートのパスワードも要求されないため、質問には関係ありません。
ハーミングモニカを停止

14

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ますか?
カイルストランド

1
あなたは明らかにこれにいくつかの考えを入れており、実際にシェルでいくつかのテストを行っているので、私は私の巧妙な「これらの主張をテストする」コメントをおaびします。とは言っても、私のシステムで$PATHは、(rootパスワードを使用して)suなしで使用すると変更されることsudoがわかります。info su(あなたの答えにリンクする方が良いかもしれません)によるとsu、あなたがなりつつあるユーザーのパスワードエントリを実際に読みます。おそらく、$PATH私が観察している変更はシステムに依存しています(Debian 7を使用しています)。
カイルストランド

1
うーん。私man su(あなたがリンクしたものより長い)は、それがの一部であると言いますshadow-utils 4.1.5.1。私のmanページには、$PATHたとえ--preserve-environment使用されていても設定されていると書かれています。だから私はそれが本当に異なるバージョン間の単なる違いだと思いますsu
カイルストランド

1
動作は、PAM構成の影響も受けます。/etc/pam.d/sudoまた、/etc/pam.d/suまったく異なることやまったく同じことを行うように設定できます。
ハーミングモニカ

7

主な問題は、(そうではないが)健全な環​​境設定の1つです。

sudo su新しいシェルを使用すると、コマンドを発行したユーザーから環境が取得されます。これは問題がある可能性があります。

sudo -iあなたはクリーンなrootシェルを取得します。

sudoおよびシェルに関する特記事項を参照してください

ルートシェルを作成する必要はほとんどないことを引き続き確認してください。


リンクする「特記事項」sudo -iはに似ていますがsudo su -、実際にコマンドを発行したユーザーから環境を取得しません
カイルストランド

@KyleStrandこのことを指摘してくれたthx-それはタイプミスでした。質問は本当にsudo suvs. に関するものsudo -iです。
ガントバート
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.