为什么 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 相同的值。仅仅成为库被授予权限的组的成员是不够的 - 用户必须将其设置为其主要组。

相关内容