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).