Que signifie “@” dans les autorisations de fichiers Unix?

49

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

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

Que @représente le stand? Je ne peux pas exécuter le fichier et c'est la seule chose qui me frappe. Comment puis-je m'en débarrasser?

Comme arrière-plan, je l'ai copié à partir d'une sauvegarde Time Machine.

VinnyD
la source

Réponses:

35

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

Sous man lsOS X:

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

Le xattrprogramme peut être utilisé pour afficher et manipuler des attributs étendus. Jetez un coup d'œil à ce qu'il y a avant de décider de supprimer ces attributs. Jetez un coup d’œil à la page de manuel de xattr également.

Voici un exemple rapide de code de 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 

la source
22

Merci à @Jeff pour la correction. Je me rappelais mademoiselle.

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

Exécutez la commande ls -le filenamepour voir si des ACL sont définis.

Étant donné que votre problème semble être lié à l'accès au fichier, je parie que vous avez une liste de contrôle d'accès en plus d'un attribut étendu.

Supprimer une liste de contrôle d'accès echo | sudo chmod -E filenamepour un fichier ou echo | sudo chmod -R -E directory nameun répertoire.

Voir la page de manuel de chmod .

Zoredache
la source
Merci pour la réponse. Comment puis-je m'en débarrasser?
VinnyD
Mis à jour avec une réponse qui, à mon avis, devrait fonctionner.
Zoredache
Les autorisations @Zoredache ACL sont accompagnées du signe plus. Le @ est "attributs étendus".
Oui, je le vois en vérifiant. Je dois me souvenir à l'envers. Et que se passe-t-il lorsqu'un fichier contient les deux?
Zoredache
Peu importe, j'ai un Mac démarré. Si vous avez un @attribut étendu et un +jeu acl, il apparaît que ls affichera un @. Comme il a des problèmes pour accéder à un fichier, il me semble probable que le problème est davantage lié à un problème de LCA.
Zoredache
8

Avec l'attribut pomme en quarantaine, chmod ne suffit pas pour le supprimer.

Vous devez supprimer l'attribut explicitement:

sudo xattr -d com.apple.quarantine my_file
Émeute
la source
OP a également demandé "Que signifie le @?"
Kamafeather
3

Le @représente les attributs étendus, en plus des autorisations de fichiers unix standard.

Vérifiez les attributs étendus:

ls -l@

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

sudo xattr -c <filepath>

Réinitialisez 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).

NullIsNot0
la source
0

J'ai trouvé que le -Eou -Nsont en réalité invisibles, même lors de l'utilisation sudo. La seule façon de résoudre ce problème était de vous connecter en tant que root.

Reza Toghraee
la source
Ce n'est pas une réponse. Devrait probablement être un commentaire sur la réponse à laquelle vous faites référence.
Kamafeather