加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

为什么Linux上的共享库可执行?

发布时间:2020-12-13 18:19:37 所属栏目:Linux 来源:网络整理
导读:我只是好奇. bash-3.00$ ldd libmylibrary.soldd: warning: you do not have execution permission for `libmylibrary.so' 一切似乎只用r工作正常.我注意到/usr/lib中的大多数.so都有x set … 为什么共享库应该设置可执行位?如果我没有设置它会发生什么?
我只是好奇.
bash-3.00$ ldd libmylibrary.so
ldd: warning: you do not have execution permission for `libmylibrary.so'

一切似乎只用r工作正常.我注意到/usr/lib中的大多数.so都有x set …

为什么共享库应该设置可执行位?如果我没有设置它会发生什么?

解决方法

实际上它取决于ldd实现. ldd通常是一个脚本,您可以编辑它以查看出现该错误的位置和原因.

在Ubuntu 10.04上,ldd仅检查读取权限.如果文件不是ELF(可执行和可链接格式),则可能使错误不是动态可执行文件.例如,这里的库都是-rw-r – r–

$find /usr/lib -type f -name "libm*.so*" -ls
(...)
-rw-r--r--   1 root     root       216800 Feb 26 22:20 /usr/lib/libmp.so.3.1.16
-rw-r--r--   1 root     root        76728 Mar 14 04:23 /usr/lib/libmjpegutils-1.9.so.0.0.0
-rw-r--r--   1 root     root       134464 Jan 29  2010 /usr/lib/libm17n-core.so.0.3.0
-rw-r--r--   1 root     root       290480 Feb 17  2010 /usr/lib/libmtp.so.8.3.2

想要对共享库进行x访问并不令人震惊.可执行模式是一种约定,它为操作系统提供了另一级别的访问权限控制.可执行加载程序控制该访问,以确保用户可以执行它,还可以防止错误(某些脚本或程序不应由某些人执行).

出于同样的原因,这可以扩展到共享库 – 但是共享库不能自己运行,并且不容易被意外使用).因此需求不太明显(r访问就足够了).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读