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 -leoraz zmieniać przy użyciuchmod [ -a | +a | =a ]. - Flagi plików – widoczne dzięki
ls -lO(duże „O”, nie zero) i modyfikowalne przezchflags. - Atrybuty rozszerzone – widoczne przez
ls -l@(pokazuje tylko klucze atrybutów) oraz przeglądane i modyfikowane przy użyciuxattr. (Użyjxattr -h, jeśliman xattrnic 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 -lOpokaże flagęrestricted, als -l@atrybutcom.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 HDlub 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.
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!