Jul*_*sLt 3 unix permissions mac-osx symbolic-link osx-snow-leopard
不确定这是否属于此处或在 superuser.com 上。
我正在努力使需要链接到 Oracle 动态库中的 C 进程正常工作。
它在 oracle 用户(安装 oracle 的用户)下编译并运行良好,但在另一个帐户下则不能。显而易见的原因是默认的 oracle 安装不会授予 /lib 中的任何共享库读取或执行权限
我已将 r+x 授予所有底层 dylib(相当于 .so 等)并在 oracle 用户下执行我得到以下结果
ls -lrt *odm*
-rwxr-xr-x 1 oracle dba 9000 Mar 3 2009 libodmd10.dylib
lrwxrwx--- 1 oracle dba 15 Jul 25 14:23 libodm10.dylib -> libodmd10.dylib
Run Code Online (Sandbox Code Playgroud)
在我的其他用户(我想在其下执行的那个)下做同样的事情,我得到以下信息
ls -lrt libodmd10.dylib
-rwxr-xr-x 1 oracle dba 9000 Mar 3 2009 libodmd10.dylib
ls -lrt libodm10.dylib
ls: libodm10.dylib: Permission denied
lrwxrwx--- 1 oracle dba 15 Jul 25 14:23 libodm10.dylib
Run Code Online (Sandbox Code Playgroud)
我怀疑答案非常愚蠢和简单,但我的理解是符号链接从底层文件继承了权限。
ls不关心文件的权限,因为它只列出其目录条目。但是,当ls取消引用符号链接时,它正在访问链接的内容。所以它确实关心链接的权限。libodm10.dylib除非您在dba组中,否则您无权阅读目标内容。
您还需要更改符号链接的权限。这里没有理由不让链接世界可读。
请注意,某些 unice 根本不支持符号链接的权限;OSX 可以。
| 归档时间: |
|
| 查看次数: |
9551 次 |
| 最近记录: |