Laboratoire 7 - Droits et répertoires

Page content

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 fonctions getpwuid et getgrgid afin de faire la conversion. Comparez votre programme avec la sortie de ls -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 paquet libacl1-dev et compiler avec -lacl. L’appel système getxattr 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 et closedir.

  • 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ème openat(2) pourraient vous être utiles.

  • Extra. Ajoutez une option -f qui déréférence en plus les liens symboliques.

    • Voir readlink(2) et readlinkat(2)