Laboratoire 7 - Droits et répertoires
Remarque: n’oubliez pas, lors de l’utilisation d’appels système, de traiter les cas d’erreur.
Mini ls
(suite)
Modifiez le programme mini_ls
du lab 6 pour:
- ajouter une option
-n
, qui, à la place d’afficher l’uid et le gid propriétaire, affiche le nom de l’utilisateur et du groupe propriétaire du fichier. Pour cela, utilisez les fonctionsgetpwuid
etgetgrgid
afin de faire la conversion. Comparez votre programme avec la sortie dels -lid
.
$ ./mini_ls -n votre_fichier.txt
Numéro inode | Droits | Nombre de lien | Utilisateur | Groupe| Taille | Dernière modification
16132273 | rw-rw-r-- | 1 | Florian | User | 86 | oct 21 15:05
-
Afficher un + après les droits si le fichier a des ACL (
man acl.5
. Cela peut nécessiter des bibliothèques supplémentaires comme le paquetlibacl1-dev
et compiler avec-lacl
. L’appel systèmegetxattr
pourrait vous servir) -
Dans le cas où le fichier passé en argument est un répertoire, cela affiche le détail de chacun des fichiers. Pour cela utilisez les différentes fonctions
opendir
,readdir
etclosedir
. -
Extra. Ajoutez une option
-R
pour que l’affichage des répertoires soit récursif (de façon similaire àls -lR
).
Répertoire absolu
-
Développez un programme
absolute
qui permet de retourner le chemin absolu du répertoire courant. Ce programme est similaire àpwd
. Pour ce faire, procédez avec les étapes suivantes:- On récupère le numéro d’inode du répertoire courant
- On cherche dans le répertoire parent le nom du fichier ayant le même numéro d’inode
- On recommence les étapes précédentes jusqu’à parcourir l’ensemble de notre arborescence
-
Les fonctions
opendir(3)
,fdopendir(3)
,readdir(3)
,closedir(3)
ainsi que l’appel systèmeopenat(2)
pourraient vous être utiles. -
Extra. Ajoutez une option
-f
qui déréférence en plus les liens symboliques.- Voir
readlink(2)
etreadlinkat(2)
- Voir