Racine Carte Index Rechercher Nouvelles Archives Liens A propos
[Top Bar]
[Bottom Bar]
[Photo of the Author]
Guido Socher

A propos de l'auteur : Il adore Linux car c'est un syst�me libre et c'est aussi un plaisir de travailler avec des personnes de la communaut� linux partout dans le monde. Il passe son temps libre avec sa petite amie, �coute la BBC World Service radio, pratique le cyclisme, et utilise avec plaisir Linux.

�crire � l'auteur

Contents:
Les permissions de base des acc�s fichiers
T-bits, SUID and SGID

Les droits d'acc�s des fichiers

[chmod 600]

R�sum�: Cet article est divise en deux partie:

  • La premi�re partie (Les permissions de base des acc�s fichiers) est une petite introduction sur les concepts de base des permissions d'acc�s aux fichiers.
  • La deuxi�me partie (T-bit, SUID and SGID) couvre des fonctionnalit�s plus avanc�e de linux que les droits de base "read-write-execute" .


  • Les permissions de base des acc�s fichiers

    Linux est un syst�me mutli utilisateur qui permet de g�rer diff�rentes permissions d'acc�s aux fichiers. Chaque utilisateur a un identifiant, un nombre unique qui l'identifie. Les utilisateurs appartiennent �galement � un ou plusieurs groupes. Les groupes peuvent �tre employ�s pour limiter l'acc�s � un certain nombre de personnes. C'est un bon moyen pour rendre plus facile le travail avec un certain nombre de personnes en �quipe. Pour v�rifier votre identification de l'utilisateur et voir le groupe(s) auquel vous appartenez, tapez la commande ID:

    >id
    uid=550(alice)  gid=100(users)  groups=100(users),6(disk)

    Les permissions d'acc�s pour un fichier peuvent �tre positionn�s par propri�taire, groupe, et pour les autres sur la base de permissions en lecture (r), �criture (w) et �xecution (x). Vous pouvez utiliser la commande ls -l pour voir ces permissions.

    >ls -l   /usr/bin/id
    -rwxr-xr-x    1 root   root    8632 May 9 1998 /usr/bin/id

    Le fichier /usr/bin/id appartient � l'utilisateur root et fait parti du groupe appel� root. Le

     -rwxr-xr-x 

    montre les permissions d'acc�s au fichier . Ce fichier a les droits en lecture , �criture ,et en ex�cution pour le propri�taire. Pour le groupe et les autres , ce fichier est lisible et ex�cutable.

    Vous pouvez imaginer que les permissions sont un champ de bit avec 3 bits pour le propri�taire, le groupe, et les autres. Ce r-x correspond � 101 en binaire ou 4+1=5 en d�cimal. Le r-bits corresponds � la d�cimale 4 , le w_bit correspond � la d�cimale 2 et le x-bit correspond � la d�cimale 1.

    sst
    421
    (nous verrons cela plus tard)
    rwx
    421
    user
    (proprietaire)
    rwx
    421
    group
     
    rwx
    421
    others
     

    La commande chmod peut �tre utilis�e pour changer les permissions. Pour des raisons de securit� seulement le superutilisateur root ou le propri�taire du fichier peut changer les permissions. la commande chmod prend aussi bien en argument une repr�sentation d�cimal qu'une repr�sentation symbolique pour d�crire les droit d'acc�s. La repr�sentation symbolique est [ugoa][+-][rwx]. C'est l'une de ces lettres u (propri�taire du fichier ), g ( groupe ) , o ( les autres ), a ( tout le monde =u+g+o) suivi de + ou - permet d'ajouter ou de supprimer les permissions et la forme symbolique des permissions est de la forme r ( read = lecture ) w ( write l'�criture ) x ( ex�cution ). Pour donner au fichier "file.txt" les droits d'�criture pour tout le monde , tapez:

    >chmod a+w   file.txt
    or
    >chmod 666   file.txt
    >ls -l   file.txt
    -rw-rw-rw-   1 alice   users   79 Jan 1 16:14 file.txt

    chmod 644 file.txt positionnera les permissions "normal" avec pour le propri�taire lecture+�criture et seulement lecture pour tout le monde.

    Changer de r�pertoire ( avec la commande cd ) est �quivalent � ex�cuter le r�pertoire. Les permissions "Normal" pour le r�pertoire sont 755 et non 644:

    >chmod 755   mydir
    >ls -ld   mydir
    drwxr-xr-x    2 alice    users    1024 Dec 31 22:32 mydir

    Le umask d�fini les permissions par d�faut . Les permissions par d�faut sont mises lorsqu'un nouveau fichier ( ou r�pertoire ) est cr�e. Comme argument, cette commande prend une repr�sentation d�cimale que vous n'êtes pas oblig� de taper . Il peut prendre comme argument ces bits dans une repr�sentation d�cimale que vous ne voulez pas avoir � mettre.

    umask 022 est un bon choix. Avec les permissions 022 tout le monde peut lire, vos fichiers et "cd" dans vos r�pertoires mais c'est vous qui pouvez uniquement modifier les fichiers. Pour afficher la valeur du umask courant, tapez uniquement umask sans arguments.

    Voici un exemple de l'utilisation de umask et chmod:

    Le umask est mis aux bonnes valeurs standards
    >umask
    22

    Prenez votre �diteur et cr�ez le fichier appelle myscript:
    >nedit   myscript   (or vi myscript ...)
    Mettez le code suivant dedans:

    #!/bin/sh
    #myscript
    echo -n "hello "
    whoami
    echo "Ce fichier file ( $0 ) avait les persmissions suivantes:"
    ls -l $0 | cut -f1 -d" "

    Sauvegardez le fichier script.
    Maintenant il a les permissions 644 :
    >ls -l  myscript
    -rw-r--r--   1 alice  users  108 Jan 1 myscript

    Pour l'ex�cuter vous devez modifier ses droits d'acc�s:
    >chmod 755 myscript
    ou
    >chmod a+x myscript

    Maintenant �xecutez le:
    >./myscript

    Remarquez que le fichier script doit �tre lisible et ex�cutable alors que les binaires classiques ont seulement besoin d'�tre ex�cutables. Ceci est du au fait que le script doit �tre lu par un interpr�teur ( l'interpr�teur de commandes ). L'ex�cution du script devrait afficher:

     
    hello alice
    Ce fichier  ( ./myscript ) avais les permissions suivantes:
    -rwxr-xr-x
    

    T-bit, SUID and SGID

    Apres avoir travaill� sous Linux depuis un certain moment , vous avez d�couvert probablement qu'il y a plus dans les droits d'acc�s aux fichiers que "rwx". Explorez un peu votre systeme de fichiers et vous allez voir des "s" et "t":

    >ls -ld /usr/bin/crontab  /usr/bin/passwd  /usr/sbin/sendmail  /tmp

    drwxrwxrwt   5 root   root   1024 Jan 1 17:21 /tmp
    -rwsr-xr-x   1 root   root   0328 May 6 1998 /usr/bin/crontab
    -r-sr-xr-x   1 root   bin     5613 Apr 27 1998 /usr/bin/passwd
    -rwsr-sr-x   1 root   mail   89524 Dec 3 22:18 /usr/sbin/sendmail

    Que veulent dire les bits "s" et "t"? Le champ de bit d�finissant les permissions d'acc�s a en r�alit� une longueur de 4 * 3 bits . Le chmod 755 est en fait un raccourci pour chmod 0755.

    Le t-bit

    Le t-bit (parfois appell� "sticky bit") est seulement utilis� avec les r�pertoires.Il est utilis� avec le r�pertoire /tmp comme vous pouvez le voir en haut.

    Normalement ( sans le t-bit de positionn� sur le r�pertoire ) les fichiers peuvent être effac�s si le repertoire dans lequel ce trouve les fichiers poss�de les droits d'�criture pour la personne voulant effacer les fichiers. Ainsi si vous avez un r�pertoire ou n'importe qui peut venir mettre des fichier alors n'importe qui peut venir les effacer aussi.

    Le t-bit change cette r�gle. Avec le t-bit positionn� seul le propri�taire du fichier ou le propri�taire du r�pertoire a le droit d'effacer les fichiers. Le t-bit peut �tre positionn� par la commande chmod a+tw ou 1777. Voici un exemple :

    Alice cr�e un r�pertoire avec le t-bit de mis:
    >mkdir mytmp
    chmod 1777 mytmp


    maintenant Bob met un fichier dedans:
    >ls -al
    drwxrwxrwt   3 alice    users  1024 Jan  1 20:30 ./
    -rw-r--r--  1 bob   users     0 Jan  1 20:31 f.txt

    Ce fichier peut maintenant être effac� par Alice (propri�taire du r�pertoire) et Bob (le propri�taire du fichier) mais il ne peut �tre effac� par Tux:

    >whoami
    tux
    rm -f f.txt
    rm: f.txt: Op�ration interdite

    S-bit positionn� pour l'utilisateur

    Les processus sous Linux s'�xecute avec l'identifiant de l'utilisateur (user-ID). Ceci leur donne acc�s aux ressources ( fichier etc ...) auquelles l'utilisateur a acc�s. L'identifiant effectif est celui qui d�termine les acc�s aux fichiers. Sauvegardez le script suivant dans un fichier ayant pour nom idinfo et rendez le ex�cutable (chmod 755 idinfo).


    #!/bin/sh
    #idinfo: Afficher les informations sur l'utilisateur
    echo " effective user-ID:"
    id -un
    echo " real user-ID:"
    id -unr
    echo " group ID:"
    id -gn

    Lorsque vous ex�cutez le script vous verrez que le processus qui tourne prend votre identifiant et l'identifiant de votre groupe:

     effective user-ID:
    alice
     real user-ID:
    alice
     group ID:
    users
    

    Quand Tux �xecute votre programme idinfo alors il a une sortie �quivalente affichant que le processus tourne maintenant avec l'identifiant de Tux. La sortie du programme d�pend uniquement de la personne qui ex�cute le programme et non pas du propri�taire de ce dernier.

    Pour des raisons de s�curite le s-bit fonctionne uniquement pour des fichiers binaires ( code compile ) et non pas pour les scripts ( l'exception est les scripts perl ). Essayons de cr�er un programme C qui va apeller votre programme idinfo:

    /*suidtest.c*/
    #include <stdio.h>
    #include <unistd.h>
    int main(){
    /*secure SUID programs MUST
    *not trust any user input or environment variable!! */

    char *env[]={"PATH=/bin:/usr/bin",NULL};
    char prog[]="/home/alice/idinfo";
    if (acc�s(prog,X_OK)){
        fprintf(stderr,"ERROR: %s not executable\n",prog);
        exit(1);
    }
    printf("running now %s ...\n",prog);
    execle(prog,(const char*)NULL,env);
    perror("suidtest");

    return(1);
    }

    Compilez le programme avec "gcc -o suidtest -Wall suidtest.c" et et positionner le bit-s (SUID) de l'utilisateur:

    >chmod 4755   suidtest
    or
    >chmod u+s   suidtest

    Executez le! Que se passe t-il? Executez le � partir d'un compte d'un autre utilisateur!

    Le fichier suidtest appartient � alice et � le s-bit de positionn� ou normalement il y a un x pour le propri�taire du fichier. Ceci fait que le fichier est �xecut� avec l'UID effectif de l'utilisateur qui poss�de le fichier au lieu de celui qui l'�x�cute. Si Tux lance le programme alors cela devrait se passer comme ci-dessous:

    >ls -l suidtest
    -rwsr-xr-x   1 alice   users   4741 Jan 1 21:53 suidtest
    >whoami
    tux

    running now /home/alice/idinfo ...
    effective user-ID:
    alice
    real user-ID:
    tux
    group ID:
    users

    Comme vous pouvez le voir c'est une fonctionnalit� tr�s puissante dans le cas ou root poss�de un fichier avec le s-bit positionn�. N'importe quel utilisateur peut faire grace � ce fichier ce que normalement root est le seul � pouvoir r�aliser. Quelques mots sur la s�curite. Quand vous �crivez un programme avec le s-bit, faites attention � ce que ce programme fasse uniquement ce que vous voulez. Impl�mentez toujours les chemins en dur dans le programme. Ne prennez pas en compte les variables ou fonctions se r�f�ren�ant aux variables d'environnements. Ne croyez jamais les donn�e de l'utilisateur ( fichier de configuration , arguments de la ligne de commande....). V�rifiez les donn�es des utilisateurs octet par octet pour savoir si elles sont valides.

    Losque un programme SUID appartient a root alors l'utilisateur effectif et l'utilisateur reel peuvent être positionn�s ( avec la fonctions setreuid() ).

    Les programmes ayant le Set-UID sont souvent utilis�s par "root"pour donner un acc�s aux utilisateurs classiques chose que seul "root" peut faire. Comme root vous pouvez modifier le suidtest.c pour permettre � n'importe quel utilisateur de lancer le script ppp-on/ppp-off sur votre machine.

    S-bit positionn� pour le group

    Les fichiers �xecutables qui ont le s-bit de positionn� sur le groupe, s'ex�cutent sous l'identifiant du groupe du propri�taire. C'est tr�s proche de l'utilisation du s-bit pour l'utilisateur que nous avons vu dans le chapitre pr�c�dent.

    Quand le bit-s est positionn� pour le groupe d'un r�pertoire, alors le groupe est d�termin� pour chaque fichier qui est cr�� dans ce r�pertoire. Alice appartient � 2 groupes:

    >id
    uid=550(alice)  gid=100(users)  groups=100(users),6(disk)

    Normalement les fichiers sont cr��s pour elle avec le group "users". Mais si un r�pertoire est cr�� avec le group "disk" et que le bit-s du groupe est positionn�, alors tous les fichiers qu'Alice cr�e on aussi l'identificateur de groupe (GID) "disk".

    >chmod 2775 .
    >ls -ld .
    drwxrwsr-x  3 tux   disk     1024 Jan 1 23:02 .

    Si alice cr�e maintenant un nouveau fichier dans ce r�pertoire alors le groupe de ce fichier sera positionne � disk

    >touch newfile
    >ls -l newfile
    -rw-r--r--   1 alice    disk      0 Jan 1 23:02 newfile

    C'est un bon dispositif quand vous voulez travailler avec plusieurs personnes dans une �quipe et vous assurer que le groupe IDs des dossiers est affect� au bon groupe pour le r�pertoire de travail de cette �quipe, particuli�rement dans un environnement o� les utilisateurs ont normalement un umask 027 qui rend des dossiers inaccesibles pour des personnes en dehors du groupe.


    Ce site web est maintenu par l'�quipe fran�aise
    © Guido Socher 1999