[RESOLU] - Les droits utilisateurs

Le système préconisé par la Fondation Raspberry Pi

Modérateurs : Francois, maxty01

Répondre
phdenaujan
Messages : 63
Enregistré le : lun. 5 janv. 2015 21:29

[RESOLU] - Les droits utilisateurs

Message par phdenaujan » lun. 18 mai 2015 20:43

Bonsoir à tous,

Un truc certainement très simple que je ne maîtrise pas :

Je souhaite écrire dans une fichier dont l'utilisateur est pi (/home/pi/config/monfichier) par l’intermédiaire d'un script PHP, soit l'utilisateur www-data.

Plus qu'une réponse, avez-vous un lien me permettant, une bonne fois pour toute, de comprendre le fonctionnement des droits et de leur maniement ?

Cordialement,
Modifié en dernier par phdenaujan le jeu. 28 mai 2015 21:36, modifié 1 fois.
Ph.

maxty01
Modérateur
Messages : 790
Enregistré le : dim. 16 nov. 2014 20:53
Localisation : Charleroi - Belgique

Re: Les droits utilisateurs

Message par maxty01 » lun. 18 mai 2015 21:22

Bonsoir phdenaujan,

Pour répondre à votre premier problème, pour donner les droits d'écriture à un utilisateur,
Il faut s'assurer que l'utilisateur soit le propriétaire du fichier, on dans un groupe propriétaire.
Le plus simple serait de donner à ton utilisateur "www-data" la propriété du fichier et de garder le groupe "pi" comme groupe propriétaire,
sans oublier de donner le droit d'écrire dans le fichier au groupe "pi".

Voici un petit résumé, concocté minute, pour t'aider dans cette tâche :

Pour vérifier les droits d'un fichier :

Code : Tout sélectionner

pi@raspberrypi ~ $ ls -l
Cette commande donnera certaines informations, dont le propriétaire et le groupe propriétaire.

Je prends exemple sur un fichier "test" :

Code : Tout sélectionner

pi@raspberrypi /tmp $ ls -l test 
-rw-r--r-- 1 pi pi 0 May 18 20:55 test
La première partie, donne les différents droits (-rw-r--r--)
Le "r" signale que le fichier peut être lu
Le "w" signale que le fichier peut être écrit
Le "x" signale que le fichier peut être exécuté (pas dans notre cas)

Cette première partie est une succession de droit pour 3 types d'utilisateurs:
La première partie (-rw-r--r--) est dédiée à l'utilisateur propriétaire.
La seconde partie (-rw-r--r--) est dédiée au groupe propriétaire.
La dernière partie (-rw-r--r--) est dédiée aux autres utilisateurs.
Le premier "tiret" (-rw-r--r--) n'est pas important dans notre cas.

Conclusion de cette partie : le propriétaire peut lire et écrire le fichier, le groupe peut lire le fichier et les autres peuvent lire le fichier.
Dans mon cas : l'utilisateur pi peut lire et écrire le fichier, le groupe pi peut lire le fichier et les autres peuvent lire le fichier.

Maintenant, passons à la partie "changement" de propriétaire :
Il est possible de changer l'utilisateur propriétaire avec la commande chown (CHange OWNer) :

Code : Tout sélectionner

pi@raspberrypi /tmp $ sudo chown root test
pi@raspberrypi /tmp $ ls -l test 
-rw-r--r-- 1 root pi 0 May 18 20:55 test
Il est possible de changer le groupe propriétaire avec la commande chgrp (CHange GRouP) :

Code : Tout sélectionner

pi@raspberrypi /tmp $ sudo chgrp root test
pi@raspberrypi /tmp $ ls -l test 
-rw-r--r-- 1 root root 0 May 18 20:55 test
Il est également possible de changer l'utilisateur et le groupe propriétaire en une seule commande chown :

Code : Tout sélectionner

pi@raspberrypi /tmp $ sudo chown pi:pi test
pi@raspberrypi /tmp $ ls -l test 
-rw-r--r-- 1 pi pi 0 May 18 20:55 test
:!: le premier qui rit ... ca va aller mal ... ok :!:

Pour changer les droits, il existe la commande chmod (CHange file MODe bits).
Elle est plus complexe a maîtriser.
A l'origine, cette commande ne comprenait que de "droits" exprimé en 3 groupes de chiffre hexadécimale.
Les droits actuelle du fichier test, en hexadécimal représenterait 644.
Maintenant, il existe des commandes plus "user friendly".
Dans notre cas, nous souhaitons donner le droit d'écrire dans notre fichier au groupe pi :

Code : Tout sélectionner

pi@raspberrypi /tmp $ ls -l test 
-rw-r--r-- 1 pi pi 0 May 18 20:55 test
pi@raspberrypi /tmp $ chmod g+w test 
pi@raspberrypi /tmp $ ls -l test 
-rw-rw-r-- 1 pi pi 0 May 18 20:55 test
pi@raspberrypi /tmp $
Le "g" désigne le groupe, le "+" désigne l'ajout de droit, le "w" désigne le droit d'écrire dans le fichier.
Tout comme le "u" désigne l'utilisateur, le "o" désigne les autres, le "-" désigne le retrait de droit, le "r" désigne le droit de lire le fichier,
le "x" d'exécuter un fichier (exécutable) ou d'entrer dans un dossier (pour avoir la permission d'entrer dans un dossier, il faut pouvoir l'exécuter).

Bien entendu, tu trouvera des "tutos" mieux fait sur internet.

J'espère que ces informations t'aiderons.
Si tu as encore des question n'hésite pas.

Bonne soirée,
Il n'y a pas de question stupide, il n'y a que des imbéciles qui ne posent pas de question !
RaspBerry Pi : 1 x B+ Raspbian 1 x RPI2 MiniBian
Mieux me connaître ? Regarder mon LinkedIn

phdenaujan
Messages : 63
Enregistré le : lun. 5 janv. 2015 21:29

Re: Les droits utilisateurs

Message par phdenaujan » lun. 18 mai 2015 23:36

Maxty01,

Merci pour cette super explication de texte, c'est très clair. il va falloir que je manipule... ce qui amènera probablement d'autres questions du genre :

Ok, j'ai lu quelque part que PHP lancé les commandes sous le user www-data. Mais comment aurais-je pu le trouver seul ?

Bonne soirée (ou ce qu'il en reste)

PS : Tes exemples avec pi:pi fonctionnent-ils également avec fos:root ?
Ph.

maxty01
Modérateur
Messages : 790
Enregistré le : dim. 16 nov. 2014 20:53
Localisation : Charleroi - Belgique

Re: Les droits utilisateurs

Message par maxty01 » lun. 18 mai 2015 23:58

Bonsoir,

En fait, il faut savoir que toutes commandes sont exécutées avec le nom de l'utilisateur qui la lance (attention, il existe des cas particulier, qui confirme la règles...).

Dans ton exemple, Apache2 est lancé sous le nom de www-data, apache exécute l’environnement qui interprète le langage PHP.
Les scripts PHP qui exécutent des commandes systèmes, le feront, par extension (et déduction), au nom de l'utilisateur de Apache2: www-data.

Mais il est possible de lancé des programmes avec des nom d'utilisateur particulier, le système, qui travaille sous le nom de root,
peut lancer des commandes sous users différents, Apache2 est, par exemple, lancé par le système,
mais le système à forcé l'exécution d'Apache2 sous le nom de www-data, par mesure de sécurité.

Bonne nuit,

Ps : fait moi un coup pareil et tu recevra ma main dans ta tête façon aller:retour ! ;)
Il n'y a pas de question stupide, il n'y a que des imbéciles qui ne posent pas de question !
RaspBerry Pi : 1 x B+ Raspbian 1 x RPI2 MiniBian
Mieux me connaître ? Regarder mon LinkedIn

phdenaujan
Messages : 63
Enregistré le : lun. 5 janv. 2015 21:29

Re: Les droits utilisateurs

Message par phdenaujan » jeu. 28 mai 2015 21:35

Bonsoir Maxty01,

J'ai tout compris (enfin de crois) j'ajoute donc le [Resolu] qui va bien.

Encore merci.
Ph.

Répondre

Retourner vers « Raspbian »