
Technologie, Wiedza i Proces
xattrs: problem z uprawnieniami przy atrybutach rozszerzonych
W macOS blokady plików to nie tylko chmod. Są ACL, flagi, xattr i SIP. Poniżej krótki przegląd i kroki odblokowania.
Jeśli Terminal zwraca „Operation not permitted”, zwykle blokuje Cię jedna z warstw ochrony. W macOS są cztery główne mechanizmy:
- Standardowe uprawnienia Uniksa – klasyczne ugo rwx. Działają tu typowe narzędzia uniksowe.
- ACL (Access Control Lists) – widać je poleceniem
ls -lei zmieniasz przezchmod [ -a | +a | =a ]. - Flagi plików – sprawdzisz
ls -lO(duże „O”, nie zero), modyfikujeszchflags. - Atrybuty rozszerzone – podgląd przez
ls -l@ixattr(użyjxattr -h, gdyman xattrnic nie zwraca). - Od macOS 10.11 „El Capitan” System Integrity Protection (SIP) dodatkowo chroni część plików, nawet przy
sudo. Pliki chronione przez SIP poznasz po fladzerestrictedwls -lOi atrybuciecom.apple.rootlesswls -l@.
Gdy plik jest zablokowany, przejdź po kolei:
sudo chmod -N file # Remove ACLs from file
sudo chmod ugo+rw file # Give everyone read-write permission to file
sudo chflags nouchg file # Clear the user immutable flag from file
sudo chflags norestricted file # Remove the SIP protection from file
sudo xattr -d com.apple.rootless file # Remove SIP protection from file
Jeśli System Integrity Protection (SIP) jest włączony, polecenia sudo chflags norestricted oraz sudo xattr -d com.apple.rootless zwrócą błąd „Operation not permitted”. Aby usunąć flagę lub atrybut, uruchom komputer w trybie macOS Recovery i wykonaj jedno z poniższych działań:
- Uruchom Terminal (być może trzeba wcześniej użyć Disk Utility, aby odblokować i zamontować dysk startowy – twoje pliki będą wtedy w
/Volumes/Macintosh HDlub pod inną nazwą dysku). - Lub całkowicie wyłącz SIP, a następnie zrestartuj system. Wtedy powyższe polecenia zadziałają.
Pamiętaj, że aktualizacje macOS mogą przywrócić flagę restricted i atrybut com.apple.rootless w plikach, z których je usunąłeś.
Wyłączenie SIP nie jest zalecane – usuwa istotne zabezpieczenia systemu. Najczęściej wystarczy zdjąć ochronę tylko z jednego pliku. Jeśli jednak wyłączysz SIP, włącz go ponownie po zakończeniu zmian.
Uwaga: jeśli ls -lO pokazuje ustawioną flagę schg, musisz uruchomić system w trybie single-user, aby ją usunąć. Autor nie rozwija tego tematu, ponieważ pojawia się pytanie, dlaczego plik ma tę flagę i jakie mogą być konsekwencje jej usunięcia.