无法更改权限的chmod命令

23

我面临一个非常烦人的问题。这让我感到非常沮丧。我正在使用学校的电脑参加Coursera创业课程。我试图连接到一个Amazon EC2实例。我已经下载了密钥对并检查了权限。

mac5-library:startup roh21$ ls -l
total 6
-rw-rw-rw-@ 1 roh21  108  1692 Jun 22 16:45 startup-class-key.pem

因此,它并不安全。所以我需要更改权限。我尝试:

mac5-library:startup roh21$ chmod 400 startup-class-key.pem
mac5-library:startup roh21$ ls -l
total 6
-r--r--r--@ 1 roh21  108  1692 Jun 22 16:45 startup-class-key.pem

所有人仍然具有阅读权限。只是出于演示目的我这样做:

mac5-library:startup roh21$ chmod 600 startup-class-key.pem
mac5-library:startup roh21$ ls -l
total 6
-rw-rw-rw-@ 1 roh21  108  1692 Jun 22 16:45 startup-class-key.pem

没有root权限,是否无法为用户更改权限?感激任何形式的帮助。


1
文件是在外部磁盘上,还是在亚马逊服务器上,或者类似的地方? - Gordon Davisson
Gordon,两个都不是。有帮助的是,我将文件复制到我的~/.ssh文件夹中,然后使用“chmod”更改了权限。就这样。我不知道为什么。如果您能解释一下,我会非常感激。 - Rohit
我所能想到的唯一可能性是,该文件所在的卷不完全支持权限。如果它不是外部卷,可能是磁盘映像、其他类型的远程卷,或者是 Mac OS Extended 格式以外的格式,总之就是这种情况。 - Gordon Davisson
6个回答

33

也许与最初的问题无关,但可能会有用。特别是对于像我这样的Unix新手。

如果您不是资源的所有者,则Chmod将不起作用。

您应该先运行chown命令:

$ sudo chown -R $(whoami) .

然后

$ sudo chmod -R +rwX .

第一个命令将当前文件夹中的所有内容的所有者更改为已登录的用户,第二个命令赋予它们读取、写入和执行权限。 例如,您可能不应如此大胆地更改所有权和权限。


2
非常感谢!比任何人的解决方案都要好得多。 - demostanis
1
太棒了。在项目目录中运行 sudo chown -R $(whoami) . 为我解决了问题。谢谢! - Connor Leech
太棒了。解决了我整个sudo问题。 - Nagibaba
对我有用的是小写字母x $ sudo chmod -R +rwx . - undefined

12
请注意,当您想运行“chflags nouchg”时,在终端上可能会出现“操作不允许”。因此,您首先应该在这里为您的终端提供“完全磁盘访问权限”:

系统设置-->隐私与安全-->完全磁盘访问权限-->勾选终端

然后关闭并重新打开终端。

现在,运行“chflags nouchg PathToYourFolder”。

最后:

chmod 400 YourFile

完成!


2
我不需要运行 chflags,只需设置全盘访问权限选项即可。谢谢! - Ricardo Zanini

7
我把文件复制到了~/.ssh文件夹中,然后使用chmod更改了权限。这就搞定了。
为了提供更多信息,ssh文件夹的权限是:
drwx------    8 roh21  108      272 Jun 26 17:26 .ssh

还需要使用最初文件夹的权限。

drwxrwxrwx    2 roh21  108     2048 Jun 23 06:32 startup

我很好奇为什么我在学校图书馆使用 Mac OS X 系统时,即使多次尝试使用 chmod -R 选项更改权限,也无法更改 startup 文件夹的权限。


5

看起来你已经发现了Macintosh与UNIX权限位不完全一致的问题

最终,有ACL位由MacOS设置,并且Macintosh Finder遵守这些位。

为了快速解决您的问题,在终端命令行中输入“open .”(或者是您的“startup”文件夹的路径),这将在您的Macintosh Finder中打开该文件夹。

然后对文件进行“获取信息”:

Sharing & Permissions

您可以在此更改权限。


Michael,感谢您的详细回复。但是那并没有帮助我——在“获取信息”中没有给我更改权限的选项。我只看到了http://i.imgur.com/8mGsHeO.png编辑:有帮助的是,我将文件复制到我的~/.ssh文件夹中,然后使用chmod更改了权限。就这样。我不知道为什么。如果您能在您的帖子中解释一下,我会很高兴接受它作为答案。 - Rohit
1
看起来设置了 uchg 扩展标志,这会防止你更改文件的任何内容。你可以使用命令行从中删除,方法是 chflags nouchg <file> - Edward Falk

5

看到模式标志旁边的“@”吗?那意味着文件有扩展元数据。使用ls -l@查看。命令xattr将让你查看和修改它们。可能有些内容会阻止你修改文件。

还可能有其他文件标志。使用ls -lO(大写字母O)查看这些标志。很可能其中一个标志是“uchg”,这意味着文件是不可变的。您可以按照أحمد طه的建议使用chflags nouchg <filename>移除该标志。

最后,文件可能附带有ACL。使用ls -le查看。

总的来说,如果你真的想知道Mac上与文件相关的所有元数据,命令是ls -leO@


2

您好,它将起作用。

chflags nouchg /path/folder/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接