Co oznacza „@” w uprawnieniach do plików uniksowych?

49

Mam plik z następującymi uprawnieniami na moim MacBooku Pro:

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

Co oznacza @skrót? Nie mogę wykonać pliku i to jedyna rzecz, która mnie wyróżnia. Jak mogę się tego pozbyć?

Podobnie jak w tle, skopiowałem to z kopii zapasowej Time Machine.

VinnyD
źródło

Odpowiedzi:

35

Jeśli plik lub katalog ma rozszerzone atrybuty, zobaczysz @ w polu uprawnień. W przypadku rozszerzonych informacji o bezpieczeństwie (ACL) zobaczysz znak +.

W man lssystemie OS X:

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

xattrProgram może być używany do wyświetlania i manipulować rozszerzonych atrybutów. Sprawdź jednak, co tam jest, zanim zdecydujesz się przejść, usuwając te atrybuty. Zdecydowanie rzuć też okiem na stronę podręcznika dla xattr.

Szybki przykład z przykładowego kodu kompromisowego PHP, który trzymam w celach informacyjnych:

$ 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 

źródło
22

Dzięki @Jeff za korektę. Nie pamiętałem.

  • Wyświetlany @jest z ustawionym rozszerzonym atrybutem
  • Wyświetlany +jest dla listy ACL.
  • Jeśli masz zarówno atrybut, jak i listę ACL, zobaczysz @.

Uruchom polecenie, ls -le filenameaby sprawdzić, czy ma ustawione jakieś listy ACL.

Ponieważ wydaje się, że twój problem dotyczy dostępu do pliku, założę się, że masz zestaw ACL oprócz rozszerzonego atrybutu.

Aby pozbyć się ACL, uruchom echo | sudo chmod -E filenameplik lub echo | sudo chmod -R -E directory namekatalog.

Zobacz stronę podręcznika użytkownika chmod .

Zoredache
źródło
Dzięki za odpowiedzi. jak mogę się tego pozbyć?
VinnyD
Zaktualizowany o odpowiedź, która moim zdaniem powinna działać.
Zoredache
Uprawnienia ACL @Zoredache pochodzą ze znakiem plus. @ To „atrybuty rozszerzone”.
Tak, widzę to, gdy dwukrotnie sprawdzam. Muszę pamiętać wstecz. A co się stanie, gdy plik ma oba te elementy?
Zoredache
Nieważne, mam uruchomionego Maca. Jeśli masz @rozszerzony +zestaw atrybutów i acl, wygląda na to, że ls pokaże @. Ponieważ ma on problemy z dostępem do pliku, wydaje mi się prawdopodobne, że problem jest bardziej prawdopodobny, że ma on problem z listą ACL.
Zoredache
8

Dzięki atrybutowi kwarantanny jabłka chmod nie wystarczy, aby go usunąć.

Musisz jawnie usunąć atrybut:

sudo xattr -d com.apple.quarantine my_file
Zamieszki
źródło
OP zapytał także „Co oznacza @?”
Kamafeather,
3

@Oznacza rozszerzonych atrybutów, w uzupełnieniu do standardowych uprawnień plików UNIX.

Sprawdź rozszerzone atrybuty:

ls -l@

Zresetuj wszystkie atrybuty rozszerzone dla jednego pliku:

sudo xattr -c <filepath>

Zresetuj rekurencyjnie wszystkie atrybuty rozszerzone:

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

Sprawdzone na macOS High Sierra (10.13) i macOS Mojave (10.14.6).

NullIsNot0
źródło
0

Odkryłem, że -Elub -Nsą w rzeczywistości niewidoczne, nawet podczas używania sudo. Jedynym sposobem, aby to naprawić, było zalogowanie się jako root

Reza Toghraee
źródło
To nie jest odpowiedź. Powinien to być komentarz do odpowiedzi, do której się odnosisz.
Kamafeather