web-dev-qa-db-ja.com

/ usr / localにソフトウェアをインストールするための推奨される方法-Sudoまたはchownを使用しますか?

ソフトウェアをソース(サードパーティのGitHubリポジトリなど)から自分のマシンにインストールしたい。通常、/ usr/local/binと/ usr/local/srcは、ディストリビューション固有ではないソフトウェア用ですよね?

/ usr/localの所有権を取得するのは危険なようです。私の権限で実行すると、/ usr/local/binの実行可能ファイルまたは/ usr/local/srcのソースに悪意のある変更が加えられる可能性があります。

しかし、root(Sudo)としてビルドしてインストールするという代替手段は、私には意味がありません。 GitHubはルートとしてgitを実行しないように警告します。 ローカルリポジトリからソースを他の場所にコピーした場合でも、makemake installを実行する必要があります。 Sudoとして、インストールしているソフトウェアがマシンの残りの部分を乗っ取る可能性があることを意味します。

すべてを/ homeに入れることもできますが、それは警官のようです-これは/ usr/localがforであるということではありませんか?

4
mgiuffrida

/usr/localの所有権を取得しないでください。 Sudoを使用してinstallソフトウェア。ただし、独自のアカウントを使用してbuildにしてください。

git clone …    # or tar -x or …
cd …
./configure
make
Sudo make install

/usr/localの所有権を取得してみませんか?あなたはそれを釘付けにしました。これにより、アカウントで実行されているすべてのプログラムがそこに書き込むことができます。悪意のあるプログラムに対して、とにかく負けました。ローカルアカウントへの感染は大きなステップであり、rootにエスカレーションすることは難しくありません(たとえば、次にSudoを実行するときにピギーバックすることによって)。ただし、不適切に構成されたプログラムに対しては、システム全体のディレクトリに書き込み可能なビットを含めない方がよいでしょう。

/usr/localとホームディレクトリのどちらを選択するかについては、ホームディレクトリはアカウントにのみ必要なもの用であり、/usr/localはシステム全体にインストールされるもの用です。

アプローチ

このソリューションには2つのアプローチがあります。

  1. /usr/local/{src,bin}は、システム管理者によってインストールされたカスタムビルドソフトウェア用です。つまり、rootです。この場合、Sudoまたはsu -は常に使用する必要があるため、この質問は根拠がありません。
  2. コンパイル済みのバイナリアップデート、つまり、ディストリビューションのパッケージ管理メカニズムで見つかったものをインストールしますが、/opt。この場合も、システム管理者が行います。

推論

どちらの場合も、これらの場所にインストールされているソフトウェアはディストリビューションによってアップストリームでサポートされていないため、潜在的に危険なアクションをオーバーライドするにはroot権限が必要です。また、/usr/local/srcは、ソースがコンパイルされる場所ではありません。ソースが保存される場所です。これらの2つの項目を覚えておくことで、 CentOS 7での素晴らしいウィンドウマネージャーの使用 のようなことが起こりません。


混乱しないでください

すでにインストールされているソフトウェアの更新のみを目的としている場合は、ディストリビューションにテストソフトウェアを追加するための推奨される方法で更新する必要があります。主な方法のいくつか:

1
eyoung100

ほとんどのビルドシステムは--prefix=$pathを尊重しますが、通常は/usr/localがデフォルトです。

したがって、通常はビルド+テスト+インストールです。ビルド+テストステップは、書き込み権限がある場所であればどこでも実行できます+インストールステップは通常...

Sudo make install(--prefixにインストール)

ビルド環境をセットアップする1つの方法は、work + atticサブディレクトリを持つビルドディレクトリを作成することです。

私のビルド環境は...

/smartbuild/work-パッケージがビルドされる場所(tarballまたはgit/svn/etcから)
/smartbuild/attic-tarballがキャッシュされる場所(再構築でtarballのダウンロードをスキップ)

0
David Favor