小编Sar*_*dhi的帖子

将setuid位置1后,程序无法加载

考虑这种情况,其中可执行文件A.bin使用libY.so和libZ.so. Ac,Yc和Zc都是用CZc编写的,Yc编译成各自的.so文件.

这是文件的目录结构

$ home/bin/A.bin $ home/lib/libY.so $ home/lib/libZ.so

当我以普通用户身份运行A.bin时,A.bin按预期正常运行.注意:$ LD_LIBRARY_PATH包含$ home/lib

我在Ac中更改了一些代码,添加了一些需要管理员权限的功能(比如绑定到小于1000的端口).我将A.bin,libY.so和libZ.so的setuid位设置为rwsrwsrws,并将文件的所有权更改为root.当我尝试运行A.bin时,我收到以下错误

ld.so.1:A.bin:致命:libY.so:打开失败:没有这样的文件或目录被杀死

当我刚从所有这些文件中删除setuid权限时,除了功能失败之外,二进制运行它需要root权限.

如何克服这个问题?

编辑:操作系统是Solaris 5.10

c unix permissions setuid shared-objects

7
推荐指数
1
解决办法
5386
查看次数

4
推荐指数
2
解决办法
2720
查看次数

标签 统计

c ×2

unix ×2

linux ×1

permissions ×1

setuid ×1

shared-objects ×1

solaris ×1