¿Qué significa "@" en los permisos de archivos unix?

42

Tengo un archivo con los siguientes permisos en mi MacBook Pro:

[email protected] 1 root wheel 101K Feb 29 17:09 apachectl

¿Qué significa @ ? No puedo ejecutar el archivo y esto es lo único que me llama la atención. ¿Cómo puedo deshacerme de él?

Al igual que algunos antecedentes, copié esto desde una copia de seguridad de Time Machine.

    
pregunta VinnyD 01.03.2012 - 02:13

5 respuestas

33

Si el archivo o directorio tiene atributos extendidos, verá una @ en el campo de permisos. Para obtener información de seguridad extendida (ACL), verá un +.

Desde man ls en OS X:

[email protected]      Display extended attribute keys and sizes in long (-l) output.

El programa xattr se puede usar para mostrar y manipular atributos extendidos. Sin embargo, eche un vistazo a lo que hay allí antes de decidir ir mientras elimina esos atributos. Definitivamente, eche un vistazo rápido a la página de manual de xattr también.

Un ejemplo rápido de un ejemplo de código de compromiso de PHP que guardo como referencia:

$ ls [email protected] php-compromise.php 
[email protected] 1 user  group  502620 Jul  5  2011 php-compromise.php
    com.apple.FinderInfo        32 
    com.apple.TextEncoding      15 
    
respondido por el Jeff Ferland 01.03.2012 - 02:16
19

Gracias a @Jeff por la corrección. Estaba recordando mal.

  • El @ se muestra con un atributo extendido establecido
  • El + se muestra para una ACL.
  • Si tiene un atributo y una ACL, verá @ .

Ejecute el comando ls -le filename para ver si tiene alguna ACL establecida.

Como su problema parece ser el acceso al archivo, apuesto a que tiene un conjunto de ACL además de un atributo extendido.

Para deshacerse de una ejecución de ACL echo | sudo chmod -E filename para un archivo o echo | sudo chmod -R -E directory name para un directorio.

Consulte la página de manual de chmod .

    
respondido por el Zoredache 01.03.2012 - 02:16
4

Con el atributo de cuarentena de Apple, chmod no es suficiente para eliminarlo.

Debes eliminar el atributo explícitamente:

sudo xattr -d com.apple.quarantine my_file
    
respondido por el Riot 24.06.2016 - 05:40
1

Comprobar atributos:

ls -le

Restablecer todos los atributos de forma recursiva:

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

Comprobado en macOS High Sierra (10.13).

    
respondido por el NullIsNot0 21.11.2017 - 20:11
0

Encontré que -E o -N son realmente invisibles incluso cuando se usa sudo . La única forma de solucionarlo era iniciar sesión como root

    
respondido por el Reza Toghraee 10.03.2012 - 20:38

Lea otras preguntas en las etiquetas