What does "@" signify in unix file permissions?

If the file or directory has extended attributes, you'll see an @ in the permissions field. For extended security information (ACLs), you'll see a +.

From man ls on OS X:

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

The xattr program can be used to display and manipulate extended attributes. Take a look at what's there before deciding to go while deleting those attributes, though. Definitely take a quick look at the man page for xattr too.

A quick example from some example PHP compromise code I keep around for reference:

$ 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 

Thanks to @Jeff for the correction. I was miss-remebering.

  • The @ is displayed with a extended attribute is set
  • The + is displayed for an ACL.
  • IF you have both an attribute and a ACL then you see @.

Run the command ls -le filename to see if it has any ACLs set.

Since your problem seems to be with accessing the file, I bet you have a ACL set in addition to an extended attribute.

To get rid of an ACL run echo | sudo chmod -E filename for a file or echo | sudo chmod -R -E directory name for a directory.

See the chmod man page.


With the apple quarantine attribute, chmod is not enough to remove it.

You need to remove the attribute explicitly:

sudo xattr -d com.apple.quarantine my_file

The @ stands for extended attributes, in addition to the standard unix file permissions.

Check the extended attributes:

ls -l@

Reset all extended attributes for a single file:

sudo xattr -c <filepath>

Reset all extended attributes recursively:

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

Checked on macOS High Sierra (10.13) and macOS Mojave (10.14.6).