時々、実行が「間違っている」または「悪い」であると強調するコメントまたは応答に遭遇しますが、それがはるかに単純であるか、またはそのように実行します。pip
sudo
pip
下での実行に関連するリスクは何sudo
ですか?
これは、タイトルとは異なり、リスクに関する情報を提供しないこれと同じ質問ではないことに注意してください。これは、の使用を回避する方法についての問題ではありませんsudo
が、具体的にはなぜ使用したいのかについての問題です。
時々、実行が「間違っている」または「悪い」であると強調するコメントまたは応答に遭遇しますが、それがはるかに単純であるか、またはそのように実行します。pip
sudo
pip
下での実行に関連するリスクは何sudo
ですか?
これは、タイトルとは異なり、リスクに関する情報を提供しないこれと同じ質問ではないことに注意してください。これは、の使用を回避する方法についての問題ではありませんsudo
が、具体的にはなぜ使用したいのかについての問題です。
回答:
で実行するpip
とsudo
、で実行さsetup.py
れsudo
ます。つまり、インターネットから任意のPythonコードをrootとして実行します。誰かがPyPIに悪意のあるプロジェクトを作成し、それをインストールした場合、あなたのマシンへのrootアクセスを攻撃者に与えます。pip
とPyPI に対する最近のいくつかの修正の前に、攻撃者は中間者攻撃を実行して、信頼できるプロジェクトをダウンロードするときにコードを挿入することもできました。
sudo
なく、私pip
はそうです、そうですか?いったんインストールされると、どのようにして到達しても、私たち全員が危険にさらされていますか?
sudo
、パッケージを他の場所(virtualenvなど)にインストールすることで、これらの権限の問題だけでなく、これらの権限の問題も回避することは、通常、非常に簡単です。そうすることで、すべてのセキュリティ上の問題を無視する場合でも、より優れた信頼性が高まります。
明らかなセキュリティリスク(ご存じのソフトウェアをインストールする場合は実際には低いと思います)の他に、他の回答がもたらされる理由もあります。システムに付属するPythonはこのシステムの一部であり、システムを管理する場合は、ソフトウェアのインストール/アップグレード/アンインストールの場合に、パッケージマネージャーなどのシステムメンテナンス用に指定されたツールを使用します。サードパーティのツール(この例ではpip)を使用してシステムのソフトウェアの変更を開始すると、システムの状態について保証することができなくなります。さらにもう1つの理由は、sudoを使用すると、チャンスがなかったり、そうでなければ発生する可能性が非常に低い問題が発生する可能性があることです。たとえば、Pythonでのsys.executableとsys.versionの不一致をご覧ください。
ディストリビューションはこの問題を認識しており、それを軽減しようとします。たとえば、Fedora – sudo pipを安全にすることとDebian – site-packagesの代わりにdist-packagesを使用します。
この方法でpipを使用するということは、システムに何かを許可するレベルまでそれを信頼するということです。pipだけでなく、信頼できないソースからダウンロードして実行するコードも悪意のある可能性があります。
そして、pipはそのすべての特権を必要とせず、特定のファイルとディレクトリへの書き込みアクセスのみを必要とします。システムのパッケージマネージャーを使用できず、仮想環境を利用したくない場合は、Pythonインストールディレクトリへの書き込み権限を持つ特定のユーザーを作成し、それをpipに使用できます。そうすれば、pipが実行できることと実行できないことをより適切に制御できます。そして、あなたはそのために使うことができますsudo -u
!
site-packages
です。
pip
あなたはまた、彼らは自分自身をインストールする方のディレクトリにアクセスする必要がありますので、それ自体、IPython、ジャンゴ、pygmentsを、...)。
pip
(新しいホームディレクトリなど、システムに他の変更を加える必要はありません)。その後、私は所有者site-packages
をそのユーザーに変更しただけだと思いますか?
pip
インストールしたもののその後または実行中にのみ適用されますか?