Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format
PDF et la grise au format ODT →
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 Prochaine révision Les deux révisions suivantes | ||
doc:systeme:chmod [25/12/2012 07:31] smolski [SUID - L'Exemple...] |
doc:systeme:chmod [17/03/2017 20:58] otyugh [TP 1] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== La commande chmod ====== | + | ====== chmod ====== |
- | La commande chmod permet de modifier les permissions des fichiers. Je vais vous expliquer deux manières de les modifier, chacun sa méthode, moi j'ai commencé par la première méthode, puis maintenant je le fais avec les deux sans problème. | + | * Objet : chmod |
- | Bon pour modifier les permissions, on le fera en console, vous êtes un public averti maintenant ^^. | + | * Niveau requis : {{tag>débutant avisé}} |
+ | * Commentaires : //Modifier les permissions des fichiers. // | ||
+ | * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | ||
+ | * Suivi : | ||
+ | * Création par [[user>MaTTuX_]] le //Pffff... On n'était même pas né alors !// | ||
+ | * Testé par [[user>smolski]] le 26-10-2013 | ||
+ | * Commentaires sur le forum : [[http://debian-facile.org/viewtopic.php?id=999 | Lien vers le forum concernant ce tuto]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | ||
- | * Syntaxe | + | |
+ | ===== Intro ===== | ||
+ | |||
+ | La commande ''chmod'' permet de modifier les permissions aux différents types d'accès (rwx) des fichiers (et répertoire) indépendamment pour le propriétaire, le groupe ou les autres utilisateurs. \\ | ||
+ | Je vais vous expliquer deux manières de les modifier, chacun sa méthode, moi j'ai commencé par la première méthode, puis maintenant je le fais avec les deux sans problème. | ||
+ | |||
+ | Bon pour modifier les permissions, on le fera en console, vous êtes un public averti maintenant ^_^. | ||
+ | |||
+ | ===== Syntaxe ===== | ||
chmod [option] nom_du_fichier | chmod [option] nom_du_fichier | ||
+ | ===== TP 1 ===== | ||
- | ===== Méthode 1 ===== | + | Dans cette méthode je vais vous montrer comment modifier par les lettres U G O et R W X pour un rappel aller voir le wiki **[[:doc:systeme:droits-unix|A savoir]]** . \\ |
+ | Bon passons aux choses sérieuses, je veux rendre un fichier exécutable, pour cela je vérifie les droits grâce a la commande **[[:doc:systeme:ls | ls -l]]** sur le fichier php dans mon répertoire. | ||
+ | <code user>ls -l php</code> | ||
+ | <file config retour de la commande>-rw-r--r-- 1 mattux users 92 avr 20 23:26 php</file> | ||
- | Dans cette méthode je vais vous montrer comment modifier par les lettres U G O et R W X pour un rappel aller voir le wiki **[[commande:A savoir|A savoir]]** . | + | Pour le rendre exécutable avec une petite vérification en même temps je ferai : |
- | Bon passons aux choses sérieuses, je veux rendre un fichier exécutable, pour cela je vais vérifier les droits grâce a la commande ls -l (voir **[[commande:ls|LS]]** ) sur le fichier php dans mon répertoire. | + | |
- | * Exemple | + | <code user>chmod u+x php</code> |
+ | <code user>ls -l php</code> | ||
+ | <file config retour de la commande>-rwxr--r-- 1 mattux users 92 avr 20 23:26 php</file> | ||
- | mattux@chile:~> ls -l php | + | Voila je l'ai rendu exécutable juste pour l'user, maintenant vous pouvez permettre au groupe et aux autres d'avoir le droit d'écriture : |
- | -rw-r--r-- 1 mattux users 92 avr 20 23:26 php | + | |
- | Pour le rendre executable je ferais, avec une petite vérification en même temps : | + | <code user>chmod go+w php</code> |
+ | <code user>ls -l php</code> | ||
+ | <file config retour de la commande>-rwxrw-rw- 1 mattux users 92 avr 20 23:26 php</file> | ||
- | * Exécution | + | Voilà je n'ai pas mis U pour l'user car il avait déjà le droit d'écriture. |
- | mattux@chile:~> chmod u+x php | + | Dernier test pour cette méthode : \\ |
- | mattux@chile:~> ls -l php | + | Pour enlever le droit d'exécution et les droits d'écriture pour tous, on fera : |
- | -rwxr--r-- 1 mattux users 92 avr 20 23:26 php | + | |
- | Voila je l'ai rendu juste exécutable pour l'users, maintenant vous pouvez le passer en droit d'écriture pour tous: | + | <code user>chmod ugo-wx php</code> |
+ | Ou encore avec "a" signifiant "All", tous : | ||
+ | <code user>chmod a-wx php</code> | ||
+ | Ou, plus simplement : | ||
+ | <code user>chmod -wx php</code> | ||
+ | Ce qui donne : | ||
+ | <code user>ls -l php</code> | ||
+ | <file config retour de la commande>-r--r--r-- 1 mattux users 92 avr 20 23:26 php</file> | ||
- | * Exécution | + | ===== Option t ===== |
- | mattux@chile:~> chmod go+w php | + | Le droit **sticky bit** |
- | mattux@chile:~> ls -l php | + | |
- | -rwxrw-rw- 1 mattux users 92 avr 20 23:26 php | + | |
- | Voilà je n'ai pas mis U pour l'user car il a déjà le droit d'écriture. | + | Ce droit a surtout un rôle important sur les dossiers. |
- | Bon maintenant dernier test pour cette méthode, on va enlever le droit d'exécution et les droits d'écriture pour tous, on fera : | + | <note tip>Il réglemente le droit w sur le dossier, __en interdisant à un utilisateur quelconque de supprimer un fichier dont il n'est pas le propriétaire__.</note> |
+ | Ce droit occupe par convention la place du droit x sur la catégorie other de ce dossier, mais bien entendu il ne supprime pas le droit d'accès x (s'il est accordé). \\ | ||
+ | Justement, si ce droit x n'est pas accordé à la catégorie other, à la place de t c'est la lettre T qui apparaîtra. \\ | ||
+ | Sa valeur octale associée vaut 1000. | ||
- | * Exécution | + | Pour positionner ce droit : |
+ | <code root>chmod g+t dossier</code> | ||
- | mattux@chile:~> chmod ugo-wx php | + | Sur un dossier il signifie que les fichiers créés à l'intérieur ont pour groupe propriétaire le groupe propriétaire du dossier parent. |
- | mattux@chile:~> ls -l php | + | |
- | -r--r--r-- 1 mattux users 92 avr 20 23:26 php | + | |
- | Alors compris ! on passe à l'autre méthode ^^ . | + | Si le dossier a le droit x pour tous il donnera : |
+ | <code bash>d ... ... ..t dossier</code> | ||
- | ===== Méthode 2 ===== | + | sinon : |
+ | <code bash>d ... ... ..T dossier</code> | ||
+ | |||
+ | Si tu fais un u+t au lieu d'un g+t, c'est la même chose mais avec l'utilisateur propriétaire et non plus le groupe : | ||
+ | <code root>chmod u+t</code> | ||
+ | |||
+ | //Ça, c'est envoyé par le //**captnfab**// depuis le salon df. Il est pas champion le matelot, dites ?// :-D | ||
+ | |||
+ | ===== TP Droits sur serveur ===== | ||
+ | |||
+ | Consultez ce post sur le forum df : | ||
+ | * [[http://debian-facile.org/viewtopic.php?id=6749 | Problème ProFTPd et répertoire Apache /var/www]] | ||
+ | |||
+ | //Merci à //**Nasedo**// et à //**nikau**// pour ces explications.// ;-) | ||
+ | |||
+ | ===== TP 2 ===== | ||
Dans cette méthode on fera les modifications par des chiffres 4, 2 et 1, n'ayez pas peur c'est très simple, je vais reprendre les mêmes exemple que la Méthode 1, mais pour commencer je dois vous expliquer comment fonctionne cette méthode. | Dans cette méthode on fera les modifications par des chiffres 4, 2 et 1, n'ayez pas peur c'est très simple, je vais reprendre les mêmes exemple que la Méthode 1, mais pour commencer je dois vous expliquer comment fonctionne cette méthode. | ||
Ligne 54: | Ligne 96: | ||
Une autre manière de représenter ces droits est sous **forme binaire** grâce à une **clef numérique** fondée sur la correspondance entre : | Une autre manière de représenter ces droits est sous **forme binaire** grâce à une **clef numérique** fondée sur la correspondance entre : | ||
- | une expression **binaire** = un nombre **décimal** = une notation | + | une expression **binaire** = un nombre **octal** = une notation |
+ | |||
+ | |||
+ | |||
+ | Soit : | ||
+ | * 000 = 0 = -%%-%%- | ||
+ | * 001 = 1 = -%%-%%x (exécution) | ||
+ | * 010 = 2 = -w- (écriture) | ||
+ | * 011 = 3 = -wx | ||
+ | * 100 = 4 = r-%%-%%(lecture) | ||
+ | * 101 = 5 = r-x | ||
+ | * 110 = 6 = rw- | ||
+ | * 111 = 7 = rwx | ||
- | Soit : | ||
- | | ||
- | * 000 = 0 = - - - | ||
- | * 001 = 1 = - x - (exécution) | ||
- | * 010 = 2 = - - w (écriture) | ||
- | * 011 = 3 = - x w | ||
- | * 100 = 4 = r - - (lecture) | ||
- | * 101 = 5 = r - x | ||
- | * 110 = 6 = r w - | ||
- | * 111 = 7 = r w x | ||
Il suffit donc de déclarer un chiffre et un seul entre 0 et 7 correspondant à toute la séquence en notation (r w x) et de l'attribuer à chacune des catégories d'utilisateur user, group, others (u, g, o). | Il suffit donc de déclarer un chiffre et un seul entre 0 et 7 correspondant à toute la séquence en notation (r w x) et de l'attribuer à chacune des catégories d'utilisateur user, group, others (u, g, o). | ||
- | Exemples : | + | |
- | + | Exemples : | |
- | * 777 = r w x r w x r w x = u g o peuvent tous lire + écrire + exécuter. | + | * 777 = rwxrwxrwx = u g o peuvent tous lire + écrire + exécuter. |
- | * 605 = r w - - - - r - x = u peut lire + écrire g rien faire et o lire + | + | * 605 = rw-%%--%%-r-x = u peut lire + écrire g rien faire et o lire + exécuter. |
- | exécuter. | + | * 644 = rw-r-%%-%%r-%%-%%= u peut lire + écrire g lire et o lire. |
- | * 644 = r w - r - - r - - = u peut lire + écrire g lire et o lire. | + | * 666 = rw-rw-rw- = u g o peuvent tous lire + écrire. Aucun ne peut exécuter. |
- | * 666 = r w - r w - r w - = u g o peuvent tous lire + écrire. Aucun ne peut | + | |
- | exécuter. | + | |
Une astuce permet d'associer rapidement une valeur décimale à la séquence de droits souhaitée. Il suffit d'attribuer les valeurs suivantes pour chaque type de droit. | Une astuce permet d'associer rapidement une valeur décimale à la séquence de droits souhaitée. Il suffit d'attribuer les valeurs suivantes pour chaque type de droit. | ||
- | Le droit de : | + | Le droit de : |
- | + | * lecture ( r ) correspond à 4 | |
- | * lecture ( r ) correspond à 4 | + | * écriture ( w ) correspond à 2 |
- | * écriture ( w ) correspond à 2 | + | * exécution ( x ) correspond à 1 |
- | * exécution ( x ) correspond à 1 | + | |
On additionne ces valeurs selon qu'on veuille ou non attribuer le droit correspondant pour chacune des catégories (u, g, o). | On additionne ces valeurs selon qu'on veuille ou non attribuer le droit correspondant pour chacune des catégories (u, g, o). | ||
- | Ainsi, rwx = 7 (4+2+1), r-x = 5 (4+1) et r-- = 4. | + | Ainsi : |
- | Donne en séquences de droits complètes : | + | * rwx = 7 (4+2+1), |
- | (rwxr-xr--) = 754. | + | * r-x = 5 (4+1) et |
+ | * r-%%-%% = 4. | ||
+ | |||
+ | Donne en séquences de droits complètes : | ||
+ | * (rwxr-xr-%%-%%) = 754. | ||
+ | |||
+ | <note>**Pour briller en société, comment convertir un nombre binaire en nombre octal :** | ||
+ | |||
+ | Il s'agit donc de passer de la base **2** (où chaque chiffre peut prendre 2 valeurs, //0// ou //1//), à la base **8** (où chaque chiffre peut prendre 8 valeurs, de //0// à //7//). | ||
+ | |||
+ | Mais pour commencer, on va commencer par une autre base, la base **10** (où chaque chiffre peut prendre, je vous le donne en mille, 10 valeurs, de //0// à //9// :-p ). Vous savez tous décomposer un nombre en base **10**. Par exemple **103**. | ||
+ | |||
+ | Le premier chiffre à droite, //3// à le rang **0**, celui juste à sa gauche, //0// le rang **1**, le suivant vers la gauche, //3//, à le rang **2**, et ansi de suite. | ||
+ | |||
+ | 103 = 1 x 100 + 0 x 10 + 3 x 1 \\ | ||
+ | On peut aussi l'écrire comme ça, si on se rappelle que \\ //n'importe quoi//<sup>1</sup> = //n'importe quoi// \\ | ||
+ | et que \\ | ||
+ | //n'importe quoi//<sup>0</sup> = 1 : \\ | ||
+ | 103 = 1 x 10<sup>2</sup> + 0 x 10<sup>1</sup> + 3 x 10<sup>0</sup> | ||
+ | |||
+ | On remarque que la décompostion consiste à multiplier la valeur du chiffre du rang par la base élevée à la puissance du rang, et d'additionner toutes ces mutiplications :-) | ||
+ | |||
+ | On va faire exactement pareil pour décomposer un nombre en base **2**. Si on dit que //n// est le rang, on multiplie la valeur du chiffre du rang par 2<sup>n</sup>, et on additionne le résultat de toute ces multiplications. | ||
+ | |||
+ | Par exemple : | ||
+ | |||
+ | 010 = 0 x 2<sup>2</sup> + 1 x 2<sup>1</sup> + 0 x 2<sup>0</sup> = 0 x 4 + 1 x 2 + 0 x 1 = 2 \\ | ||
+ | 101 = 1 x 2<sup>2</sup> + 0 x 2<sup>1</sup> + 1 x 2<sup>0</sup> = 1 x 4 + 0 x 2 + 1 x 1 = 5 | ||
+ | |||
+ | //Oui, mais tu as dis qu'on allait apprendre à convertir en octal, pas en décimal :-?// | ||
+ | |||
+ | Et bien, puisqu'on converti un nombre binaire composé d'uniquement 3 chiffres, ça ne change rien. | ||
+ | |||
+ | //Pourquoi ? // | ||
+ | |||
+ | Quel est le plus grand nombre binaire à 3 chiffres possible ? **111** | ||
+ | |||
+ | 111 = 1 x 2<sup>2</sup> + 1 x 2<sup>1</sup> + 1 x 2<sup>0</sup> = 1 x 4 + 1 x 2 + 1 x 1 = **7** | ||
+ | |||
+ | Et **7**, en octal ou en décimal, ça vaut toujours **7** ;-) | ||
+ | </note> | ||
C'est une manière directe (et moins verbeuse, ATTENTION aux erreurs !) d'attribuer les droits et de les écrire sous cette forme en utilisant le code à 3 chiffres résultant. | C'est une manière directe (et moins verbeuse, ATTENTION aux erreurs !) d'attribuer les droits et de les écrire sous cette forme en utilisant le code à 3 chiffres résultant. | ||
Exemple pour un fichier : | Exemple pour un fichier : | ||
- | chmod 754 /chemin/du/fichier/test.txt | + | <code user>chmod 754 /chemin/du/fichier/test.txt</code> |
- | /chemin/du/fichier/test.txt étant un fichier imaginaire destiné à illustrer l'exemple... :-) | + | ''/chemin/du/fichier/test.txt'' étant un fichier imaginaire destiné à illustrer l'exemple... :-) |
Exemple pour un répertoire : | Exemple pour un répertoire : | ||
- | chmod 754 /chemin/du/repertoire/test | + | <code user>chmod 754 /chemin/du/repertoire/test</code> |
où nous pouvons ajouter -R pour rendre les autorisations récursives à l'intérieur de ce répertoire, soit : | où nous pouvons ajouter -R pour rendre les autorisations récursives à l'intérieur de ce répertoire, soit : | ||
- | chmod -R 754 /chemin/du/repertoire/test | + | <code user>chmod -R 754 /chemin/du/repertoire/test</code> |
Il est d'usage précautionneux de SYSTEMATIQUEMENT vérifier par | Il est d'usage précautionneux de SYSTEMATIQUEMENT vérifier par | ||
- | ls -al /chemin/du/repertoire/ | + | <code user>ls -al /chemin/du/repertoire/</code> |
- | que nous avons bien obtenu ce que nous voulions modifier, répertoire par répertoire... C'est beaucoup, beaucoup de temps d'gagné ! LOL | + | |
+ | que nous avons bien obtenu ce que nous voulions modifier... C'est beaucoup, beaucoup de temps d'gagné ! LOL | ||
===== Droits spéciaux - SUID ===== | ===== Droits spéciaux - SUID ===== | ||
- | <note importante> | + | <note important> |
- | SUID - un droit securisé - De bonnes bases sont requises... pas cool ! | + | SUID - un droit sécurisé - De bonnes bases sont requises... pas cool ! |
</note> | </note> | ||
- | Directement inspiré de : | + | Ce droit demande une connaissance préalable de **tous les droits** de bases, leur **fonctionnement**, leur **manipulation**, ainsi que de la commande de listage **ls**. \\ |
- | + | ||
- | url=http://www.ac-creteil.fr/reseaux/systemes/linux/debian/deb-tp-droits.html | + | |
- | + | ||
- | Ce droit demande une connaissance préalable de **tous les droits** de bases, leur **fonctionnnement**, leur **manipulation**, ainsi que de la commande de listage **ls**. | + | |
Si vous ne comprenez pas cette litanie, revoyez les commandes [[CHMOD]] [[CHOWN]] [[LS]] et concert... | Si vous ne comprenez pas cette litanie, revoyez les commandes [[CHMOD]] [[CHOWN]] [[LS]] et concert... | ||
Ligne 126: | Ligne 204: | ||
Exemple de fichier où SUID s'applique nécessairement : | Exemple de fichier où SUID s'applique nécessairement : | ||
- | sous root //lister// dans un terminal : | + | Saisir dans un terminal : |
- | blabla # ls -l /etc/shadow | + | <code user>ls -l /etc/shadow</code> |
- | -rw-r----- root root shadow | + | <file config retour de la commande>-rw-r----- root root shadow</file> |
Les droits de réalisation (rw) dans le fichier **shadow** sont limités à u=root exclusivement. | Les droits de réalisation (rw) dans le fichier **shadow** sont limités à u=root exclusivement. | ||
et : | et : | ||
- | blabla # ls -l /usr/bin/passwd | + | <code user>ls -l /usr/bin/passwd</code> |
- | -rxsr-xr-x root root /usr/bin/passwd | + | <file config retour de la commande>-rxsr-xr-x root root /usr/bin/passwd</file> |
- | SUID, en s'intégrant (rx**S**) dans le fichier intermédiaire **passwd** où : | + | |
- | (u) = root | + | |
- | root = (rw-) sur shadow | + | |
- | et (o) = (r-x) autorisant les exécutions de commande d'utilisateurs lambda non-root... | + | |
- | permet à **passwd** de créer TEMPORAIREMENT la passerelle NÉCESSAIRE à la //commande initiale// issue de (o) et utiliser le (rw-) de **passwd** sur **shadow** pour la réaliser ! | + | SUID, en s'intégrant (rx**s**r) dans le fichier intermédiaire **passwd** où : |
+ | - root = (rw-)((lecture + écriture/modif)) sur le fichier shadow | ||
+ | - et (o)((propriétaire)) = (r-x) autorisant les exécutions de commande d'utilisateurs non-root. | ||
+ | |||
+ | permet à **passwd** de créer TEMPORAIREMENT la passerelle NÉCESSAIRE à la //commande initiale// issue de l'user lambda et d'utiliser ainsi le droit root (rw-) de **passwd** sur **shadow** pour la réaliser ! | ||
+ | |||
+ | ==== SUID - Conté... ==== | ||
- | ==== Droits spéciaux - SUID - expliqué... ==== | ||
//Il était une fois//... 8-o | //Il était une fois//... 8-o | ||
- | SUID permet la réalisation (rw) d'une commande d'exécution (x) : | + | SUID permet la réalisation d'une commande d'exécution (x) à partir d'un utilisateur-lambda, //via// un fichier d'utilisateur exclusif (u = root par exemple...) //vers// un fichier de réalisation finale de propriété exclusive identique __sans attribuer des droits permanents__ hors de la commande présentée ! |
- | à partir d'un utilisateur-lambda (u = non-root), | + | |
- | VIA un fichier d'utilisateur exclusif (u = root par exemple...), | + | En effet, le droit SUID est un droit //TEMPORAIRE// de fichier. \\ |
+ | Il s'agit en fait d'un **dispositif de sécurité** essentiel qui autorise un utilisateur à bénéficier de droits plus étendus que les siens et obtenir les droits sur un fichier exclusif (réservé à root en général...) par une commande exécutive (--x). | ||
- | VERS un fichier de réalisation finale de propriété exclusive identique | + | Pour préserver la sécurité permanente du fichier de réalisation, il fonctionne juste le temps et sous le contrôle de la commande sollicitée. \\ |
- | (u = root selon l'exemple...), | + | Ce droit est noté symboliquement par s (sa valeur octale est 4000). |
- | SANS les droits permanents nécessaires : (rw) ! | + | Dans la notation, il se met en lieu et place du **x**, celui-ci prenant dans le listage des droits celle du **w** au centre de la notation habituelle. |
- | Le droit SUID est un droit TEMPORAIRE de fichier. Il s'agit d'un **dispositif de sécurité** essentiel | + | En fait, la notation de ce droit pour user se présente : |
- | qui autorise un utilisateur (u = non-root) à bénéficier de droits plus étendus que les siens. | + | * rxs - - = (//temporairement//) rwx - -) |
- | pour obtenir les droits : (rw) sur un fichier exclusif (de sécurité réservé à root en général...), | + | ou en binaire : |
- | par une commande exécutive (x) | + | * 47 - - = 7 - -. |
- | En préservant la sécurité permanente du fichier de réalisation. Il fonctionne juste le temps | + | === Exemple === |
- | et sous le contrôle de la commande sollicitée. Ce droit est noté symboliquement par s | + | |
- | (sa valeur octale est 4000). | + | |
- | Dans la notation, il se met en lieu et place du **x**, celui-ci prenant celle du **w** au centre de la notation habituelle (- - -). | + | Saisir dans un terminal : |
+ | <code user>ls -l /etc/shadow</code> | ||
+ | <file config retour de la commande>-rw-r----- root root shadow</file> | ||
- | En fait, la notation de ce droit pour (**u**) seulement : **rxs** équivaut à **rwx**, ou **47**- - = **7**- -. | + | Ce qui indique toutes les limites de ce fichier réservé à root. Sécurité maxi ! |
- | ===== Droits spéciaux ===== | + | Puis saisir : |
+ | <code user>ls -l /usr/bin/passwd</code> | ||
+ | <file config retour de la commande>-rxsr-xr-x root root /usr/bin/passwd</file> | ||
- | ==== SUID - L'Exemple... ==== | + | Ici, le droit sur le fichier passwd est accordé à tous les exécutants lambda (valeur x pour tous). \\ |
- | __De nouveau, observez__ : | + | Le fichier **passwd** propriété de //root//, a bien sûr accès de réalisation (rw) dans le fichier **shadow**, qui est de propriété //root// également. |
- | sous root //lister// dans un terminal : | + | Le positionnement du SUID permet à passwd d'utiliser ses droits de réalisation root (rw-) dans le fichier shadow pour l'exécution de la commande lambda initié, en la prenant à son compte ! \\ |
- | blabla # ls -l /etc/shadow | + | |
- | -rw-r----- root root shadow | + | |
- | Ce qui indique toutes les limites de ce fichier (u = root). Sécurité maxi ! | + | Exit l'utilisateur non-root initiateur de la commande ! C'est donc root qui la prend à son compte juste pour l'exécution à l'intérieur de cette commande. \\ |
- | Puis, //lister// : | + | ===== Final ===== |
- | blabla #ls -l /usr/bin/passwd | + | |
- | -rxsr-xr-x root root /usr/bin/passwd | + | |
- | Ici, le droit (**x**) sur le fichier passwd est accordé | + | |
- | à tous les exécutants lambda. (bah..) | + | |
- | De plus : | + | |
- | Le fichier passwd propriété de root, a accès de réalisation (rw) | + | |
- | dans le fichier shadow, propriété root également. | + | |
- | Le positionnement du SUID permet à passwd d'utiliser ses droits de réalisation root (rw-) | + | Il est ainsi possible de permettre à tout exécutant non-root d'agir dans un fichier en préservant la haute sécurité de celui-ci dans le cadre **UNIQUE** de l'exécution d'une commande qui serait non autorisée au départ sans la rendre permanente pour toute autre commande. |
- | dans le fichier shadow pour l'exécution de la commande lambda initié, en la prenant à son compte ! | + | |
- | //C't'un coquin... Majax enfoncé// ! | + | |
- | Exit l'utilisateur non-root initiateur de la commande ! C'est root qui agit maintenant ! | + | |
- | //Trop fort... Le coup d'la malle d'Houdini//... **Ouarf** ! | + | |
- | Il est ainsi possible à tout exécutant non-root (ici via le fichier passwd) | + | |
- | d'agir (ici, de mettre à jour le fichier des mots de passe...) | + | |
- | dans un fichier en préservant la haute sécurité de celui-ci (ici c'est shadow), | + | |
- | dans le cadre UNIQUE de l'exécution d'une commande non autorisée au départ... CHAMPAGNE ! | + | |
- | Pas de droits dangereusements permanents ! Sécurité préservée, santé assurée..! | + | <note tip>suid permet en fait de ne pas accorder de droits sur un fichier sensible de manière dangereuse ! \\</note> |
+ | //Sécurité préservée, santé assurée..!// | ||
LOL | LOL | ||
- | ==== Option t ==== | + | ===== Astuce - find ===== |
- | + | ||
- | Le : | + | |
- | <code bash> | + | |
- | chmod g+t</code> | + | |
- | + | ||
- | Sur un dossier signifie que les fichiers créés à l'intérieur ont pour groupe propriétaire le groupe propriétaire du dossier parent. | + | |
- | + | ||
- | Si tu fais un u+t au lieu d'un g+t, c'est la même chose mais avec l'utilisateur propriétaire : | + | |
- | <code bash> | + | |
- | chmod u+t</code> | + | |
- | + | ||
- | //Ça, c'est envoyé par le //**captnfab**// depuis le salon df. Il est pas champion le matelot, dites ?// :-D | + | |
- | ==== Gestion des droits : Astuce avec find ==== | + | |
Créé sous l'inspiration de Melodie, avec la tutelle attentive de Mattux_ ! Qu'ils en soient remerciés ici ! | Créé sous l'inspiration de Melodie, avec la tutelle attentive de Mattux_ ! Qu'ils en soient remerciés ici ! | ||
- | <note importante> | + | <note important> |
Astuce délicate ! Règles de Sécurité en jeu ! | Astuce délicate ! Règles de Sécurité en jeu ! | ||
</note> | </note> | ||
- | L'utilisation de **find** permet d'établir une liste de répertoires ou de fichiers afin de leur appliquer : | + | L'utilisation de **find** permet d'établir une liste de répertoires ou de fichiers afin de leur appliquer en série et de manière typée une commande chmod, chown ou autres... |
- | en série et de manière typée une commande chmod, chown ou autres... | + | |
- | Exemple : | + | **Exemple :** |
- | find -type d /home/monrepertoire -exec chmod -R 775 {} ; | + | |
+ | <code user>find -type d /home/monrepertoire -exec chmod -R 775 {} ;</code> | ||
se décompose ainsi : | se décompose ainsi : | ||
- | "find -type d" où -type d indique de ne lister et d'agir que sur des répertoires. | + | * "find -type d" où -type d indique de ne lister et d'agir que sur des répertoires. |
- | (Pour des fichiers, et que des fichiers, écrire -type f) | + | * (Pour des fichiers, et que des fichiers, écrire -type f) |
- | "/home/repertoire" le chemin où débute la commande | + | * "/home/repertoire" le chemin où débute la commande |
- | "-exec chmod -R 775" exécution de la commande (ici droits en octales...) | + | * "-exec chmod -R 775" exécution de la commande (ici droits en octales...) |
- | "{} ;" pour finaliser find. Voir commentaires **man find** ligne 804 -exec commande | + | * "{} ;" pour finaliser find. Voir commentaires **man find** ligne 804 -exec commande |
L'exécution judicieuse de cette ligne permet : | L'exécution judicieuse de cette ligne permet : | ||
Ligne 237: | Ligne 290: | ||
C'est à dire définis au préalable dans la ligne de commande, | C'est à dire définis au préalable dans la ligne de commande, | ||
- | ATTENTION AUX RISQUES DE SECURITE ! | + | <note warning>ATTENTION AUX RISQUES DE SECURITE !</note> |
- | de placer ou replacer une série de droits que l'on désire harmoniser d'un seul coup ! :-O Aie ! | + | de placer ou replacer une série de droits que l'on désire harmoniser d'un seul coup ! \\ |
- | ATTENTION AUX RISQUES DE SECURITE ! | + | |
Regardez-y à deux fois dans cett' manip, sous peine de fragiliser votre machine ! | Regardez-y à deux fois dans cett' manip, sous peine de fragiliser votre machine ! | ||
- | D'une manière générale, | + | D'une manière générale : \\ |
- | tout ce qui est listé par l'emploi de find demande une forte connaissance de ce que l'on fait **ET** une circonspection absolue ! | + | Tout ce qui est listé par l'emploi de find demande une forte connaissance de ce que l'on fait **ET** une circonspection absolue ! |
- | + | ||
- | Sinon, find , par ses possibilités de typage pointu, (j'ai déjà dit Aie ?)(voir le man find.... **1687** ligne !!! C'est pas pour rien !) | + | |
- | + | ||
- | permettra un listage au p'tits oignons sans écritures laborieuses... | + | |
- | Ce qui est le soucis de tout linuxien averti au final ! | + | |
- | **Averti** le linuxien, **averti** vous dis-je... | + | Sinon, find , par ses possibilités de typage pointu((voir le man find.... **1687** ligne !!! C'est pas pour rien !)) permettra un listage au p'tits oignons sans écritures laborieuses, ce qui est le soucis de tout linuxien averti au final ! |
- | Ne sautez pas les étapes et prenez conseils, sur DF si ça vous dit... | + | <note important>Ne sautez pas les étapes et prenez conseils, sur DF si ça vous dit...</note> |
- | A la place de chmod ou de -type, plusieurs options ouvrent un grand jeu de quilles, | + | À la place de chmod ou de -type, plusieurs options ouvrent un grand jeu de quilles, attention donc à certains strikes définitifs !!! ./././._._._ :-O |
- | attention à certains strike définitif !!!./././._._._ :-O | + | |
Pour aller plus avant : | Pour aller plus avant : | ||
- | * Consultez le **man find**. Encore ? Oui encore..! | + | * Consultez le :<code user>man find</code> //Encore lui ? Oui encore..!// |
- | * Le tuto find : [[manuel:find | Le tuto df sur la commande find]] | + | * Le tuto find : [[:doc:systeme:find | Le tuto df sur la commande find]] |
- | --- **smolski** 2009/01/11 07:46 //ça nous rajeunis pas ça !// ;-) | + | --- **smolski** 2009/01/11 07:46 //ça nous rajeuni pas ça !// ;-) |