我有一个二进制文件(名称是 bmu),在调用 statfs 函数时需要 root 权限。
操作系统是SuSE Linux 2.6.16.60-0.21-smp
运行 bmu 的用户是 test 并且是非 root 用户
test@SuSE:~> id
uid=1056(test) gid=0(root) groups=0(root),16(dialout),33(video)
我已经测试了 3 种场景。
--->场景1
如果bmu没有配置SUID,可以执行bmu但调用会失败。
-rwxr-xr-x 1 test root 14389879 2012-04-10 10:38 bmu
--->场景2
如果bmu配置了SUID,当bmu通过test运行时会失败,提示“DBMS API Library 'libclntsh.so' loading failed”
-rwsr-sr-x 1 root root 14389879 2012-04-10 10:38 bmu
--->scenario 3
如果 bmu 以 root 运行,则执行成功。当然,无论是否配置了 SUID。
-rwxr-xr-x 1 root root 14389879 2012-04-10 10:38 bmu
-rwsr-sr-x 1 root root 14389879 2012-04-10 10:38 bmu
从场景二看,好像是LD_LIBRARY_PATH
config的问题,但从场景一看,这应该不是LD_LIBRARY_PATH
config的问题。从场景 3 中,我们可以发现 bmu 可以被 root 执行。
只有场景2有问题,所以有人可以提出一些建议吗?谢谢!