Utilisateurs, fichiers et répertoires

Une sélection de commandes

whoami, who am i, id
Qui suis-je ?
ypcat, ypmatch, ypwhich
Accès aux données NIS.
passwd, chpass, yppasswd
Changement de mot de passe.
stat (commande locale)
Informations sur un inode.
mknod, mkfifo
Création d'un fichier spécial.

cd .. et les liens symboliques

Faites "mkdir -p toto/titi; ln -s toto/titi tata; cd tata; cd ..; pwd", puis faites la même chose en ayant auparavant tapé "/bin/sh" (sur Sun uniquement).

Un petit exercice

  1. Faire un programme en Perl qui admet une série d'arguments, et qui, pour chaque argument argi effectue une liste des fichiers récursivement à partir du chemin d'accès argi. Cette liste ne devra pas afficher le nom des répertoires au milieu des fichiers, et devra indenter les fichiers à chaque fois que l'on descend dans un sous-répertoire.
    Par exemple, sur clipper, avec les arguments /etc/net /etc/saf le résultat est
    ** /etc/net
    ticlts
      hosts
      services
    ticots
      hosts
      services
    ticotsord
      hosts
      services
    ** /etc/saf
    _cmdpipe
    _sacpipe
    _sactab
    _sysconfig
    zsmon
      _pid
      _pmpipe
      _pmtab

    [corrigé]
  2. Faire un programme fatfilter en Perl qui recherche à partir d'un répertoire donné les gros fichiers auxquels nul n'a accédé récemment. Un fichier de configuration .fatfilterrc contient, pour certaines extensions de nom de fichier, des règles spécifiques : ne pas tenir compte de la date de dernier accès, ne pas tenir compte de la taille du fichier, afin d'affiner la recherche des fichiers qu'il faut comprimer. Voici un exemple de fichier de configuration.
    [corrigé]

  3. L'objet de cet exercice est de construire un logiciel permettant de maintenir identiques deux répertoires sur des disques différents. Par exemple, si l'on travaille indifféremment sur une station fixe en réseau ou sur un portable, il faut répercuter les mises à jour de fichiers d'une machine à l'autre. Ce sera fait sous la forme d'un programme Perl update qui admet une variété d'arguments et d'options.

    Les arguments sont des noms de répertoires qu'il faut mettre à jour. S'il n'y en a pas, on considère l'argument par défaut donné par la variable d'environnement $HOME. Un fichier .updaterc peut préciser si certains répertoires ou fichiers doivent être exclus. Le principe est d'avoir sur chaque machine un fichier .update qui contient la liste des fichiers avec leur date de dernière modification, correspondant à la dernière mise à jour, et leur numéro d'inode. Lorsqu'on quitte une machine, on crée une archive .tgz qui contient les fichiers modifiés.

    NB: ce genre de logiciel existe évidemment déjà, cf. par exemple rdist et rsync.