Was bedeutet "@" bei Unix-Dateiberechtigungen?


49

Ich habe eine Datei mit den folgenden Berechtigungen auf meinem MacBook Pro:

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

Wofür steht der @? Ich kann die Datei nicht ausführen und dies ist das einzige, was mir auffällt. Wie kann ich es loswerden?

Genau wie einige Hintergrundinformationen habe ich diese aus einer Time Machine-Sicherung kopiert.

Antworten:


35

Wenn die Datei oder das Verzeichnis erweiterte Attribute hat, wird im Berechtigungsfeld ein @ angezeigt. Für erweiterte Sicherheitsinformationen (ACLs) wird ein + angezeigt.

Ab man lsOS X:

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

Mit dem xattrProgramm können erweiterte Attribute angezeigt und bearbeitet werden. Schauen Sie sich an, was sich dort befindet, bevor Sie diese Attribute löschen. Schauen Sie sich auf jeden Fall auch die Manpage für xattr an.

Ein kurzes Beispiel aus einem Beispiel für einen PHP-Kompromisscode, den ich als Referenz aufbewahre:

$ 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 

22

Danke an @Jeff für die Korrektur. Ich habe mich falsch erinnert.

  • Das @wird angezeigt, wenn ein erweitertes Attribut gesetzt ist
  • Das +wird für eine ACL angezeigt.
  • WENN Sie sowohl ein Attribut als auch eine ACL haben, sehen Sie @.

Führen Sie den Befehl aus, ls -le filenameum festzustellen, ob ACLs festgelegt wurden.

Da Ihr Problem mit dem Zugriff auf die Datei zu sein scheint, haben Sie vermutlich zusätzlich zu einem erweiterten Attribut eine Zugriffssteuerungsliste festgelegt.

Um eine ACL loszuwerden, führen Sie sie echo | sudo chmod -E filenamefür eine Datei oder echo | sudo chmod -R -E directory nameein Verzeichnis aus.

Siehe die chmod-Manpage .


Danke für die Antwort. Wie kann ich es loswerden?
VinnyD

Aktualisiert mit einer Antwort, die meiner Meinung nach funktionieren sollte.
Zoredache

@Zoredache-ACL-Berechtigungen sind mit einem Pluszeichen versehen. Das @ ist "erweiterte Attribute".

Ja, das sehe ich, wenn ich es noch einmal überprüfe. Ich muss mich rückwärts erinnern. Und was passiert, wenn eine Datei beides enthält?
Zoredache

Egal, ich habe einen Mac hochgefahren. Wenn Sie ein @erweitertes Attribut und eine erweiterte +ACL-Menge haben, wird anscheinend mit ls ein angezeigt @. Da er Probleme beim Zugriff auf eine Datei hat, scheint es mir, dass das Problem wahrscheinlicher ist, dass er ein Problem mit einer ACL hat.
Zoredache

8

Mit dem Apfel-Quarantäne-Attribut reicht chmod nicht aus, um es zu entfernen.

Sie müssen das Attribut explizit entfernen:

sudo xattr -d com.apple.quarantine my_file

OP fragte auch "Wofür steht das @?"
Kamafeather

3

Das @steht für erweiterte Attribute zusätzlich zu den Standard-Unix-Dateiberechtigungen.

Überprüfen Sie die erweiterten Attribute:

ls -l@

Alle erweiterten Attribute für eine einzelne Datei zurücksetzen:

sudo xattr -c <filepath>

Alle erweiterten Attribute rekursiv zurücksetzen:

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

Überprüft auf macOS High Sierra (10.13) und macOS Mojave (10.14.6).


0

Ich habe festgestellt, dass die -Eoder -Nsogar bei der Verwendung tatsächlich unsichtbar sind sudo. Ich konnte es nur beheben, indem ich mich als root anmeldete


Das ist keine Antwort. Sollte wahrscheinlich ein Kommentar zu der Antwort sein, auf die Sie sich beziehen.
Kamafeather
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.