为什么我无法更改 Mac 上符号链接的权限?

为什么我无法更改 Mac 上符号链接的权限?

简单的问题,或许也有简单的答案。

我的主文件夹中有几个目录,我希望将它们作为网络服务器上的目录提供。所以,我所做的是创建一个符号链接:

iMac:/Library/WebServer/Documents/ ls -ltr
-rw-rw-r--  1 root      admin     44 Nov 20  2004 index.html.en
-rw-rw-r--  1 root      admin  31958 May 18  2009 PoweredByMacOSXLarge.gif
-rw-rw-r--  1 root      admin   3726 May 18  2009 PoweredByMacOSX.gif
-rwxr-xr-x  1 mego  admin      0 Jan  6  2011 favicon.ico
lrwxrwxr-x  1 mego  admin     52 Jul 26 13:45 myadmin -> /Users/mego/Downloads/phpMyAdmin-3.4.3.2-english
iMac:/Library/WebServer/Documents/ ln -s /Users/mego/opt/rel/src/main/web/ rel
iMac:/Library/WebServer/Documents/ ls -ltr
-rw-rw-r--  1 root      admin     44 Nov 20  2004 index.html.en
-rw-rw-r--  1 root      admin  31958 May 18  2009 PoweredByMacOSXLarge.gif
-rw-rw-r--  1 root      admin   3726 May 18  2009 PoweredByMacOSX.gif
-rwxr-xr-x  1 mego  admin      0 Jan  6  2011 favicon.ico
lrwxrwxr-x  1 mego  admin     52 Jul 26 13:45 myadmin -> /Users/mego/Downloads/phpMyAdmin-3.4.3.2-english
lrwxrwx---  1 mego  admin     47 Oct 12 09:58 rel -> /Users/mego/opt/rel/src/main/web/

/Users/mego/opt/rel 上的权限递归设置为 a+rx,以便每个人都可以读取和执行。

当我尝试更改权限时,即“chmod a+rx rel“ 和 ”chmod -R a+rx /用户/mego/opt/rel”,零影响。

的输出

ls -ld / /Users /Users/mego /Users/mego/opt /Users/mego/opt/rel /Users/mego/opt/rel/src /Users/mego/opt/rel/src/main /Users/mego/opt/rel/src/main/web

iMac:~/ ls -ld / /Users /Users/mego /Users/mego/opt /Users/mego/opt/rel /Users/mego/opt/rel/src /Users/mego/opt/rel/src/main /Users/mego/opt/rel/src/main/web
drwxrwxr-t@ 39 root      admin  1394 Sep 14 15:30 /
drwxr-xr-x   7 root      admin   238 Aug 29 10:04 /Users
drwxr-xr-x+ 98 mego  staff  3332 Oct 15 10:59 /Users/mego
drwxrwxr-x  19 mego  staff   646 Oct 14 20:47 /Users/mego/opt/rel
drwxrwxr-x   5 mego  staff   170 May 31 08:01 /Users/mego/opt/rel/src
drwxrwxr-x   6 mego  staff   204 Oct 12 08:42 /Users/mego/opt/rel/src/main
drwxrwxr-x   5 mego  staff   170 Oct 12 08:42 /Users/mego/opt/rel/src/main/web
iMac:~/ 

必须是与用户主文件夹相关的内容。但奇怪的是,另一个文件夹”我的管理员“具有正确的权限并且可以正常工作。我做错了什么?

先感谢您。

答案1

 man chmod 

...

-h 如果文件是符号链接,则更改链接本身的模式而不是链接指向的文件。

...

所以像这样:

 chmod -h /Users/mego/opt/rel

应该管用。

答案2

/Users/mego有一个前交叉韧带这可能会阻止访问。这就是该目录+输出的传统 unix 权限之后所指示的内容。ls -l运行ls -lde /Users/mego查看该ACL。

请注意,如果用户被拒绝访问/Users/mego(重要的是可执行位),它将无权访问其下的任何内容。因此,如果 Web 服务器用户没有执行权限/Users/mego,则世界可读并不重要/Users/mego/opt/rel:Web 服务器用户将无法达到那么远。涉及符号链接也没关系:通过符号链接进行访问涉及遍历到目标的路径。

使用chmod来操纵 ACL。手册页中的示例应该可以帮助您前进(如果您无法从示例中找出您需要的内容,请在此处询问,并发布 的输出ls -lde /Users/mego)。

答案3

我相信这chmod只会影响在符号链接上使用时目标文件/目录的权限。 lchmod应该更改实际符号链接的权限。

相关内容