Oui, Mac a beaucoup d'améliorations par rapport à Unix dans le domaine des fichiers. En ignorant l'ensemble fourchette de ressources chose qui n'est plus guère utilisée, il y en a :
- le site permissions standard d'Unix
ugo
rwx
et ainsi de suite. Les outils Unix normaux s'appliquent.
-
ACL qui peuvent être visualisées avec
ls -le
et modifiable avec chmod [ -a | +a | =a ]
.
-
drapeaux de fichiers consultable avec
ls -lO
(Capital oh, pas zéro) et modifiable avec chflags
.
-
attributs étendus consultable avec
ls -l@
(clés d'attribut uniquement) et visualisable et modifiable avec xattr
. (Utiliser 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 apportées par des processus ordinaires, même lorsque l'on utilise
sudo
pour fonctionner comme root
. Les fichiers protégés par SIP seront listés par ls -lO
comme ayant le restricted
et/ou être listé par ls -l@
comme ayant le com.apple.rootless
attribut.
Les opérations sur un fichier peuvent vous être refusées à cause des permissions Unix, des ACL, des drapeaux de fichier ou du 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
y sudo xattr -d com.apple.rootless
renverra également une erreur "Operation not permitted". Pour effacer l'indicateur et/ou l'attribut, vous devez démarrer en mode Récupération de macOS et exécutez les commandes depuis un terminal (vous devrez peut-être utiliser l'utilitaire de disque pour déverrouiller et monter votre disque de démarrage, puis rappelez-vous que vos fichiers seront sous /Volumes/Macintosh HD
ou quel que soit le nom de votre lecteur de démarrage) ou désactiver complètement SIP puis redémarrez et les commandes devraient alors fonctionner. Sachez cependant que les futures mises à jour du système d'exploitation rétabliront probablement la fonction restricted
et com.apple.rootless
à tous les fichiers dont vous l'avez supprimé.
La désactivation de SIP n'est pas recommandée car cela supprime une grande partie de la protection contre les logiciels malveillants et les dommages accidentels, et ce n'est pas nécessaire lorsque vous pouvez simplement supprimer la protection sur une base par fichier. Si vous désactivez SIP, réactivez-le lorsque vous avez terminé vos modifications.
Notez que si ls -lO
montre le schg
est activé, vous devez passer en mode mono-utilisateur pour le désactiver. Je ne vais pas m'étendre sur ce sujet ici car il y a des questions plus importantes sur la raison pour laquelle le fichier a ce drapeau activé et pourquoi vous essayez de le modifier et quelles en seront les conséquences.