Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
informatique:linux:chmodown [2008/06/23 18:24] benoit |
informatique:linux:chmodown [2018/09/06 19:10] (Version actuelle) |
||
---|---|---|---|
Ligne 2: | Ligne 2: | ||
+ | ===== Vérifier les droits ===== | ||
+ | |||
+ | Pour voir les droits sur les fichiers et répertoires courants : | ||
+ | |||
+ | ls -l * | ||
+ | |||
+ | Résultat : | ||
+ | drwxr-xr-x 4 root root 4096 jun 23 15:24 home | ||
+ | |||
+ | Décomposition du résultat : | ||
+ | ^type^droits utilisateur^droits du groupe^droits des autres^ ^utilisateur proprio^groupe proprio^taille^date de modif^nom du repertoire ou fichier^ | ||
+ | |d|rwx|r-x|r-x|4|root|root|4096|jun 23 15:24|home| | ||
===== Modification des propriétaires d'un fichier ===== | ===== Modification des propriétaires d'un fichier ===== | ||
Ligne 21: | Ligne 33: | ||
- | ===== Modification des droits sur un fichier ===== | ||
- | Pour voir les droits sur les fichiers et répertoires courants : | ||
- | ls -l * | ||
- | Résultat : | ||
- | drwxr-xr-x 4 root root 4096 jun 23 15:24 home | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Modification des droits sur un fichier ===== | ||
+ | |||
+ | === Règles d'application des droits === | ||
+ | |||
+ | Pour modifier des droits sur un fichier il faut comprendre le tableau suivant : | ||
| ^type^User^^^Groupe^^^Others^^^ | | ^type^User^^^Groupe^^^Others^^^ | ||
+ | ^identification|-|u|||g|||o||| | ||
^affichage système|-|r|w|x|r|w|x|r|w|x| | ^affichage système|-|r|w|x|r|w|x|r|w|x| | ||
^valeur numérique|-|4|2|1|4|2|1|4|2|1| | ^valeur numérique|-|4|2|1|4|2|1|4|2|1| | ||
+ | |||
+ | * L'''utilisateur'' est identifié par la lettre **u** | ||
+ | * Le ''groupe'' est identifié par la lettre **g** | ||
+ | * Les ''autres'' sont identifiés par la lettre **o** | ||
+ | |||
+ | Pour chaque **u**ser, **g**roup et **o**thers il est possible d'appliquer les droits suivants : | ||
+ | |||
+ | * La lecture sur un fichier s'effectue par la lettre **r** (**R**ead) ou la valeur numérique **4** | ||
+ | * L'écriture sur un fichier s'effectue par la lettre **w** (**W**rite) ou la valeur numérique **2** | ||
+ | * L'exécution d'un fichier s'effectue par la lettre **x** (e**X**ecute) ou la valeur numérique **1** | ||
+ | |||
+ | === Changement de droit avec les lettres === | ||
+ | Avec cette méthode l'ajout de droit s'effectue par le signe **+** et la suppression par le signe **-** | ||
+ | |||
+ | Pour ajouter les droits de lecture pour le group : | ||
+ | chmod g+r file.txt | ||
+ | |||
+ | Pour ajouter les droits de lecture et ecriture pour le group : | ||
+ | chmod g+rw file.txt | ||
+ | |||
+ | Pour ajouter les droits d'exécution à l'utilisateur (propriétaire): | ||
+ | chmod u+x file.txt | ||
+ | |||
+ | Pour retirer les droits d'écriture au autres : | ||
+ | chmod o-w file.txt | ||
+ | |||
+ | === Changement de droit avec les valeurs numériques === | ||
+ | |||
+ | Avec cette méthode le changement de droit s'effectue par l'addition des valeurs numériques : | ||
+ | 4+2+1 = 7 = rwx | ||
+ | 4+2+0 = 6 = rw- | ||
+ | 4+0+1 = 5 = r-x | ||
+ | 0+0+0 = 0 = --- | ||
+ | |||
+ | Il faut faire cette opération pour l'utilisateur, le groupe et les autres en fonction des droits que l'on veut donner pour obtenir 3 chiffre que l'on appliquera dans notre commande. Donc pour donner les droit ''rwx'' pour l'utilisateur, ''r--'' pour le groupe et rien ''---'' pour les autres : | ||
+ | chmod 740 file.txt | ||
+ | |||
+ | === Droits spéciaux: setuid, setgid, sticky bit === | ||
+ | |||
+ | Quand un fichier est exécutable par son propriétaire, il peut de plus être ''setuid''. Cela signifie que lorsqu'il est exécuté, il l'est avec les droits de son propriétaire, et non avec ceux de l'utilisateur qui le lance. Par exemple, le programme ''passwd'', qui permet à un utilisateur de modifier son mot de passe, est setuid root (c'est à dire qu'il est setuid et qu'il appartient à l'utilisateur ''root''): il doit pouvoir écrire dans le fichier ''/etc/passwd'' (ou ''/etc/shadow''), dans lequel seul root peut écrire. | ||
+ | |||
+ | De la même façon, un exécutable peut être setgid, et s'exécuter avec les droits du groupe auquel il appartient. | ||
+ | |||
+ | chmod u+s myscript.sh | ||
+ | |||
+ | ==== Restaurer les droits et propriétaires sur tout un système ==== | ||
+ | |||
+ | Il peut arriver que des droits récursif aient été défini par erreur et rende le système "non redémarrable". | ||
+ | Exemple de commande fatal pour un serveur Linux. | ||
+ | chmod 777 /* | ||
+ | |||
+ | Des droits trop permissifs mettent le bon fonctionnement du serveur en péril. Si c'est le cas, il est déconseiller de redémarrer le serveur avant de restaurer les droits. | ||
+ | |||
+ | **L'astuce ci-dessous permet de restaurer les droits d'un linux** | ||
+ | |||
+ | Sur un serveur Linux sain, lancer les commandes suivantes : | ||
+ | |||
+ | find / -printf 'chmod %m "%h/%f"\n' > restore-chmod.sh | ||
+ | find / -printf 'chown %u:%g "%h/%f"\n' > restore-chown.sh | ||
+ | | ||
+ | Transférer les deux scripts générés sur le serveur cassé et lancer les scripts : | ||
+ | bash restore-chmod.sh | ||
+ | bash restore-chown.sh | ||
+ | |||
+ | A noter qu'il peut y avoir des erreurs (notamment sur des fichiers absents). |