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.

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 

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 .


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

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).


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


To nie jest odpowiedź. Powinien to być komentarz do odpowiedzi, do której się odnosisz.
Kamafeather
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.