Tak, Mac ma wiele ulepszeń w stosunku do Uniksa w obszarze plików. Ignorując całą rzecz resource fork , która nie jest już zbytnio używana, są:
- standardowe uprawnienia uniksowe
ugo
rwx
i tak dalej. Stosuje się zwykłe narzędzia uniksowe.
- ACL‘s, widoczne z
ls -le
i możliwe do zmiany z chmod [-a | +a | =a]
.
- flagi plików, widoczne za pomocą
ls -lO
(duże o, nie zero) i możliwe do zmiany za pomocą chflags
.
- rozszerzone atrybuty , widoczne z
ls -l@
(tylko klucze atrybutów) i możliwe do oglądania i zmiany z xattr
. (Użyj xattr -h
, aby uzyskać pomoc, jeśli man xattr
nic ci nie daje).
- Począwszy od OS X 10.11 “El Capitan”, * System Integrity Protection ** (SIP) dodatkowo chroni niektóre pliki przed zmianami wprowadzanymi przez zwykłe procesy, nawet jeśli używasz
sudo
do uruchamiania jako root
. Pliki chronione przez SIP będą wymienione przez ls -lO
jako posiadające flagę restricted
i/lub będą wymienione przez ls -l@
jako posiadające atrybut com.apple.rootless
.
Możesz spotkać się z odmową wykonania operacji na pliku z powodu uprawnień uniksowych, ACL, flag pliku lub SIP. Aby w pełni 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 włączona jest ochrona integralności systemu (SIP), sudo chflags norestricted
i sudo xattr -d com.apple.rootless
również zwrócą błąd “Operacja niedozwolona”. Aby wyczyścić flagę i/lub atrybut, musisz uruchomić komputer w trybie macOS Recovery i albo uruchomić polecenia z Terminala (być może będziesz musiał najpierw użyć Disk Utility, aby odblokować i zamontować dysk startowy, a następnie pamiętać, że twoje pliki będą pod /Volumes/Macintosh HD
lub jakkolwiek nazwany jest twój dysk startowy) lub disable SIP altogether i zrestartować komputer, a polecenia powinny zadziałać. Pamiętaj jednak, że przyszłe aktualizacje systemu operacyjnego prawdopodobnie przywrócą flagę restricted
i atrybut com.apple.rootless
do wszystkich plików, z których je usunąłeś.
_ Wyłączenie SIP nie jest zalecane _ ponieważ usuwa wiele zabezpieczeń przed złośliwym oprogramowaniem i przypadkowymi uszkodzeniami, a ponadto nie jest konieczne, gdy można po prostu usunąć ochronę na podstawie pojedynczego pliku. Jeśli wyłączysz SIP, włącz go ponownie po zakończeniu wprowadzania zmian.
Zauważ, że jeśli ls -lO
pokazuje, że flaga schg
jest ustawiona, musisz przejść do trybu pojedynczego użytkownika, aby ją wyłączyć. Nie będę się tutaj w to zagłębiał, ponieważ są większe pytania o to, dlaczego plik ma ustawioną tę flagę i dlaczego próbujesz z nią zadzierać i jakie będą tego konsekwencje.