CentOS 6.6、ユーザー固有の環境の制限

CentOS 6.6、ユーザー固有の環境の制限

それで、文脈を追加しますが、私の BLUF は次のとおりです。

「最新、効率的、効果的」よりも「古くて、既知で、安定している」(CentOS 6.6、厳選されたリポジトリなど)を積極的に好む組織で、自分のプロファイル内でかなりの自由度を許可している場合、自分のプロファイル内で自分の環境をどこまで作成できるか(または作成すべきか)また、それを実現するための最も合理的なアプローチは何ですか?

私が言っていることの簡単な例はPythonです。システム全体では2.6に制限されていますが、自分の目的のために2.7や3.4を実行しても誰も気にしません。しかし、手動でビルドしても(pyenvなどのツールを使うのは気にしないで)、成功しませんでした(いつもうまくいっているようですが)。ただ私のスキルの範囲外です)

したがって、私が新しいコードをコンパイルしたり、適切なソースからパッケージを実行したりすることに誰も問題はありません。私が行っていることは SU コンテキストなどで実行されることはありませんが、私はここで膨大な時間を無駄に費やしているようです。RPM をインストールできないのは、ツールを実行することさえできないためです (ユーザー コンテキストでさえ)。権限を修正して、私がそれを実行できるようにする方法があると思います (システム全体の変更を許可せずに)。しかし、そのようなことを要求する前に、それが私の問題に対する最善の (または少なくとも実行可能な) 解決策であることを確認する必要があります。

これを実現するためにはどのようなルートを取ればよいのでしょうか?そして私ができる私は実際にするこれらのポリシーの一般的な意図に従いたいので、実際にセキュリティに影響を与えるようなことは避けたいのですが、これをどこまで実行すべきか制限はありますか?

パッケージ マネージャーの使用は実行可能でしょうか? 機能的なビルド環境を構築していますか? など。

そしてもちろん、どこかに私が読むべき入門書があれば、リンクを教えていただけると大変助かります。私の Google 検索はここでは役に立ちませんでした (おそらく、問題を簡潔に説明するのが苦手なためです)。

答え1

わかりました。これがあなたの質問から私が得た情報です。必要と思われるパッケージのあらゆるバージョンを含む環境が必要なのでしょうか? そうであれば、Linux は実際にそれをサポートしているので、問題なく実行できます。ユーザーとして実行できないことに関して、制限はほとんどありません。

最初の例として、python があります。これは YUM にとって非常に重要であり、これを壊すとサーバーが更新できなくなるため、システム管理者はこれをアップグレードしないように(明示的に)してください。ただし、ホーム ディレクトリにサブ フォルダを作成して、必要なバイナリを含む tar ボールを持ち込むことはできます。ここを参照してください。Python ダウンロードtar ボールを選択します。それを自宅で解凍し、export PATH=/location_to_bin_folder_for python:$PATH.bashrc に追加すれば準備完了です。

これは Linux の世界では完全に受け入れられます (企業がインストールするものに制限を設ける可能性があります)。また、クローズド インフラストラクチャでは、一般的に tar ボールが適しています。パッケージ マネージャーは、通常、管理者が使用するものであり、Red Hat やその他のサード パーティ リポジトリ プロバイダーから提供される PHP バージョンなど、特定のものを念頭に置いていない限り、その情報にアクセスすることはできません。

まとめると、管理者が設定したルールによって制限されます。クローズド インフラストラクチャでは、セキュリティはそれほど大きな問題ではありません。さらに一歩進んで、必要に応じて tar ボールをアップデートとして RPM を作成し、アップデートをサブスクライブして RPM を最新の状態に保つことができます。管理者がどの程度の制限を課すのかはわかりますが、実質的にすべての開発ツールは、この目的で tar アーカイブとして利用できます。

編集 :

あなたが探しているものを達成する最も簡単な方法は、代替手段を実行することです。ホームに次のようなフォルダを作成することでそれを行うことができます。 /home/user/bin

PythonとJavaなどを2つの別々のフォルダにインストールします

/home/user/pythonそして/home/user/java.

binフォルダに、必要なバイナリへのシンボリックリンクを作成します。

$ ls -l /home/user/bin

lrwxrwxrwx. 1 user user 13 May 19 19:59 java -> /home/user/java/bin/java
lrwxrwxrwx. 1 user user 13 May 19 19:59 javac -> /home/user/java/bin/javac
lrwxrwxrwx. 1 user user 15 May 19 19:59 python -> /home/user/python/bin/python

これを.bashrcに追加します

export PATH=/home/user/bin:$PATH

新しいターミナルセッションを開いて試してください which python

それはこう言うべきだ/home/user/bin/python

選択したバージョンに適切と思われる追加のバイナリを追加すると、期待どおりに動作します。

関連情報