Unix文件权限中的“ @”代表什么?


49

我的MacBook Pro上具有以下权限的文件:

-rwxr-xr-x@ 1 root wheel 101K Feb 29 17:09 apachectl

代表什么@?我无法执行该文件,这是唯一让我脱颖而出的事情。我该如何摆脱呢?

就像一些背景一样,我从Time Machine备份中复制了此内容。

Answers:


35

如果文件或目录具有扩展属性,您将在“权限”字段中看到一个@。有关扩展的安全信息(ACL),您将看到一个+号。

man lsOS X上:

-@      Display extended attribute keys and sizes in long (-l) output.

xattr程序可用于显示和操作扩展属性。不过,在决定删除这些属性之前,请先查看其中的内容。绝对也可以快速浏览xattr的手册页。

我保留一些示例性的PHP折衷代码的快速示例作为参考:

$ ls -@l php-compromise.php 
-rw-r--r--@ 1 user  group  502620 Jul  5  2011 php-compromise.php
    com.apple.FinderInfo        32 
    com.apple.TextEncoding      15 

22

感谢@Jeff的更正。我很想念。

  • @显示与扩展属性被设置
  • +显示为ACL。
  • 如果您同时具有属性和ACL,则会看到@

运行命令ls -le filename以查看是否设置了任何ACL。

由于您的问题似乎与访问文件有关,因此我敢打赌,除了扩展属性外,您还设置了ACL。

要摆脱ACL,请运行echo | sudo chmod -E filename文件或echo | sudo chmod -R -E directory name目录。

请参见chmod手册页


感谢您的回应。我该如何摆脱呢?
VinnyD 2012年

更新后的答案我认为应该可以。
Zoredache'3

@Zoredache ACL权限带有加号。@是“扩展属性”。

是的,我仔细检查时就看到了。我必须记得倒退。当文件同时具有两者时,会发生什么?
Zoredache'3

没关系,我启动了Mac。如果您具有@扩展属性和+acl设置,则ls似乎会显示一个@。由于他在访问文件时遇到问题,在我看来,该问题更有可能是他的ACL有问题。
Zoredache'3

8

使用apple隔离属性,chmod不足以将其删除。

您需要显式删除该属性:

sudo xattr -d com.apple.quarantine my_file

OP还问“ @代表什么?”
卡马菲瑟

3

@代表扩展属性,除了标准的UNIX文件权限。

检查扩展属性:

ls -l@

重置单个文件的所有扩展属性:

sudo xattr -c <filepath>

递归重置所有扩展属性:

sudo xattr -rc <directory>
sudo chmod -R -N <directory>

在macOS High Sierra(10.13)和macOS Mojave(10.14.6)上进行了检查。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.