Arbo, inode, liens physiques et symboliques, acl

Arbo, inode, liens physiques et symboliques

Chaque nœud de l’arborescence est identifié en interne de manière univoque par deux nombres :
1. le numéro de la partition ;
2. le numéro du nœud appelé inode ou index node (ls -i pour voir le num de l'inode).

$ ls -i *.tex
65444 -r...--  1 ... guide-unix.tex     
ici, le fichier guide-unix.tex a inode num 65444 et n'a qu' 1 seul lien

Lien physique: consiste à relier un fichier (un ensemble d’octets sur un disque) à un nom sur l’arborescence.
On peut créer un nouveau lien sur ce fichier (éventuellement dans un répertoire différent) si ce répertoire est sur la même partition que le fichier guide.tex, grâce à ln cible-lien nom-lien

Lors suppression d’un lien (vers fichier F), la règle est la suivante :
1. tant que le nombre de liens physiques sur F est > 1, rm = suppression du lien et non des données.
2. lorsque le nombre de liens physiques = 1, rm efface effectivement les données (il n’y a plus qu’un lien unique sur celles-ci).

Si le fichier F est ouvert par au moins un processus, le lien disparaîtra après la commande rm mais l’espace qu’occupent les données ne sera libéré que quand le dernier processus ayant ouvert le fichier se terminera.

Lien symbolique: pour lier un fichier par l’intermédiaire d’un lien ne se trouvant pas sur la même partition que le fichier lui-même. ln -l cible-lien nom-lien

Il possède son propre inode, ce fichier (poids k= nb car du path) contient une référence sur un autre fichier, et on peux lui attribuer des droits.
La plupart des opérations sur le lien symbolique est effectuée sur le fichier sur lequel il pointe. Par contre la suppression de ce lien obéit aux règles suivantes :
1. rm supprime le lien symbolique lui-même — qui est un fichier à part entière — et n’a pas d’influence sur le fichier auquel il se réfère ;
2. par conséquent, si on supprime le fichier, le lien symbolique existe toujours et pointe sur un fichier qui n’existe pas.

Particularité du lien symbolique: il est possible de créer un tel lien sur un répertoire.

Options de cd et pwd

-L pour demander explicitement à suivre les liens symboliques ;
-P pour demander à suivre la structure physique de l’arborescence.

acl et privilèges de groupe: setfacl et getfacl

Ex: 2 users, Alpha et Beta veulent partager un fichier file.dat.
Créer un groupe commun, dont les 2 users sont membres (à faire par l'admin). Alpha (créateur et proprio du doc) doit faire chgrp commun file.dat puis chmod g+rw file.dat à refaire lors arrivée 3e user angry

Gestion des ACL sous unix, essentiellement via 2 commandes: getfacl (examen des autorisations d’un fichier) et setfacl (positionnement de ces autorisations).
Requis: que le fs gère les acl. A spécifier lors montage dans  /etc/fstab (ex: /dev/sdb5   /home  ext3  acl,defaults 0 2)

Alpha doit faire setfacl -m u:Beta:rw file.dat   (m -> modif  u: pour user)
Comme chmod, setfacl autorise l’option -R pour accorder les droits spécifiés à tous les fichiers et sous-répertoires.

L’option -l de ls propose un affichage modifié lorsque des autorisations ACLs sont associées à un fichier :
-rw-rw-r--+ 1 Alpha users 3100 2009-05-11 22:51 file.dat
Avec getfacl, on voit le propriétaire et son groupe, puis par ex

  • user::rw-     droits du propriétaire
  • user:jean:rw-   droits de l’utilisateur jean
  • group::r--        droits du groupe propriétaire
  • mask::rw-
  • other::r--         droits des autres

Accorder des droits par défaut dans un répertoire avec setfacl -d

setfacl -d -m u:marc:rw .   authorise rw au user marc pour tous fichiers créés dans le rep courrant (= tous les fichiers créés par la suite
seront lisibles et modifiables par ce user). Cette commande ne donne pas à marc le droit de créer des fichiers dans ce rep.

setfacl -k .  supprime les droits par défaut sur le répertoire courant.

Révoquer des droits: setfacl -b ou -x

Pour supprimer les droits ajoutés avec la setfacl et son option -m on peut utiliser :
– l’option -b pour supprimer tous les droits de type ACL
– l’option -x pour supprimer une entrée. Ex: setfacl -x u:marc fake.dat  révoque les droits accordés sur le fichier fake.dat à l’utilisateur marc.

Masque acl

Lorsqu’au moins un privilège de type ACL a été accordé à un fichier, un masque est créé contenant l’union de toutes les autorisations.

Ce masque est construit automatiquement:

Ex avec Le masque créé et affiché par la commande getfacl sera
setfacl -m u:dinah:r  righthereonthe.floora
setfacl -m u:moe:r    righthereonthe.floora
setfacl -m u:hum:rw righthereonthe.floora

getfacl righthereonthe.floora

[...]
user::dinah:r--
user::moe:r--
user::hum:rw-
[...]
mask::rw-        union des trois permissions précédentes
[...]

L’intérêt de ce masque réside dans le fait qu’il peut être modifié pour appliquer une politique pour tous les utilisateurs.
Par ex pour ne conserver que le droit en lecture pour tous les utilisateurs ACL:  setfacl -m m::r fake.doc
 

Source