Docstoc

Exploitation Unix

Document Sample
Exploitation Unix Powered By Docstoc
					CONTEXTE                                                                 Exploitation Unix
SUJET                                                           Structure des répertoires systèmes
Unité                                                                 Département du Système d’Information
référence                                               UnixUtil0002V01T - Système de fichiers & Commandes.doc
version                                                 1
statut                                               

créé le                                                 09/08/2005
par                                                     Menard Thierry


mis à jour le                                           07/09/2011
par                                                     Ménard Thierry


validé le                                            
par                                                  

diffusé le                                           
à                                                    

Péremption, archivage                                   Destinataires : Inserm / DBA
et restriction de
diffusion
Nature de la restriction : confidentiel, diffusion
restreinte, diffusion interne, restriction annulée
                                           Table des mises à jour du document

version    date                                            objet de la mise à jour
   1    09/08/2005                   Création par Thierry Ménard
   2    07/09/2011                   Dernière MAJ


                                                          Table des matières

1      La structure des répertoires ............................................................................................................ 3
    1.1        Introduction ................................................................................................................ 3
    1.2        Les types de fichier sous Unix ................................................................................... 3
    1.3        Les liens ...................................................................................................................... 4
    1.4        Les i-nodes ................................................................................................................. 4
    1.5        Les principaux répertoires .......................................................................................... 4
    1.6        Structures de /, /usr et /usr/local ............................................................................... 6
    1.7        Particularité du répertoire /opt.................................................................................... 7
2      Gestion des fichiers ........................................................................................................................ 7
    2.1     Notion de propriétaires et Modification ..................................................................... 7
    2.2     Les droits fondamentaux ............................................................................................ 7
    2.3     Modification des droits (chmod) ................................................................................ 8
    2.4     Les droits par défaut (umask) ..................................................................................... 9
    2.5     Les droits spéciaux ..................................................................................................... 9
       2.5.1     Droits sur les fichiers .......................................................................................... 9
       2.5.1.1 setuid .................................................................................................................. 9
       2.5.1.2 setguid .............................................................................................................. 10
       2.5.1.3 sticky bit ........................................................................................................... 10
    2.6     Droits sur les répertoires .......................................................................................... 10
       2.6.1     setgid ................................................................................................................ 10
       2.6.2     sticky bit ........................................................................................................... 10
    2.7     Ecriture des droits sous forme de bit ........................................................................ 10
3      Navigation dans le système de fichier .......................................................................................... 11
    3.1     Changement de répertoire ........................................................................................ 11
    3.2     Taille d’un répertoire (df) ......................................................................................... 11
       3.2.1     Option ............................................................................................................... 11
4      Visualisation d’un répertoire (ls) ................................................................................................... 11
5      Commandes diverses sur le système de fichier ........................................................................... 12
1 La structure des répertoires
   1.1         Introduction
Contrairement à MS-DOS, Unix voit ses disques comme une unique arborescence. Une
partition contient la racine du système de fichier, qu'on note / (et non c:\ comme sous MS-
DOS).

D'autres partitions, des disquettes, des CD-ROM, etc., peuvent être "montés" dans des
répertoires. Par exemple, sur la machine que j'utilise en ce moment, le contenu du CD-ROM
est accessible dans le répertoire /mnt/cdrom.
Une fois les différents systèmes de fichiers montés, leur utilisation est transparente, sauf dans
quelques cas particuliers: impossibilité d'écrire sur un CD-ROM...
Bien souvent, sur les systèmes importants, les utilisateurs ne savent même pas dans quelle
machine se trouve le disque dur qu'ils utilisent.

La structure "standard" des répertoires est décrite par le FHS (Filesystem Hierarchy Standard)
auquel la plupart des distributions Linux essaient de se conformer.




   1.2         Les types de fichier sous Unix
Sous les systèmes de type Unix ou Linux, il existe plusieurs types de fichiers
Description (Première case des droits quand on fait un ls)

                   Mode                        Description
                    d      Répertoire
                    b      Fichier special (périphérique) en mode bloc
                    c      Fichier special (périphérique) en mode caractère
                    l      Lien symbolique
                    p      Pipe nommé = Fichier FIFO (First In First Out)
                    s      Socket
                    -      Fichier

      fichiers normaux
       * texte : courrier, sources des programmes, scripts, configuration ...
       * exécutables : programmes en code binaire
         fichiers répertoires
          ce sont des fichiers conteneurs qui contiennent des références à d'autres fichiers.
          véritable charpente de l'arborescence, ils permettent d'organiser les fichiers par
          catégories
         fichiers spéciaux (c & b)
          situés dans /dev, ce sont les points d'accès préparés par le système aux périphériques.
          Le montage va réaliser une correspondance de ces fichiers spéciaux vers leur
          répertoire "point de montage". (Ex, le fichier /dev/hda permet l'accès et le
          chargement du 1er disque IDE)
         fichiers liens symboliques
          Ce sont des fichiers qui ne contiennent qu'une référence (un pointeur) à un autre
          fichier. Cela permet d'utiliser un même fichier sous plusieurs noms sans avoir à le
          dupliquer sur le disque.

   1.3           Les liens
Un lien est créé pour pouvoir accéder au même fichier à différents endroits de l'arborescence.
Il existe deux types de liens (hard & symbolique). Sous Windows on retrouve à peu près
l'équivalent du lien symbolique avec la notion de raccourci.

La commande ln (pour link) sert à créer des liens.
Exemple
      $ ln -s /home/olivier/linux/readme /tmp/lisezmoi

Le fichier source est readme sous /home/olivier/linux, le lien créé est lisezmoi sous /tmp. En
faisant un man ln, vous découvrirez qu'il existe des liens hards et softs, sans rentrer dans les
détails, je vous conseille dans un premier temps de vous limiter aux liens softs (option -s) car
les liens hards ne permettents pas de visualiser directement le lien (la petite flèche -> quand
on tape ls -l).


   1.4           Les i-nodes
Sous un système UNIX, un fichier quel que soit son type est identifié par un numéro appelé
numéro d'inode. Ainsi derrière la façade du shell, un répertoire n'est qu'un fichier, identifié
aussi par un inode, contenant une liste d'inode représentant chacun un fichier.

La différence entre un lien hard et symbolique se trouve au niveau de l'inode, un lien hard n'a
pas d'inode propre, il a l'inode du fichier vers lequel il pointe. Par contre un lien symbolique
possède sa propre inode. A noter que vous ne pouvez pas créer de liens hards entre deux
partitions de disque différente, vous n'avez pas cette contrainte avec les liens symboliques.
Pour connaître le numéro d'inode d'un fichier, vous pouvez taper:
         $ ls -i MonFichier


   1.5           Les principaux répertoires
/bin :
        Contient les commandes de base (sous Unix, presque toutes les commandes sont
"externes", et non intégrées au shell comme sous DOS).
/boot :
         Contient les informations nécessaires au démarrage de la machine.
/dev :
         Contient les fichiers spéciaux correspondant aux périphériques.
/etc :
        La plupart des fichiers de configuration.
/home :
        Contient les répertoires personnels des utilisateurs. Par exemple, l'utilisateur toto a
généralement pour répertoire /home/toto.
/lib :
        Contient les principales bibliothèques partagées (équivalent des DLL de Windows).
/lost+found :
        Quand un disque crashe pour une raison ou pour une autre, on utilise le programme
fsck pour réparer (équivalent de scandisk); c'est là qu'il dépose les fragments de fichiers
perdus.
/mnt :
        Les répertoires utilisés pour monter temporairement un système de fichiers (disquette,
CD-ROM...).
/opt :
        C’est la qu'on installe les logiciels commerciaux.
/proc :
        Un répertoire factice, dont les fichiers contiennent des infos sur l'état du système et des
processus en cours d'exécution.
/root :
        Le répertoire de l'administrateur système. Il n'est pas sous /home pour des raisons que
je détaillerai plus loin.
/sbin :
        Les commandes de base nécessaires a l'administration système (vérification et
réparation des disques, mise en place du réseau...).
/tmp :
        Les fichiers temporaires.
/usr :
        Les logiciels installés avec le système.
        /usr/X11R6 :
                 X-Window.
        /usr/bin :
                 Les exécutables.
        /usr/dict :
                 Les dictionnaires (pour les correcteurs d'orthographe et les craqueurs de mots
        de passe).
/usr/doc :
        La doc.
        /usr/etc :
                 Des fichiers de config.
        /usr/games :
                 Les jeux.
        /usr/include :
                 Les fichiers d'en-tête pour la programmation.
        /usr/info :
                 La doc au format GNU info.
         /usr/lib :
                 Les DLL non vitales.
         /usr/local :
                 Une sous-hiérarchie qui contient des logiciels compilés sur place à partir des
         sources. Organisation similaire à /usr.
         /usr/man :
                 Le manuel en ligne. Les fichiers sont compressés.
         /usr/sbin :
                 Principalement les serveurs réseau.
         /usr/share :
                 Des fichiers de données.
         /usr/spool :
                 Généralement un lien symbolique vers /var/spool.
         /usr/src :
                 Les sources de certains logiciels, principalement le noyau de Linux.
/var :
         Des données fréquemment réécrites.
         /var/catman :
                 Les pages du manuel décompressées (ça se fait à la demande).
         /var/lib :
                 Des bases de données, des fichiers de config...
         /var/local :
                 Complète /usr/local de la même façon que /var complète /usr.
         /var/lock :
                 ui servent à marquer l'utilisation de certaines ressources. Par exemple, quand
         un logiciel se sert du modem, il crée un fichier ici pour le signaler.
         /var/log :
                 Le journal du système.
         /var/run :
                 Principalement des infos sur les serveurs en fonctionnement.
         /var/spool :
                 Les spools: tout ce qui est "de passage" en attendant d'être utilisé par un
         logiciel. Ca inclut entre autres le mail, les news, les files d'attente des imprimantes...
         /var/tmp :
                 Des fichiers temporaires.


   1.6          Structures de /, /usr et /usr/local

Une petite explication de ces structures assez similaires.
Il est assez fréquent que /usr soit stocké sur un disque distinct de /, voire sur une autre machine.
Donc / contient de quoi monter /usr, y compris à travers le réseau, et de quoi réparer si
quelque chose foire.
La même remarque s'applique a /home; c'est pourquoi le répertoire de l'administrateur est /root
et non /home/root.
De plus, comme /usr peut être monté en réseau, il peut être partagé entre plusieurs machines;
c'est pourquoi les fichiers de config et de données sont dans /var.
Quant à /usr/local, il est séparé de /usr car si /usr est facilement récupérable en cas de pépin (au
pire, on réinstalle tout), /usr/local est beaucoup plus difficile à reconstruire: il faut récupérer les
sources des logiciels et les recompiler.


   1.7          Particularité du répertoire /opt
Enfin, /opt a une structure totalement différente: chaque logiciel y a son propre répertoire. On
pourra par exemple avoir une hiérarchie du style:
         /opt ---+
          +- /opt/Office40
          +- /opt/netscape
          +- /opt/kde
          +- /opt/gnome
          |
Généralement, chaque répertoire de /opt possède au moins les sous-répertoires bin et etc, qui
contiennent respectivement les exécutables et les fichiers de config:
         /opt ---+- /opt/gnome --+- /opt/gnome/bin
          | +- /opt/gnome/etc
          | |
          |


2 Gestion des fichiers
   2.1          Notion de propriétaires et Modification
Un fichier appartient à un utilisateur (en fait un numéro d'utilisateur) et à un groupe (en fait un
numéro de groupe).

On peut changer l'utilisateur et le groupe par les commandes suivantes (chown & chgrp)
          $ chown <new_user> fichier
          $ chown <new_user>:<new_group> fichier
          $ chgrp <new_group> fichier
Exemple
     $ chown –R hrfor1:hr /hrtest

 Changement de propriétaire pour le file system /hrtest et tous les sous-répertoires (le user
hrfor1 et le group hr deviennent propriétaires).


   2.2          Les droits fondamentaux
Les 3 droits fondamentaux sont la lecture, l'écriture et l'exécution.
Pour un fichier, ces 3 droits sont définis pour 3 catégories: l'utilisateur, le groupe et le "reste
du monde". Pour chacune de ces catégories: on note les droits sous la forme rwx.
r correspond à l'écriture, w à l'écriture et x l'exécution. Par exemple, r-x correspond à des
droits de lecture et d'exécution autorisés, mais l'écriture interdite.

Une notation pratique est de voir rwx comme 3 bits. L'autorisation correspond à 1 et
l'interdiction à 0.
Par exemple r-x correspond à 101. En base 10,
101=1*4+0*2+1*1=5                   Cela correspond donc à 5.

On notera côte à côte les droits des 3 catégories.
Par exemple rwxr-xr-- correspond à des droits
       - rwx pour l'utilisateur,
       - r-x pour le groupe et
       - r-- pour le reste du monde.
Si vous avez bien suivi, rwxr-xr--=111101100=754

   2.3          Modification des droits (chmod)
On ajoute (ou retire) des droits avec la commande :
          $ chmod <catégorie>+<nouveau_droit> fichier
<catégorie> peut être u (utilisateur), g (groupe) ou a (all=reste du monde).
<nouveau_droit> peut être r,w ou x

Exemple
     $ chmod –R 770 /hrtest
 Modification des droits du file system /hrtest et de tout les sous-répertoires

Pour retirer, on mettra un - à la place du +

On peut changer complètement les droits d'un fichier par la commande:
          $ chmod <nouveaux_droits> fichier
<nouveaux_droits> peut être un chiffre entre 1 et 7.
                                       1   --x   Exécution seule
                                       2   -w-   Ecriture seule
                                       3   -wx
                                       4   r--   Lecture seule
                                       5   r-x
                                       6   rw-
                                       7   rwx   Tous les droits
Par exemple, <nouveaux_droits>=777 pour autoriser tout par tout le monde.




Il suffit de connaître seulement ces valeurs, les autres sont des additions de ces chiffres.
Pour un répertoire, on pourra lister TOUS les fichiers dans ce répertoire si on a les droits rx du
répertoire (et ceux des répertoires supérieurs). Par exemple, le répertoire /root/ n'a souvent
aucun droit pour "all" et donc on ne peut rien faire dans ce répertoire si l'on est pas root.

Notons que le droit x seul permet de traverser le répertoire mais pas d'y entrer ou de le lister

Attention, pour pouvoir effacer un fichier ou un répertoire vide, il suffit d'avoir les droits w, x sur le
répertoire contenant ! (Avoir uniquement des droits r et/ou w ne sert à priori à rien pour un répertoire).
Notez que dans un répertoire avec droit wx, on peut effacer les fichiers (ou répertoires vides) sur
lesquels on n'a pas les droits (par contre, on ne peut pas effacer les répertoires non vides sur lesquels
on a pas les droits wx).



   2.4           Les droits par défaut (umask)
Quand vous créer un fichier, (ex : Avec touch) ce fichier par défaut possède certains droits.
      666 pour un fichier (-rw-rw-rw-)
      777 pour un répertoire (-rwxrwxrwx)           Ce sont les droits maximum.

La commande umask permet le changement de ces paramètres par défaut. (Retrait par rapport
à la valeur par défaut).
umask n'est utilisatable que si on est propriétaire du fichier.

Exemple

        Pour un fichier
Si vous tapez umask 022, vous partez des droits maximum 666 et vous retranchez 022, on
obtient donc 644, par défaut les fichiers auront comme droit 644 (-rw-r-r--).

        Pour un répertoire
Si vous tapez umask 022, vous partez des droits maximum 777 et vous retranchez 022, on
obtient donc 755, par défaut les fichiers auront comme droit 644 (-rwxr-xr-x).


   2.5           Les droits spéciaux

En plus de cela, il existe des droits spéciaux: setuid, setgid et sticky bit.


       2.5.1 Droits sur les fichiers

           2.5.1.1       setuid
- Un fichier exécutable peut être setuid, c'est-à-dire qu'au lieu d'être exécuté avec les droits de
l'utilisateur qui le lance, il sera exécuté avec les droits du propriétaire de l'exécutable. Ceci
s'avère assez dangereux notamment pour les exécutables setuid root. L'exemple-type est le
programme passwd qui permet de changer de mot de passe. Il est exécutable par un utilisateur
mais il est setuid root car seul root peut écrire dans les fichiers /etc/passwd et /etc/shadow
         2.5.1.2      setguid
- Un fichier exécutable peut être setguid. Il s'agit de la même notion que celle vue ci-dessus
pour le groupe. Le fichier est donc exécuté avec les droits du groupe auquel il appartient.


           2.5.1.3        sticky bit
- Un fichier exécutable peut être sticky, c'est-à-dire avoir le sticky bit positionné. Cela signifie
qu'il reste en mémoire même après la fin de son exécution afin d'être relancé plus rapidement
(à préciser). Attention, seul root peut positionner le sticky bit.


    2.6          Droits sur les répertoires
       2.6.1 setgid

- Un répertoire peut être setgid. Cela signifie que tous les fichiers créés dans ce répertoire
appartiendront au même groupe que le répertoire.


       2.6.2 sticky bit

- Un répertoire peut être sticky bit. Cela signifie dans ce répertoire, un utilisateur ne pourra
effacer que les fichiers qui lui appartiennent. L'exemple-type est le répertoire /tmp où tout le
monde peut écrire mais où l'on ne peut effacer que ce que l'on a créé.


    2.7          Ecriture des droits sous forme de bit
On écrira également cela sous la forme de bits. Par exemple s-t=101=5 On ajoute (ou retire)
des droits spéciaux avec la commande:
            $ chmod +<droit_spécial> fichier
<droit_spécial> peut être s (setuid+setgid) ou t (sticky bit)
On change complètement les droits spéciaux et les droits d'un fichier par la commande:
            $ chmod <nouveaux_droits_spéciaux><nouveaux_droits> fichier
<nouveaux_droits_spéciaux> s'écrit en base 10. Par exemple, 5 pour setuid et sticky bit.

Exemple
     $ ls -l
                 -rw-rw---- 2 richard staff 12040 Aug 20 1996 admin/userinfo

Signification des flags de permissions (de gauche à droite)

  Position                                              Signification
 - --- --- ---
1                Flag de fichier, 'd' pour répertoire (directory), '-' pour un fichier normal.
                  d’autres pour les périphériques spéciaux.
2, 3, 4           Permissions pour l’utilisateur (User) [r, w, x]
5, 6, 7           Permissions pour le Groupe (Group)
8, 9, 10          Permissions pour les autres (Other)
    Valeur                                              Signification
-                 Aucun droit positionné
r                 Le fichier est lisible pour le user, group ou other (read)
                  Le fichier est modifiable. Sur un répertoire, On peut ajouter ou supprimer des fichiers
w
                  (write)
                  Le fichier est exécutable (Seulement pour les programmes et shell scripts). Sur un
x
                  répertoire, On peut lister les fichiers dans ce répertoire (execute)
s                 A la place de 'x' si les options set-UID ou set-groupID sont positionnés. (sticky bit)


3 Navigation dans le système de fichier
    3.1           Changement de répertoire

                                 Commande               Description
                                 cd ou cd ~       Home de log in
                                 cd -             Répertoire précédent
                                 cd .             Répertoire courant
                                 cd ..            Répertoire père

    3.2           Taille d’un répertoire (df)
Ne pas oublier de mettre un "." après pour n’avoir que la taille du répertoire courant.

          3.2.1 Option
                                 Commande        Description
                                 -k       Taille en KiloOctet
                                 -m       Taille en MegaOctet

4 Visualisation d’un répertoire (ls)
La commande ls (List) affiche le contenu d’un répertoire sur la sortie standard (écran), trié par
ordre alphabétique.
Voici les options les plus courantes, mais il y en a beaucoup plus, consulter man ls ou Link

           Flag      Description
           -l        Affiche les informations détaillées (ll) (Long)
           -a        Affiche aussi les fichiers cachés (All)
           -t        Tri par date de modification (plus anciens en premier)
           -u        Tri par date de dernière utilisation (à utiliser combiné à –l ou –t)
           -p        Met un / après si c’est un répertoire.
           -r        Inverse l’ordre de tri
          -s        Donne la taille en Kb
          -x        Sortie horizontale dans un format multi-colonne
          -R        Liste de façon récursive le contenu de tous les répertoires sous le
                    répertoire courant (Recursive)

Détail de la commande ls –l

Colonne 1 : Type de fichier et droits
Colonne 2 : Nombre de liens symboliques
Colonne 3 : Propriétaire
       On trouve le nom (user name) du propriétaire du fichier. Si le propriétaire n’est pas connu sur le
système (pas d’entrée dans /etc/passwd), c’est le numéro d’utilisateur (user id) qui est indiqué
Colonne 4 : Groupe
         On trouve le nom du groupe (user group) du propriétaire du fichier. Si le groupe n’est pas connu
sur le système (pas d’entrée dans /etc/group), c’est le numéro de groupe (group id) qui est indiqué
Colonne 5 : Taille
        On trouve ici la taille du fichier. Elle peut être affichée en octets (o), kilo-octets (ko), méga-octets (Mo)
Colonne 6 à 8: Date et heure de dernière modification
Colonne 9 : Nom du fichier
       La dernière colonne informe sur le nom du fichier et dans le cas de certains shells (bash par
exemple) le dernier caractère indique le type de fichier
                /         Répertoire
                @         Lien symbolique
                =         Socket

Exemple
Voir tous les fichiers du répertoire et de manière détaillé
       $ ls -a
       drwxrwx--- 2 anis dba                    256 25 oct 10:15 create
       -rw-r-----       1 anis dba          166688 28 nov 13:33 bfsag001
       -rw-r-----       1 anis dba        28016640 28 nov 13:33 EV_3_1_02_01.tar
       lrwxrwxrwx 1 root root                        14 Aug 1 01:58 Mail -> ../../bin/mail*

Voir les fichiers classes par date de modification croissante
       $ ls -ltr
Voir les informations détaillées avec user et groupe
       $ ls -lX .profile
Redirigé la sortie ls vers la commande pr (ex type d’utilisation de –p)
        ls -p | pr -5 -t -w80

5 Commandes diverses sur le système de fichier
Vg = Volume group
      Commandes                                             Description
 lsvg                           Liste des volumes groups vus par le système (ROOTVG,
                                DATAVG,….)
 lsvg rootvg                    Caractéristiques du VG (notamment l’espace libre)
 lsvg –l rootvg                 Liste des file system gérés par ce volume group
 lspv                           Liste des disques (avec le vg auquel ils appartiennent)
 lspv hdiskn                    Caractéristiques du disque (notamment la taille du disque et
                                l’espace libre)
 lspv –l hdiskn                 Liste des file system présents sur ce disque
lsconf |pg ou |more      Configuration de la machine (N° de série, type, paramètres
                         réseau, mémoire, processeur, composants hardware,etc….)
lscfg –vs |pg ou |more   Références des composants hardware de la machine
errpt –a |pg ou |more    Rapport des erreurs remontées par le système (notamment quand
                         voyant orange allumé)
errclear 0               Vidage total des logs errpt
chfs –a size=+2G /var    Extension de 2 Go du file system /var

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:6
posted:9/7/2011
language:French
pages:13
pptfiles pptfiles
About