Skip to main content

Tak, macOS wprowadza wiele ulepszeń do systemu Unix w zakresie obsługi plików. Pomijając całkowicie temat resource fork, który obecnie jest rzadko używany, mamy następujące możliwości:

  • Standardowe uprawnienia Uniksa – czyli klasyczne ugo rwx i podobne. Działają tu typowe narzędzia uniksowe.
  • ACL (Access Control Lists) – można je zobaczyć poleceniem ls -le oraz zmieniać przy użyciu chmod [ -a | +a | =a ].
  • Flagi plików – widoczne dzięki ls -lO (duże „O”, nie zero) i modyfikowalne przez chflags.
  • Atrybuty rozszerzone – widoczne przez ls -l@ (pokazuje tylko klucze atrybutów) oraz przeglądane i modyfikowane przy użyciu xattr. (Użyj xattr -h, jeśli man xattr nic nie zwraca.)
  • Począwszy od macOS 10.11 „El Capitan”, System Integrity Protection (SIP) dodatkowo chroni niektóre pliki przed zmianami przez zwykłe procesy – nawet przy użyciu sudo. Pliki chronione przez SIP można rozpoznać, ponieważ ls -lO pokaże flagę restricted, a ls -l@ atrybut com.apple.rootless.

Możesz nie mieć możliwości wykonania operacji na pliku z powodu uprawnień Uniksa, list ACL, flag pliku lub SIP. Aby całkowicie odblokować plik:

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 HD lub pod inną nazwą dysku).
  • Lub całkowicie wyłącz SIP, a następnie zrestartuj system. Wtedy powyższe polecenia zadziałają.

Należy jednak pamiętać, że przyszłe aktualizacje macOS mogą przywrócić flagę restricted oraz atrybut com.apple.rootless w plikach, z których je usunięto.

Wyłączenie SIP nie jest zalecane, ponieważ usuwa ono wiele zabezpieczeń chroniących przed złośliwym oprogramowaniem i przypadkowym uszkodzeniem systemu. Nie jest to też konieczne, ponieważ można zdjąć ochronę dla pojedynczego 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.

Więcej informacji

Twoje wsparcie jest mile widziane

Jeśli chcesz wesprzeć nowe projekty lub podziękować za dotychczasową pracę, możesz to zrobić przez PayPal.me. Dziękujemy za wsparcie!