1. TP #1 de systèmes

1.1 Utiliser la commande find

Comme nous l'avons vu en cours, la commande find permet de rechercher des fichiers en fonction d'un certain nombre de prédicats. Nous allons l'utiliser ici dans un certain nombre de conditions.

1.1.1 Recherche de sushi

On appelle sushi un shell caché par un utilisateur indélicat sous la forme d'un fichier de nom quelconque et lui permettant d'exécuter ces ordres comme s'il s'agissait de l'administrateur système root.

Il est toutefois possible de reconnaître assez facilement ce genre de fichiers gràce à leurs permissions et leur propriétaire

A partir de ces caractéristiques, effectuez les actions suivantes :

  1. Rechercher tous les fichiers possédant ces caractéristiques
  2. Les effacer à l'aide du prédicat exec de find

Tout un chacun aura bien entendu compris qu'il est vital pour un administrateur de vérifier très régulièrement la présence de tels sushi sur son système.

1.1.2 Utiliser conjointement find, tar et xargs

La commande tar permet de rassembler plusieurs fichiers dans une archive. Celle-ci peut, bien entendu, être envoyée sur un périphérique spécialisé dans l'archivage (genre DAT) mais se retrouve le plus souvent dans un fichier auquel l'on accolle traditionnellement (bien que rien ne nous y oblige) l'extension .tar .

La syntaxe générale pour l'utilisation avec les fichiers est la suivante :

tar commande fichier.tar fichiers à archiver

commande contient automatiquement la lettre f associée au mode "fichier".

Les caractères de commande peuvent être :

t Vérification (liste des fichiers) de l'archive
r Ajout de fichiers dans une archive existante
c Création d'une archive et ajout de fichiers
x Extraction de fichiers

Il existe également un certain nombre d'options, les plus courantes sont :

v Mode verbeux : affichage de la liste étendue des fichiers de l'archive
p en mode extraction de l'archive : conserve les permissions sur les fichiers d'origine. A mettre systématiquement

Dans cet exercice, nous allons construire une liste de fichiers avec find et créer une archive qui les contiendra. Pour ceci vous créerez un script rudimentaire. Afin d'être sûr de créer l'archive, on peut faire un rm -f sur le fichier.tar. Il y a alors plusieurs solutions :

Voici donc le travail à faire :

  1. Constituer une liste de fichier avec find, en utilisant les critères suivants :
  2. Vous les assemblez dans une archive nommée archive.tar avec les méthodes suivantes :
  3. Quelle méthode vous paraît préférable ?
  4. Utilisez un script avec des arguments pour passer 

Vers la solution !

1.2 Utilisation de l'argument -

Certaines commandes Unix opérant traditionnellement sur des fichiers proposent néanmoins la possibilité de travailler sur stdin ou stdout en utilisant le caractère - (moins) sur la ligne de commande.

Par exemple, il est possible de l'utiliser avec tar. L'exemple suivant envoie sur stdout le résultat de l'archivage de tous les fichiers .c du répertoire courant.

tar cvf - *.c

Hors, les commandes de compression permettent également d'utiliser - pour travailler sur stdin/stdout ! Par exemple, la commande suivante compresse le résultat de ps vers le fichier processus.Z à l'aide de la commande standard compress

ps -elf | compress - > processus.Z

Travail à effectuer :

Vers la solution !

1.3 Utilisation des expressions régulières avec egrep

Rechercher le mot (au sens de la langue Française) "lapin" dans le texte suivant :

Le lapin était un chasseur
Les lapinos sont de sortie !
lapin, est ce un mot ?
Elle m'a posé un lapin.
Un autre lapin
Lapin qui s'en dédie !
alapin, il manque un espace
quel animal était-ce (lapin)

Conseil : il faut utiliser egrep et suivre les conseils suivants

Vers la solution !