====== Linux ====== ===== Gestion des permissions ===== \\ ===== Permissions des fichiers et répertoires ===== ==== Visualiser les permissions sur un fichier ==== Les droits d'accès (permissions) à un fichier sont définis par un groupe de 10 caractères. On peut les visualiser en faisant la commande suivante : $ ls -l fichier -rw-r--r-- 1 olivier groupe1 0 Dec 6 15:54 fichier Ces permissions se lisent comme ça : {{:linux:systeme:permissions_fichiers.png?nolink|}} On observe également la valeur octale des permissions : * r = 4 * w = 2 * x = 1 Dans l'exemple du fichier ''fichier'', on peut détailler les permissions comme suit : ^- ^rw- ^r-- ^r-- ^ ^- ^6 ^4 ^4 ^ |c'est un fichier classique |le propriétaire (olivier) peut accéder en lecture et écriture |les membres du groupe "groupe1" peuvent seulement accéder en lecture | tout le monde peut accéder en lecture | \\ ==== Modifier les permissions (chmod) ==== * **Forme littérale** Avec la commande ''chmod'', on va choisir : |A qui s'applique le changement |**u** (user)\\ **g** (group)\\ **o** (others) \\ **a** (all=ensemble des 3 catégories)| |La modification que l'on veut faire |**+** : ajouter\\ **-** : supprimer\\ **=** : affectation | |Le droit que l'on veut modifier |**r** : read\\ **w** : write\\ **x** : execute\\ **X** : eXecute ⇒ concerne uniquement les répertoires | # On ajoute les droits d'écriture au groupe et aux autres $ chmod g+w,o+w fichier # D'autres possibilités de définir ces droits $ chmod u=rw,g=rw,o=rw fichier $ chmod a=rw fichier $ ls -l fichier -rw-rw-rw- 1 olivier groupe1 0 Dec 6 15:54 fichier * **Forme octale** On a vu plus haut que chaque droit d'accès a une valeur octale. En additionnant les valeurs souhaitées, on peut affecter rapidement les droits aux différentes catégories d'utilisateurs.\\ Les valeurs possibles sont : ^0 | - - - | (aucun droit) | ^1 | - - x | (exécution) | ^2 | - w - | (écriture) | ^3 | - w x | (écriture et exécution) | ^4 | r - - | (lecture seule) | ^5 | r - x | (lecture et exécution) | ^6 | r w - | (lecture et écriture) | ^7 | r w x | (lecture, écriture et exécution) | $ chmod 666 fichier -rw-rw-rw- 1 olivier groupe1 0 Dec 6 15:54 fichier $ chmod 750 fichier -rwxr-x--- 1 olivier groupe1 0 Dec 6 15:54 fichier \\ ==== Modifier le propriétaire / groupe (chown / chgrp) ==== Il arrive parfois que l’on ait besoin de changer soit le nom de l’utilisateur, soit le nom du groupe. * **Changement de propriétaire** Pour changer le propriétaire d'un fichier, il faut bien sûr attribuer un user existant.\\ Vous trouverez la liste des users du système dans le fichier ''/etc/passwd''. \\ En ligne de commande dans un terminal, on peut taper : $ cat /etc/passwd at:x:25:25:Batch jobs daemon:/var/spool/atjobs:/bin/bash bin:x:1:1:bin:/bin:/bin/bash bsmuser:x:491:491:Agent supervision BSM:/opt/BSMAgent:/bin/bash daemon:x:2:2:Daemon:/sbin:/bin/bash ftp:x:40:49:FTP account:/srv/ftp:/bin/bash ftpsecure:x:493:65534:Secure FTP User:/var/lib/empty:/bin/false games:x:12:100:Games account:/var/games:/bin/bash lp:x:4:7:Printing daemon:/var/spool/lpd:/bin/bash mail:x:8:12:Mailer daemon:/var/spool/clientmqueue:/bin/false ... olivier:x:43676:7041:Olivier:/home/olivier:/bin/bash fabien:x:43676:7041:Fabien:/home/fabien:/bin/bash Vous pouvez changer le propriétaire avec la commande suivante : $ sudo chown fabien fichier $ ls -l fichier -rwxr-x--- 1 fabien groupe2 0 Dec 6 15:54 fichier __Attention__ : Seul ''root'' peut faire cette opération. \\ * **Changement de groupe** Pour changer le groupe propriétaire d'un fichier, il faut bien sûr attribuer un groupe existant.\\ Vous trouverez la liste des noms de groupe dans le fichier ''/etc/group''. \\ En ligne de commande dans un terminal, on peut taper : $ cat /etc/group adm:x:486: at:x:25: audio:x:17: bin:x:1:daemon,usrtech bsmuser:x:491:bsmuser cdrom:x:20: console:x:21: daemon:x:2: ... groupe1:x:7041: groupe2:x:7042: Ce qui nous donne un aperçu des groupes utilisés sur notre système.\\ \\ Vous pouvez changer le nom du groupe avec la commande suivante : $ chgrp groupe2 fichier $ ls -l fichier -rwxr-x--- 1 olivier groupe2 0 Dec 6 15:54 fichier __Attention__ : si vous ne faites pas partie du groupe de destination, vous n'aurez pas le droit de faire cette opération. Il faudra demander à l'administrateur de le faire. $ sudo chgrp groupe2 fichier * **Changement simultané de propriétaire et de groupe** Il est également possible de changer le propriétaire et le groupe en une seule opération, avec la commande ''chown'' : $ sudo chown fabien:groupe2 fichier \\ ===== Gestion des permissions par défaut (umask) ===== L’**umask** est un outil de gestion des droits sur la création des fichiers et des répertoires qui permet de gérer une certaine sécurité et une restriction des droits par défaut.\\ En définissant un umask, on retire automatiquement l’umask des droits défini sur la création des futurs fichiers ou répertoires. \\ ==== umask par défaut ==== L'umask par défaut est généralement **022**.\\ On peut afficher l'umask courant avec la commande : $ umask -p umask 0022 Cela signifie que lors de la création, les permissions par défaut sont : rw-r--r-- fichier #(666-022 => 644) rwxr-xr-x répertoire #(777-022 => 755) L'umask est défini dans le fichier ''/etc/login.defs'' (ou ''/etc/profile'').\\ Il s'applique à tous les utilisateurs du système. ==== Modifier l'umask temporairement ==== Par exemple, on peut sécuriser davantage la création de fichiers ou de répertoires : $ umask 077 $ mkdir repertoire $ touch fichier $ ls -l rw------- fichier (666-077 => 600) rwx------ repertoire (777-077 => 700) Il faut alors penser à refaire un ''umask 022'' si on souhaite revenir à l'état initial. Sinon, la valeur de umask sera réinitialisée à l'ouverture de la prochaine session.