Outre les attributs classiques Unix, MacOS X possède des flags et attributs étendus qui peuvent faire perdre leur latin aux Unixiens... Exemple : il vous est impossible de supprimer un fichier. Pourtant, un ls -la vous confirme que le fichier et le répertoire vous appartiennent, et que vous avez dessus les droits en écriture. Vous ne comprenez pas. Vous essayez de passer root pour forcer les choses et... root ne peut pas non plus supprimer le fichier ! Que se passe-t-il ?

Flags

Des drapeaux peuvent être positionnés sur les fichiers. Notamment, il existe un drapeau uchg qui explique le problème ci-dessus. Le drapeau uchg verrouille complètement un fichier. Dans le GUI, il correspond à la case « Verrouiller » de la boîte d'infos du fichier. Pour pouvoir supprimer le fichier dans l'exemple ci-dessus, il faut d'abord retirer le flag uchg.

Pour afficher les flags des fichiers, les options de ls sont :

ls -lO

La modification de ces flags se fait avec la commande chflags, suivie du nom d'un drapeau pour l'ajout, ou du nom préfixé de no pour la suppression. Exemple (-R pour récursif) :

chflags -R nouchg répertoire

Attributs étendus HFS+

Les fichiers peuvent également posséder des attributs étendus. Par exemple, l'attribut com.apple.quarantine signale les fichiers récemment téléchargés. On peut afficher les attributs étendus par la commande :

ls -l@

La commande xattr permet de lister, ajouter et modifier les attributs. Par exemple, pour afficher les attributs et leurs valeurs, on peut utiliser :

xattr -l fichier

Article d'Ars Technica sur les attributs étendus.

ACL

Les ACL permettent de régler finement les permissions, au niveau de chaque utilisateur ou groupe. On peut afficher les permissions étendues avec :

ls -le

La modification se fait avec chmod +a.

Article d'Ars Technica sur les ACL.