【发布时间】:2015-02-06 02:20:44
【问题描述】:
我在 32 位 arm 机器上编译了一个简单的 hello-world 应用程序。并将所需的 32 位库复制到 aarch64 机器上。(ld-2.19.so 和 libc-2.19.so)
如果我是 root (sudo) 则运行良好,但普通用户的权限被拒绝。
这是错误 -
ubuntu@ubuntu:~$ ./ld-2.19.so ./hello_world
./hello_world: error while loading shared libraries: ./hello_world: failed to map segment from shared object: Operation not permitted
ubuntu@ubuntu:~$ ./ld-2.19.so --list ./hello_world
./hello_world: error while loading shared libraries: ./hello_world: failed to map segment from shared object: Operation not permitted
这是 sudo- 的行为
ubuntu@ubuntu:~$ sudo ./ld-2.19.so ./hello_world
Hello World
ubuntu@ubuntu:~$ sudo ./ld-2.19.so --list ./hello_world
linux-vdso32.so.1 => (0xf75cd000)
libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xf74de000)
/lib/ld-linux-armhf.so.3 => ./ld-2.19.so (0xaae03000)
【问题讨论】:
-
我不认为这是题外话。你检查内核日志,还是尝试 strace?它可能类似于 SE-Linux 权限问题,因为我猜你的 64 位内核是相当新的。或者最简单的是你的 libc 有正确的(文件)权限标志吗?
-
是的,我猜我的库有正确的权限。 -rwxrwxr-x 1 ubuntu ubuntu 906980 2 月 6 日 01:04 libc-2.19.so lrwxrwxrwx 1 ubuntu ubuntu 2 月 6 日 21:19 libc.so.6 -> libc-2.19.so
标签: linux ubuntu arm glibc arm64