What does the "@" sign mean in ls -l output?

I have this output on MacOSX:

$ ls -l
total 40
-rwxr-xr-x@ 1 levente  staff   52 30 Sep 15:38 pl
-rwxr-xr-x  1 levente  staff  675 14 Feb 17:07 plplay
-rwxr-xr-x@ 1 levente  staff  662 26 Jan 14:13 plstart
-rwxr-xr-x@ 1 levente  staff  296  1 Dec 11:50 plstop
-rwxr-xr-x@ 1 levente  staff  268 29 Dec 18:44 plweb

What does the "@" mean next to the permissions?


Solution 1:

It means those files have Extended Attributes from the file system that aren't the normal Unix permissions. Try doing xattr plstart and see what sort of things are set.

Solution 2:

Kashani has it right on with use of xattr to display the extra fiddly bits. More specifically, on OSX, this is likely what is called the Resource Fork. The underlying filesystem that OSX uses, HFS+, has extra data segments that can store all manner of information. Incidentally, you can also see the same thing on SMB, NTFS, etc mounts in the form of ._FILENAME files.

For a full write up on Resource Forks see either the wikipedia article or the Apple Developer site.