79 votes

Que signifie "@" dans les autorisations de fichiers Unix ?

J'ai un fichier avec les permissions suivantes sur mon MacBook Pro :

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

Que fait le @ représentent-ils ? Je n'arrive pas à exécuter le fichier et c'est la seule chose qui me saute aux yeux. Comment puis-je m'en débarrasser ?

En guise de contexte, j'ai copié ceci à partir d'une sauvegarde Time Machine.

51voto

Si le fichier ou le répertoire possède des attributs étendus, vous verrez un @ dans le champ des autorisations. Pour les informations de sécurité étendues (ACL), vous verrez un +.

De man ls sur OS X :

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

El xattr peut être utilisé pour afficher et manipuler les attributs étendus. Jetez un coup d'oeil à ce qu'il y a là avant de décider de supprimer ces attributs, cependant. Jetez également un coup d'oeil à la page de manuel de xattr.

Un exemple rapide tiré d'un code compromis PHP que je conserve pour référence :

$ 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

29voto

Dot Net Pro UK Points 761

Merci à @Jeff pour la correction. Je me suis mal exprimé.

  • El @ est affiché avec un attribut étendu est défini
  • El + est affiché pour une ACL.
  • SI vous avez à la fois un attribut et une ACL, alors vous voyez @ .

Exécutez la commande ls -le filename pour voir s'il y a des ACLs définis.

Puisque votre problème semble être l'accès au fichier, je parie que vous avez un jeu d'ACL en plus d'un attribut étendu.

Pour se débarrasser d'une ACL, exécutez echo | sudo chmod -E filename pour un fichier ou echo | sudo chmod -R -E directory name pour un répertoire.

Voir le chmod page de manuel .

0 votes

Merci pour la réponse. Comment puis-je m'en débarrasser ?

0 votes

Mis à jour avec une réponse qui, selon moi, devrait fonctionner.

0 votes

@Zoredache Les permissions ACL sont accompagnées d'un signe plus. Le @ est "attributs étendus".

16voto

NullIsNot0 Points 241

El @ représente des attributs étendus, en plus des permissions standard des fichiers Unix.

Vérifiez les attributs étendus :

ls -l@

Réinitialiser tous les attributs étendus pour un seul fichier :

sudo xattr -c <filepath>

Réinitialiser tous les attributs étendus de manière récursive :

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

Vérifié sur MacOS High Sierra (10.13) et MacOS Mojave (10.14.6).

1 votes

L'examen des attributs réels est également utile, xattr -l <file>

0 votes

Merci. Merci beaucoup.

15voto

Brandon Yarbrough Points 8558

Avec l'attribut de quarantaine de la Apple, chmod n'est pas suffisant pour le supprimer.

Vous devez supprimer l'attribut de manière explicite :

sudo xattr -d com.apple.quarantine my_file

0 votes

Le PO a également demandé "Que veut dire le @ ?"

-1voto

Reza Toghraee Points 99

J'ai trouvé que le -E o -N sont en fait invisibles, même en utilisant sudo . La seule façon de résoudre le problème était de se connecter en tant que Racine

2 votes

Ce n'est pas une réponse. Cela devrait probablement être un commentaire à la réponse à laquelle vous faites référence.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X