Non je ne vais pas faire de parodie de cette émission de télé, mais une chose essentielle à connaitre c’est la gestion des droits !
Vous allez devoir vous y pencher sérieusement, car certaines choses ne marcheront pas à cause seulement d’un problème de droit.
Rassurez-vous, avec une commande le tour est joué !
Nous allons lister le bureau dans le répertoire home de mon utilisateur. La commande ls -l, soit ll liste les fichiers présents dans le répertoire mais en plus nous donne les droits correspondant aux fichiers.
Dans un terminal, tapez la commande ls -l /home/samn0/Bureau ou ll /home/samn0/Bureau par exemple:
# ll /home/samn0/Bureau/
total 28
-rw——- 1 samn0 share 5460 dec. 20 2009 Home.desktop
-rw-r–r– 1 root root 1314 mars 9 2010 titi
-rw-r–r– 1 root share 193 fevr. 20 2010 rsync.sh
-rwxr-xr-x 1 root root 1314 mars 9 2010 S99webmin
-rw——- 1 samn0 share 6004 dec. 20 2009 trash.desktop
Les droits apparaissent en premier, intéressons nous à celui de titi.
-rw-r–r– C’est quoi ces tirets, ces r et ce w ?
Le premier – correspond à la nature du fichier.
- – signifie que c’est un fichier
- d signifie que c’est un répertoire
- l signifie que c’est un lien symbolique
Ensuite nous avons 9 caractères, que nous pouvons scinder en 3 groupes. Dans l’ordre.
- Propriétaire
- Groupe
- Invité
Chaque groupe a 3 critères.
Dans notre exemple nous avons : -rw-r–r–
- rw- correspond au propriétaire
- r– correspond au groupe
- r– correspond aux invités
Définition des droits, nous avons 3 caractères possibles par groupe soit RWX.
- R signifie READ, soit lecture, les droits pour lire un fichier
- W signifie WRITE, soit l’écriture, les droits pour écrire un fichier
- X signifie eXECUTION, soit l’exécution, les droits pour exécuter un fichier
Dans notre exemple nous avons : -rw-r–r–
- Le propriétaire a donc les droits de lecture et d’écriture sur /home/samn0/Bureau/titi
- Le groupe a les droits de lecture sur /home/samn0/Bureau/titi
- Les invités ont le droit de lecture sur /home/samn0/Bureau/titi
Différence entre propriétaire, groupe et les invités.
Le propriétaire c’est celui qui est le propriétaire du fichier. Soit parce qu’il a crée soit parce qu’il a modifié les droits par la suite.
Le groupe c’est un ensemble de personne que le propriétaire partage avec un ensemble de plusieurs personnes. Le groupe est composé d’au moins une personne. Par exemple, à votre bureau à la compta vous êtes 3 personnes qui ont le droit de modifier les paies. Mais dans le bureau d’à coté la technique, ils sont 5 personnes et seront donc les invités pour lire, éditer les fichiers de la compta.
Les invités ne sont en aucun cas les propriétaires, ni membres du groupe. Ils sont donc les invités. Si aucun droit ne leur ai alloué, ils ne pourront pas lire les fichiers en question.
Continuons la lecture de notre exemple :
–rw-r–r– 1 root root 1314 mars 9 2010 titi
La lecture du fichier se fait comme ça de gauche à droite :
- root est le propriétaire du fichier, par ailleurs il a les droits d’écriture et de lecture.
- root est le groupe auquel le fichier appartient, il a les droits de lecture.
- 1314 est la taille du fichier en Ko
- mars 9 2010 signifier que ce fichier a été crée le jour de la sainte Françoise ^^
- titi c’est le nom du fichier
Pour modifier un fichier n’importe lequel, vous aurez besoin de la commande chmod (change mode).
chmod mode+permission arguments /chemin_complet_nom_du_fichier
# chmod u+rwx /home/samn0/Bureau/titi
Là je me donne les droits au propriétaire (U) de lecture, d’écriture et d’exécution (X) au fichier titi
Voici les modes de la commande chmod.
- u propriétaire
- g groupe
- o others soit invités
- a all, tous.
Voici les permissions de la commande chmod.
- r read, lecture
- w write, écriture
- x exécution, exécution
Voici les arguments principaux de chmod. Le arguments de n’importe quelle commande ont un tiret avant la lettre.
- -R récursive, applique la commande à tous les fichiers et sous répertoire de manière récursive.
A noter qu’un mode va de paire avec une permission.
Pour simplifier tous ces RWX, il est possible de passer la forme octale soit sous forme de chiffre.
Wikipédia nous résume parfaitement tout cela !
Personnellement j’opte pour cette méthode, les chiffres c’est plus facile à retenir !
chmod NNN argument /chemin_complet_nom_du_fichier (N est un chiffre compris entre 0 et 7)
# chmod 744 /home/samn0/Bureau/titi
Comme précédemment, je donne les droits au propriétaire (U) de lecture, d’écriture et d’exécution (X) au fichier titi
Vous êtes pas forts en calcul mental ?
Allez faire un tour sur cet excellent calculateur de droit octal !
Bon les droits c’est bien mais comment on fait pour changer le propriétaire ou le groupe ?
Grâce à deux commandes qui ont le même format et le même argument que chmod.
- chown change owner, changer le propriétaire.
Le format est : chown propriétaire argument chemin_complet_nom_du_fichier
# chown titi /home/samn0/Bureau/titi
- chgrp change groupe, changer le groupe
Le format est : chgrp groupe argument chemin_complet_nom_du_fichier
# chgrp titi /home/samn0/Bureau/titi
Cool on sait presque tout sur les droits, enfin moi j’ai eu un cas bien chiant dernièrement ! Dovecot n’arrivait pas à livrer le courrier à un deuxième utilisateurs local.
Qu’est-ce que Dovecot vient foutre là ? Disons que c’était un problème de droit, merci les logs de m’avoir mis sur la piste !
J’ai du me pencher sur les droits spéciaux ! Hein kézako ?
Le fichier a un propriétaire et un groupe, mais parfois un utilisateur a besoin d’utiliser ce dit fichier pour l’exécuter !
Et si on mettait X pour les autres, comme ça pas de souci. Effectivement ça va marcher mais ça va vite poser des problèmes de sécurité !
D’où les droits spéciaux, au lieu de donner les droits au fichier, on donne les droits à la commande !
Le système, au moment de l’exécution de la commande, endosse l’identité du propriétaire au lieu de l’utilisateur qui a lancé la commande.
Quand un utilisateur se connecte sur un système GNU/Linux, il détient 2 UID (UserIDentity) et 2 GID (GroupIDentity) : le réel et l’effectif.
Au moment de l’exécution d’une commande les UID et GID sont les réels,les effectifs sont attribués à la commande.
Quand les droits d’endossement ne sont pas positionnés, alors les UID et GID effectifs sont identiques aux UID et GID réels.
Si les droits d’endossement sont positionnés alors l’UID et/ou GID effectifs sont ceux de la commande. Ce qui veut dire que les UID et GID effectifs sont ceux qui contrôlent les droits d’accès à une commande
C’est une bonne explication de la part de Commentçamarche.net, pour une fois que je trouve une solution sur ce site je me permets de le mettre en avant ^^
Pour mettre à profit tout ça, c’est simple. On donne les droits d’endossements comme ceci :
chmod 4000 pour l’endossement de l’identité du propriétaire.
chmod 2000 pour l’endossement de l’identité du groupe.
Soit :
# chmod 6744 titi /home/samn0/Bureau/titi
La j’ai endossé l’identité du propriétaire et du groupe ! Et par magie mon Dovecot me livre bien mon courrier pour mon deuxième utilisateur !
Voilà ce chapitre est fini, la question des droits est primordiale pour vous le prouver nous allons nous en servir pour monter notre serveur SAMBA.
Mais avant passons à l’install’ des programmes avec DNF.