Gestion des ACL sous Mac OS

Ce billet est la traduction d'une partie de la page : [http://www.java-samples.com/showtutorial.php?tutorialid=1409 |http://www.java-samples.com/showtutorial.php?tutorialid=1409|en|chmod OSX]

Dans ce billet je vais détailler la manipulation des ACL (Access Control List) sous MacOSX et plus précisément sur le système de fichier d'Apple HFS+.

Le système de fichier d'Apple HFS+, comme d'autres systèmes fichiers (UFS, XFX, Ext3-4, Btrfs,...) offre la possibilité d'étendre les droit Unix classique (voir wikipédia pour plus de détail) : read, write, et execute (rwx) affectés au propriétaire, au groupe et aux autres. Quand un fichiers s'est vu attribuer une ou plusieurs ACL la commande

ls -l

affiche un + à la fin des droits unix : drwxr-xr-x+

Chaque fichier possède une ACL, contenant une liste ordonnée d'entrées. Chaque entrée fait référence à un utilisateur ou un groupe, et accorde ou refuse un ensemble d'autorisations.

Ces autorisations sur les objets du système de fichiers sont :

  • delete Supprimer l'élément. La suppression peut être accordée soit par cette autorisation sur un objet ou le droit delete_child sur le répertoire contenant.
  • readattr Lire un objet attributs de base. Ce qui est implicitement accordée si l'objet peut être regardé et ne sont pas explicitement nié.
  • writeattr Ecrire attributs de base d'un objet.
  • readextattr Read extended attributes.
  • writeextattr Lire les attributs étendus.
  • readsecurity Lire les informations de sécurité d'un objet étendue (ACL).
  • writesecurity Écrire des informations sur la sécurité d'un objet (propriété, mode, ACL).
  • chown Modifier la propriété d'un objet.

Autorisations spécifiques aux répertoires :

  • list afficher le contenu.
  • search Rechercher des fichiers par leur nom.
  • add_file Ajouter un fichier.
  • add_subdirectory Ajouter un sous-répertoire.
  • delete_child Suppression d'un objet contenu. Voir la permission suppression des fichiers ci-dessus.

Autorisations pour tout autre fichier (non répertoire) :

  • read Ouvrir en lecture.
  • write Ouvrir en écriture.
  • append Ajouter Ouvre en écriture, mais d'une manière qui ne permet d'écrire que dans des zones du fichier ne sont pas déjà écrites.
  • execute Exécutez le fichier comme un script ou un programme.

Permissions d'héritage d'ACL sur des répertoires :

  • file_inherit Hériter pour les fichiers.
  • directory_inherit Hériter pour les répertoires (en fait sous-répertoires).
  • limit_inherit limite de l'héritage sous-répertoire. Ce qui provoque le drapeau directory_inherit à effacer, empêchant autres sous-répertoires à partir de l'entrée également hériter. Seule le premier niveau de sous-répertoire héritent.
  • only_inherit L'entrée est hérité par les éléments créés mais non pris en compte lors du traitement de l'ACL.

Dans le cas où un utilisateur et un groupe existant avec le même nom, le nom d'utilisateur / groupe peut être préfixé par "utilisateur" ou "groupe", afin de préciser le type de nom.

Exemples d'ACL :

   $ chmod +a "admin allow write" myfile.txt
   $ chmod +a "guest deny read" myfile.txt
   $ chmod +a "admin allow delete" myfile.txt
   $ chmod +ai "others allow read" myfile.txt
   $ chmod +a# 2 "others deny read" myfile.txt
   $ chmod -a# 1 myfile.txt
   $ chmod -a "admin allow write" myfile.txt
   $ chmod =a# 1 "admin allow write,chown"

Notes:

Seul le propriétaire d'un fichier ou le super-utilisateur est autorisé à modifier le mode d'un fichier. L'état de retour est zéro si le mode est modifié avec succès, non nulle sinon.

Lorsque chmod est appliqué à un répertoire (on retrouve le principe des systèmes de fichier sous unix):

  • read = liste des fichiers dans le répertoire
  • write = ajouter de nouveaux fichiers dans le répertoire
  • execute = accéder à des fichiers dans le répertoire

chmod ne modifie jamais les autorisations des liens symboliques. Ce n'est pas un problème puisque les autorisations des liens symboliques ne sont jamais utilisés. Cependant, pour chaque lien symbolique mentionné sur la ligne de commande, chmod modifie les permissions du fichier pointé à. En revanche, chmod ignore les liens symboliques rencontrés lors des descentes récursives de répertoires.

On remarquera que les ACLs du HFS+ sont assez proche de celles du ZFS:http://docs.huihoo.com/opensolaris/solaris-zfs-administration-guide/html/ch07.html

Add a comment

Comments can be formatted using a simple wiki syntax.

They posted on the same topic

Trackback URL : http://blogs.simc.be/simc/index.php/trackback/371

This post's comments feed