chmod设置不会设置

时间:2011-12-14 08:26:36

标签: macos osx-lion chmod

我正在尝试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}}

3 个答案:

答案 0 :(得分:1)

这是因为您尝试在符号链接上设置权限。这是不可能的。而是将chmod应用于 private / tmp

答案 1 :(得分:1)

l中的第一个字母lrwxr-xr-x表示/tmpsymbolic 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