SO에 대한 setgid 권한으로 인해 오류가 발생하는 이유는 무엇입니까?

SO에 대한 setgid 권한으로 인해 오류가 발생하는 이유는 무엇입니까?

서버에 특정 버전의 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와 동일한 값으로 설정했다는 것입니다. 단순히 라이브러리에 권한이 부여된 그룹의 구성원이 되는 것만으로는 충분하지 않습니다. 사용자는 해당 그룹을 기본 그룹으로 설정해야 합니다.

관련 정보