TP Permissions d'accès aux fichiers


En bref

  1. Catégories d'ayant-droits
  2. Tout fichier du système appartient à la fois à un utilisateur (son "propriétaire") et à un groupe (le groupe propriétaire).
    Ainsi, pour chaque fichier le monde de ses utilisateurs potentiels est partagé en 3 catégories, nommées :
    1. u, l'utilisateur normal, son propriétaire, bien souvent son créateur, qui n'a pas forcément tous les droits sur lui !
    2. g, son groupe, ensemble d'utilisateurs ayant parfois des "permissions" particulières.
    3. o, tous les (others) autres utilsateurs.

  3. Droits à la création
  4. Heureusement, une règle générale simple s'applique à la création de tout nouveau fichier (ou répertoire)

  5. Les droits classiques
  6. Ils ne sont pas récursifs (s'appliquent par niveau)
    En voici la signification :

    symbolesur un fichier normalsur un répertoire
    - absence de droitabsence de droit
    r lecture (lire, copier le contenu) visibilité des fichiers directement contenus
    w écriture (modifier le contenu) création ET destruction des fichiers directement contenus
    x exécution entrée et parcours du rép.

  7. Connaitre les droits d'un fichier
  8. Ces droits sont consultables complètement par la commande : ls -l ou l'alias ll Par exemple :
      stage@debian ll *.html
    -rw-r--r--  1 stage    stage   1200  oct 19 12 : 39     amoi.html
    
    Description de la ligne
    - le 1er caractère indique la nature du fichier
     ("-" fichier normal, "d" un fichier répertoire, "l" un lien)
    
    - le système de droits est spécifié symboliquement par
       les 9 attributs suivants, correspondants aux 3 catégories d'utilisateurs du fichier.
       ...|...|...
        u   g   o
    
    - La section u fixe les droits accordés au propriétaire du fichier.
    - La section g  fixe les droits accordés aux utilisateurs faisant partie
      du groupe auquel appartient le fichier.
    - La section o  fixe les droits des autres utilisateurs.
    
    - nombre de liens sur le fichier : 1 signifie que le fichier n'a aucun lien qui pointe vers lui
       2 (ou plus) signifiant qu'il existe un lien (ou plus) vers lui.
    - le nom du propriétaire du fichier
    - le nom du groupe propriétaire
    - la date de dernière modification
    - le nom complet du fichier
    
  9. TP
  10. Décrivez précisément les droits des fichiers suivants
    /etc/init.d/rcS que signifie le "x" ?
    /etc/fstab (table de montage) qui peut le modifier ?
    /etc/shadow (fichier des mots de passe)
      - qui peut le modifier ?
      - est-ce cela ne pose pas problème ?
    
    Afficher toutes les infos sur un fichier : commande stat  (si elle est installée)
    stat /etc/passwd
    
    Lister les répertoires situés à la racine /
      - A qui appartiennent-ils ?
      - Un utilisateur quelconque peut-il y créer des sous-rép. ?
      - quels sont les cas particuliers ?
    
    Les droits usuels pour un rép sont r-x, pourquoi ? Expliquer en quoi le droit "w" sur un répertoire
    et accordé à un groupe est particulièrement dangeureux !
    

Commandes de changements des droits

  1. Changer le propriétaire
  2. chown [-R] nv-user fichiers
    Commande réservée au propriétaire actuel des fichiers ou des répertoires (et à root)
    L'option -R (récursif) permet d'agir sur l'ensemble des sous-répertoires.
    Exemple : chown -R stage4 /home/stage1

  3. Changer le groupe propriétaire
  4. chgrp [-R] nv-groupe fichiers
    Ceci doit être effectué par root ou le propriétaire, à condition que celui-ci soit membre du nouveau groupe.
    Exemple : chgrp -R stage4 /home/stage1

  5. Changer les permissions sur les fichiers
  6. chmod [-R] droits fichiers
    Les droits d'accès peuvent être modifiés par le propriétaire des fichiers ou par root (ou équivalent, d'uid 0).
    L'option -R permet de modifier les permissions de tous les sous-répertoires et de leur contenu.
    Le paramètre droits permet de calculer les nouveaux droits d'accès.
    On peut agir par ajout (symbole +) ou retrait (-) par rapport aux droits existants, ou bien de façon absolue, en fixant les nouveaux droits qui remplacent les anciens (symbole =).

    La syntaxe de droits est sur le modèle :
    [u g o a] [+ - =] [r w x]
     u, g et o les 3 catégories d'utilisateurs (user, group, other) et a =all
     r,w,x les 3 attributs de chaque fichier, pour chaque catégorie d'utilisateur.
     + - =  l'action d'ajouter, de retirer ou de fixer un droit, qui s'applique à chaque catégorie séparément.
    
  7. Exemples
  8. chmod u+x fichier signifie ..
    chmod ug+w  fichier  ...
    chmod go-rwx  fichier ...
    chmod [-R] go-rwx  /home/toto ...
    chmod u=rwx,g=rw,o=r  fichier    quelles sont les permissions ?
    chmod u=rwx,g=r  fichier    (les permissions précédentes du groupe o sont inchangées)
    chmod u=rwx,g=r,o=  fichiers ...
    

  9. Notation octale des permissions
  10. Il existe une autre façon d'indiquer les permissions de chaque catégorie, plus simple en utilisant la numération octale

    Voici la table de correspondance entre les 8 chiffres en numérotation octale (base 8) et les 8 valeurs de droits fichiers.
    Par convention la présence d'un droit est noté 1, l'absence 0.

                                 Binaire ----- Droit ----- Octal
                 000 -------- (---) ------- 0
                 001 -------- (--x) ------- 1
                 010 -------- (-w-) ------- 2
                 011 -------- (-wx) ------- 3
                 100 -------- (r--) ------- 4
                 101 -------- (r-x) ------- 5
                 110 -------- (rw-) ------- 6
                 111 -------- (rwx) ------- 7

    propriétaire groupe autre
    lecture écriture exécution lecture écriture exécution lecture écriture exécution
    400 200 100 40 20 10 4 2 1

    Pour obtenir les permissions exprimées en octal, il suffit d'ajouter en octal les nombres de la table de correspondance ci-dessus, pour lesquels les droits sont positionnés.

    Exemples

    chmod 700  /home/rep-a-moi droits par défaut pour un rép. personnel.
    ls -l /home/rep-a-moi
     --> drwx------ 
     

    Les 2 commandes suivantes sont équivalentes :

    chmod 764 test
    chmod u=rwx,g=rw,o=r test
    ls -l test
     -rwxrw-r--
    

Compléments

  1. Le masque de protection umask
  2. Le droit SUID

  3. Le droit SGID
  4. Le droit "sticky bit"