我正在尝试chmod
OS X Lion
users-MacBook-Air:MAMP user$ sudo chmod a=rwx /tmp
users-MacBook-Air:MAMP user$ ls -l /tmp
lrwxr-xr-x@ 1 root wheel 11 Jul 20 23:44 /tmp -> private/tmp
文件夹
然而,当我这样做时,设置似乎不会停留......
{{1}}
答案 0 :(得分:1)
这是因为您尝试在符号链接上设置权限。这是不可能的。而是将chmod应用于 private / tmp
答案 1 :(得分:1)
l
中的第一个字母lrwxr-xr-x
表示/tmp
是symbolic link。
此部分/tmp -> private/tmp
表示它链接到private/tmp
。
来自man chmod
:
chmod 永远不会更改符号链接的权限; chmod 系统调用无法更改其权限。这不是问题 因为永远不会使用符号链接的权限。然而, 对于命令行中列出的每个符号链接, chmod 更改 指向文件的权限。相反, chmod 会忽略 递归目录遍历期间遇到的符号链接。
因此,您可以放心地忽略链接的权限。
请注意,private/tmp
是相对于/tmp
所在文件夹的路径 - /
。它的绝对路径是/private/tmp
。
答案 2 :(得分:0)
在macOS上测试过。
您可以通过编写chmod -h 755 file
来更改符号链接的权限。从chmod
手册,-h
选项更改符号链接的模式,而不是链接指向的文件。如果没有-h
选项,chmod
只会更改符号链接指向的文件的文件模式。
请记住检查文件权限是否已成功设置,因为在某些情况下,尽管发出了正确的命令,但不会设置符号链接。我不知道导致以下内容的确切过程,但似乎有某些安全设置导致符号链接的权限仅在某些用户下可修改。
如果您不是root用户,可以通过在/tmp
文件夹中对其进行操作来临时修改符号链接的权限。 /tmp
文件夹是一个特殊文件夹,因为它的粘滞位已设置。阅读man sticky
*以了解有关粘性位的更多信息,它甚至将/tmp
列为示例文件夹。 root所拥有的任何目录(其设置了粘滞位)都可以使用,但/tmp
是最可能在给定计算机上可用的目录。这很重要,因为作为root所拥有的目录,其设置了粘滞位,它允许非root用户写入root拥有的文件。这意味着,如果您发现当您尝试修改符号链接的权限时,它会继续恢复其旧权限,您可以尝试修改/tmp
中符号链接的权限,并保留其新设置权限。但是,请记住,如果您首先遇到了恢复权限的障碍,那么将文件移回其原始目录将导致权限恢复为它始终恢复的任何内容。在我的情况下,它恢复到绝对模式0777
。另外,请记住,符号链接的权限不会影响您访问链接到的文件时的权限,因为这些权限取决于该文件本身的权限。
*在终端中,输入man sticky
并点击ENTER
,系统会显示sticky
的文档。按q
退出。或者,请参阅Sticky bit on Wikipedia。