SOに対するsetgid権限が原因でエラーが発生するのはなぜですか?

SOに対するsetgid権限が原因でエラーが発生するのはなぜですか?

サーバーに特定のバージョンのPythonをロードすると、次のエラーが発生します。

python:共有ライブラリの読み込みエラー:libpython2.7.so.1.0:共有オブジェクトファイルを開くことができません:そのファイルまたはディレクトリがありません。

lddはファイルが利用可能であることを示しています。唯一の驚くべきことは、以下のように権限です。

-rwxrwsr-x

~からS私はおそらく偶然にそのファイルに対してsetgidが呼び出されているという結論に達しました。しかし、私はファイルを所有しているグループのメンバーでもあります。この場合、グループメンバーでない場合でもPythonを実行できる必要がありますか?

Pythonは、以下を実行する環境モジュールによってロードされます。

prepend-path     PATH /path/to/python/2.7.9/bin 
prepend-path     MANPATH /path/to/python/2.7.9/share/man 
prepend-path     PYTHONPATH /path/to/python/2.7.9/lib/python2.7/site-packages:/path/to/spss/22/Python/lib/python2.7/site-packages 
prepend-path     LD_LIBRARY_PATH /path/to/python/2.7.9/lib 

答え1

S権限を削除した後、ライブラリを正しくロードできました。私たちがついに見つけた違いは、ライブラリをロードできるユーザーが実際に自分のgidをライブラリのgidと同じ値に設定したことです。単にライブラリに権限を与えられたグループのメンバーになるだけでは十分ではありません。ユーザーはそのグループをデフォルトグループに設定する必要があります。

関連情報