2013-07-17 189 views
9
$ uname -a 
Linux xhost10.bcgsc.ca 2.6.18-194.el5 #1 SMP Fri Apr 2 14:58:14 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux 

$ /sbin/ldconfig --version 
ldconfig (GNU libc) 2.5 

root権限がないので、複数のバイナリとライブラリをローカルにインストールしています。root権限を持たないldconfigキャッシュを更新する

一部のプログラムは、実行時に非標準の場所にある共有ライブラリに動的にリンクする必要があります。

実行、プログラムが戻ったとき:

$ path/to/cc1 
path/to/cc1: error while loading shared libraries: libmpc.so.3: cannot open shared object file: No such file or directory 

を私は図書館$LD_LIBRARY_PATHへのパスを追加しましたが、私はrootアクセス権なしldconfigキャッシュを更新することはできません...

がUSER-があります具体的/etc/ld.so.cache

さらに一般的には、ユーザー構成ファイルを使用してシステム構成ファイルを「マスクする」ことが可能ですか?

+0

〜/ .bashrcにLD_LIBRARY_PATHをエクスポートして再ログインすることで、共有ライブラリを見つけるためにld.soを取得できます。 LD_LIBRARY_PATHでライブラリを動的にロードするバイナリを実行すると、初期化(ネットワークファイルシステム共有)に時間がかかるようですが、少なくとも実行します。 –

答えて

4

ldconfigキャッシュは、/etc/ld.so.confまたは/etc/ld.so.conf.dで指定されたパスにのみ適用されます。これらはroot以外のユーザーには書き込みできないため、rootの権限なしでインストールされた実行ファイルの起動速度を向上させることはできません(しかし、それでもユーザーに書き込み可能なファイルをrootに追加するのは悪い考えですシステム全体のライブラリ検索pathes)。

これらのケースでは、LD_LIBRARY_PATH環境変数またはrpath/runpathを、デフォルト以外のパスのライブラリに依存する実行可能ファイルまたはライブラリで使用する必要があります。私はLD_LIBRARY_PATHとrpath/runpathの間の速度の違いは認識していませんが、rpath/runpathは特定の実行可能ファイルのみに影響を与え、他のプログラムで問題を起こす可能性は低いという利点があります。

linux/unixでは、システム構成ファイルをマスクして代わりにユーザー提供ファイルを使用する一般的な方法はありません。実際、これは、さまざまな種類の権限昇格を避けるために、UNIXセキュリティモデルが積極的に防止しなければならないものです。これは、たとえ多くの環境変数がsuid実行可能ファイルのために無効になってしまう理由でもあります。多くのプログラムには、優先的なユーザー構成を指定する1つの方法があります。さらに複雑なものには、システム管理者が上書きできない必須設定を設定する方法もあります。

関連する問題