当我在服务器上加载特定版本的 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 相同的值。仅仅成为库被授予权限的组的成员是不够的 - 用户必须将其设置为其主要组。