考虑这种情况,其中可执行文件A.bin使用libY.so和libZ.so. A.c,Y.c和Z.c都是用C语言编写的.
Z.c和Y.c被编译成相应的.so文件.
Z.c和Y.c被编译成相应的.so文件.
这是文件的目录结构
$HOME /斌/ A.bin
$HOME / lib目录/ libY.so
$HOME / lib目录/ libZ.so
当我以普通用户身份运行A.bin时,A.bin按预期正常运行.
注意:$LD_LIBRARY_PATH包含$home / lib
我在A.c中更改了一些代码,添加了一些需要管理员权限的功能(比如绑定到小于1000的端口).
我将A.bin,libY.so和libZ.so的setuid位设置为rwsrwsrws,并将文件的所有权更改为root.当我尝试运行A.bin时,我收到以下错误
ld.so.1:A.bin:致命:libY.so:打开失败:没有这样的文件或目录
杀害
当我刚从所有这些文件中删除setuid权限时,除了功能失败之外,二进制运行它需要root权限.
如何克服这个问题?
编辑:操作系统是Solaris 5.10
解决方法
原文地址:https://www.jb51.cc/c/114196.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。