서버에 특정 버전의 Python을 로드하면 다음 오류가 발생합니다.
python: 공유 라이브러리 로드 오류: libpython2.7.so.1.0: 공유 객체 파일을 열 수 없습니다: 해당 파일 또는 디렉터리가 없습니다.
ldd는 파일을 사용할 수 있음을 보여줍니다. 유일하게 놀라운 점은 아래와 같이 권한입니다.
-rwxrwsr-x
~에서에스나는 아마도 우연히 해당 파일에 대해 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와 동일한 값으로 설정했다는 것입니다. 단순히 라이브러리에 권한이 부여된 그룹의 구성원이 되는 것만으로는 충분하지 않습니다. 사용자는 해당 그룹을 기본 그룹으로 설정해야 합니다.