如何在 Mac OS 上更改系统链接的权限?
我尝试chmod -h 755 mylink
将 iTerm2 与 zsh 结合使用,但没有效果。
答案1
在我完全误解了这个问题之后,请允许我重新阐述一下所涉及的问题。让我们看看为什么符号链接权限毫无意义,因此更改或不更改它们都没有用。
我无法重现该问题。一些系统,符号链接权限根本无法更改。我的经验是,Mac OS El Capitan 在大多数情况下确实会更改符号链接权限,但新的权限没有效果。
从概念上讲,更改符号链接的权限必须没有任何影响。如果访问文件就像创建符号链接然后更改符号链接的权限一样简单,那么没有文件是安全的。
我在以下位置找到了此免责声明man 7 symlink
:
可以通过 [系统调用] 更改现有符号链接的标志、访问权限、所有者/组和修改时间。其中,只有标志由系统使用;访问权限和所有权被忽略。
这是一个极端的例子。
$ touch myfile
$ ln -s myfile mylink
$ ls -l myfile mylink
-rw-r--r-- 1 user staff 0 Jul 13 14:42 myfile
lrwxr-xr-x 1 user staff 6 Jul 13 14:43 mylink -> myfile
$ chmod -h 000 mylink
$ ls -l myfile mylink
-rw-r--r-- 1 user staff 0 Jul 13 14:42 myfile
ls: mylink: Permission denied
l--------- 1 user staff 6 Jul 13 14:43 mylink
$ echo 'Hello, world!' > mylink
$ cat mylink
Hello, world!
$ ls -l myfile
-rw-r--r-- 1 user staff 14 Jul 13 14:43 myfile
符号链接没有权限,但echo
可以cat
跟随mylink
。写入和读取它,忽略符号链接权限。注意:符号链接权限阻止显示符号链接的目标,但实用程序仍会跟随符号链接。相反myfile
,echo
myfile
cat
ls
$ chmod 000 myfile
$ chmod -h 777 mylink
$ ls -l myfile mylink
---------- 1 user staff 14 Jul 13 14:43 myfile
lrwxrwxrwx 1 user staff 6 Jul 13 14:43 mylink -> myfile
$ cat mylink
cat: mylink: Permission denied
从修辞角度来说,难道这不是必须的吗?
参考文献(一些特定于 Mac OS 和 El Capitan):
man 7 symlink
- ACL 操作选项部分
man chmod
man chflags