Oui, Mac a apporté de nombreuses améliorations à Unix dans le domaine des fichiers. Si l'on ignore tout le resource fork chose qui n'est plus très utilisée, il y en a :
- les permissions Unix standard
ugo
rwx
et ainsi de suite. Les outils Unix normaux s'appliquent.
- les ACL, visibles avec
ls -le
et modifiables avec chmod [-a | +a | =a]
.
- drapeaux de fichiers, visibles avec
ls -lO
(majuscule oh, pas zéro) et modifiables avec chflags
.
- attributs étendus, visibles avec
ls -l@
(clés d'attributs uniquement) et visibles et modifiables avec xattr
. (Utilisez xattr -h
pour obtenir de l'aide si man xattr
ne vous donne rien)
- À partir de OS X 10.11 “El Capitan”, * Protection de l'intégrité du système ** (SIP) protège davantage certains fichiers contre les modifications des processus ordinaires, même lorsque vous utilisez
sudo
pour exécuter root
. Les fichiers protégés par SIP seront répertoriés par ls -lO
comme ayant le drapeau restricted
et/ou seront répertoriés par ls -l@
comme ayant l'attribut com.apple.rootless
.
Vous pouvez vous voir refuser des opérations sur un fichier à cause des autorisations Unix, des ACL, des drapeaux de fichiers ou de SIP. Pour déverrouiller complètement un fichier :
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
Si la protection de l'intégrité du système (SIP) est activée, sudo chflags norestricted
et sudo xattr -d com.apple.rootless
renverront également une erreur “Opération non autorisée”. Pour effacer le drapeau et/ou l'attribut, vous devez démarrer dans macOS Recovery et soit exécuter les commandes depuis le terminal (vous devrez peut-être d'abord utiliser l'utilitaire de disque pour déverrouiller et monter votre lecteur de démarrage, puis vous rappeler que vos fichiers seront sous /Volumes/Macintosh HD
ou quel que soit le nom de votre lecteur de démarrage), soit désactiver complètement SIP et ensuite redémarrer et les commandes devraient alors fonctionner. Sachez toutefois que les futures mises à jour du système d'exploitation restaureront probablement l'indicateur restricted
et l'attribut com.apple.rootless
pour tous les fichiers dont vous l'avez supprimé.
_ La désactivation de SIP n'est pas recommandée _ car elle supprime beaucoup de protection contre les logiciels malveillants et les dommages accidentels, et elle n'est pas nécessaire lorsque vous pouvez simplement supprimer la protection par fichier. Si vous désactivez le SIP, réactivez-le lorsque vous avez fini de faire des modifications.
Notez que si ls -lO
indique que le drapeau schg
est activé, vous devez passer en mode mono-utilisateur pour le désactiver. Je ne vais pas aborder ce sujet ici, car il y a de plus grandes questions sur la raison pour laquelle ce drapeau est activé dans le fichier et pourquoi vous essayez de le modifier et quelles en seront les conséquences.