Sì, Mac ha molti miglioramenti a Unix nell'area dei file. Ignorando l'intera cosa resource fork che non è più molto usata, ci sono:
- i permessi standard di Unix
ugo
rwx
e così via. Si applicano i normali strumenti di Unix.
- ACL, visualizzabili con
ls -le
e modificabili con chmod [-a | +a | =a]
.
- File flags visualizzabili con
ls -lO
(Oh maiuscolo, non zero) e modificabili con chflags
.
- attributi estesi , visualizzabili con
ls -l@
(solo chiavi di attributo) e visualizzabili e modificabili con xattr
. (Usa xattr -h
per aiuto se man xattr
non ti dà nulla.)
- A partire da OS X 10.11 “El Capitan”, * System Integrity Protection ** (SIP) protegge ulteriormente alcuni file dalle modifiche dei processi ordinari, anche quando usi
sudo
per funzionare come root
. I file protetti da SIP saranno elencati da ls -lO
come aventi il flag restricted
e/o saranno elencati da ls -l@
come aventi l'attributo com.apple.rootless
.
Vi possono essere negate operazioni su un file a causa di permessi Unix, ACL, flag di file, o SIP. Per sbloccare completamente un file:
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
Se la System Integrity Protection (SIP) è abilitata, sudo chflags norestricted
e sudo xattr -d com.apple.rootless
restituiranno anche un errore “Operation not permitted”. Per cancellare il flag e/o l'attributo è necessario avviare in macOS Recovery ed eseguire i comandi dal terminale (potrebbe essere necessario usare prima Utility Disco per sbloccare e montare l'unità di avvio, poi ricordarsi che i file saranno sotto /Volumes/Macintosh HD
o qualunque sia il nome dell'unità di avvio) oppure disabilitare del tutto SIP e poi riavviare e i comandi dovrebbero funzionare. Siate consapevoli, tuttavia, che i futuri aggiornamenti del sistema operativo probabilmente ripristineranno il flag restricted
e l'attributo com.apple.rootless
a qualsiasi file da cui lo avete rimosso.
_ Disabilitare SIP non è raccomandato _ in quanto rimuove molta protezione contro malware e danni accidentali, inoltre non è necessario quando si può semplicemente rimuovere la protezione su una base per file. Se disabilitate SIP, riabilitatelo quando avete finito di fare cambiamenti.
Nota che se ls -lO
mostra che il flag schg
è impostato, devi entrare in modalità single-user per disinserirlo. Non mi addentrerò in questo argomento qui, poiché ci sono domande più grandi sul perché il file ha quel flag impostato e perché state cercando di incasinarlo e quali saranno le conseguenze.