OVH Cloud OVH Cloud

PHP et mot de passe Linux

9 réponses
Avatar
nico
Bonjour,
est il envisageable de creer un script PHP qui permettrait de mettre à jour
les mots de passe des comptes utilisateurs sous linux ?
Merci pour votre aide .

9 réponses

Avatar
monsieurjuan
Salut,

C'est difficile étant donné que le script php aura les droits utilisateurs
du serveur web(nobody).
La solution est d'écrire un script en php mais executer en dehors du serveur
web. Tu le lances en ligne de commande sous user root :-)
Et la tu fais ce que tu veux !
a+


"nico" a écrit dans le message de
news:c9k05b$dr8$
Bonjour,
est il envisageable de creer un script PHP qui permettrait de mettre à
jour

les mots de passe des comptes utilisateurs sous linux ?
Merci pour votre aide .


Avatar
CrazyCat
nico wrote:

Bonjour,
est il envisageable de creer un script PHP qui permettrait de mettre à jour
les mots de passe des comptes utilisateurs sous linux ?
Merci pour votre aide .


Oui :)
a priori c'est très possible vu que c'est ce que fait webmin.
Maintenant, les façons d'y arriver sont diverses et variées, tout dépend
de tes droits sur la machine et des droits donnés à l'utilisateur apache.

--
Tout sur les eggdrops
http://www.c-p-f.org
ML @

Avatar
Guillaume Bouchard
nico wrote:
Bonjour,
est il envisageable de creer un script PHP qui permettrait de mettre à jour
les mots de passe des comptes utilisateurs sous linux ?
Merci pour votre aide .


En considerant que ton script tourne en root (ou tout du moins possede
les droits necessaire) cela doit pouvoir se faire via system();

http://www.php.net/system

Après il faut voir quels seronts les applications de ton scripts et voir
si php est bien fait pour cela. ( un script shell avec cron peut etre ? )

--
Guillaume.

Avatar
Eric Daspet
nico wrote:
Bonjour,
est il envisageable de creer un script PHP qui permettrait de mettre à jour
les mots de passe des comptes utilisateurs sous linux ?
Merci pour votre aide .


Oui, mais ça implique que ton script tourne avec les droits de
superutilisateur. À savoir si c'est une bonne idée c'est à toi de voir...

Tu as plusieurs manières de faire :

- modifier directement /etc/passwd ou /etc/shadow, le mot de passe à
stocker doit être crypté avec la fonction crypt(). Le problème c'est que
si tes mots de passe sont gérés par PAM et qu'ils sont sensés mettre à
jour plusieurs bases à la fois (genre une pour le système, une pour
samba, une pour le FTP ...) tu boycotes toute la chaîne, ce qui peut
être une mauvaise idée
- utiliser l'exécutable classique /bin/passwd avec exec() ou popen()
- utiliser une extension PHP qui s'interface avec PAM, l'année dernière
j'en ai vu deux qui trainaient, innachevées, il y a des chances que ça
marche correctement maintenant.

Maintenant, as tu besoin d'avoir des utilisateurs système avec un volume
qui nécessite l'utilisation d'un script ? En général quand on a de tels
volumes c'est pour du FTP, du Web, du mail, .... et ces services savent
tous gérer des bases d'utilisateurs virtuels pour éviter de toucher à la
base des utilisateurs systèmes.

--
Eric Daspet
Venez aider notre mangeur de cigogne sur http://mangeur-de-cigogne.info/

Avatar
Thibaut Allender

En considerant que ton script tourne en root (ou tout du moins possede
les droits necessaire) cela doit pouvoir se faire via system();

http://www.php.net/system


un petit coup de sudo (http://www.courtesan.com/sudo/intro.html) pour
remedier aux problemes de droits si apache tourne sous nobody par exemple

--
thibaut allender | freelance | web|system developer|designer
+32 496 26 75 76 | http://capsule.org *new version*

Avatar
Eric Daspet
Thibaut Allender wrote:
un petit coup de sudo (http://www.courtesan.com/sudo/intro.html) pour
remedier aux problemes de droits si apache tourne sous nobody par exemple


Argh, je ne vosi pas ce que ça remédie dans ce cas précis. Encore un
truc qui donne une impression de sécurité sans donner de sécurité (je ne
parle pas de sudo qui peut être très utile mais de cette utilisation
précise).
Celui qui contrôle l'accès aux mots de passe contrôle le système. Si
apache (nobody) contrôle (via sudo) le script qui a accès aux mots de
passe tu as virtuellement donné droit à nobody de changer le mot de
passe qu'il veut quand il veut (déjà c'est une grosse boulette)
... et pourquoi pas changer le mot de passe root (ce qui fait que nobody
est virtuellement root quand il veut)


--
Eric Daspet
Venez aider notre mangeur de cigogne sur http://mangeur-de-cigogne.info/

Avatar
Thibaut Allender

Argh, je ne vosi pas ce que ça remédie dans ce cas précis. Encore un
truc qui donne une impression de sécurité sans donner de sécurité (je ne
parle pas de sudo qui peut être très utile mais de cette utilisation
précise).


je n'ai jamais dit que c'etait sécurisé...

disons que c'est "un peu" mieux que de faire tourner apache en root, ce
qui pourrait amener d'autres problemes, non liés a l'utilisation de
commandes specifiques (buffer overflow a co)

Celui qui contrôle l'accès aux mots de passe contrôle le système. Si
apache (nobody) contrôle (via sudo) le script qui a accès aux mots de
passe tu as virtuellement donné droit à nobody de changer le mot de
passe qu'il veut quand il veut (déjà c'est une grosse boulette)
... et pourquoi pas changer le mot de passe root (ce qui fait que nobody
est virtuellement root quand il veut)


on est bien d'accord :)

--
thibaut allender | freelance | web|system developer|designer
+32 496 26 75 76 | http://capsule.org *new version*

Avatar
Batman


En contournant le problème (j'ai vaguement lu l'ensemble des posts):

- en fait le script génére un fichier texte user:pass
- un cron (root) qui lit ce fichier et qui lance
* passwd, si c'est juste un changement de pass (uniquement
pour user dont l'id est > 500 ?)
* adduser / addgroup pour des cas plus complexe

C'est pas moins pire comme cela ?


--
Les fautes d'orthographes sont ma signature :-)
pour me répondre en BAL (mode antispam)
http://batman.dyndns.org/V2/Mail/?src=news.free
Avatar
Paul Delannoy
Batman a écrit:




En contournant le problème (j'ai vaguement lu l'ensemble des posts):

- en fait le script génére un fichier texte user:pass
- un cron (root) qui lit ce fichier et qui lance
* passwd, si c'est juste un changement de pass (uniquement
pour user dont l'id est > 500 ?)
* adduser / addgroup pour des cas plus complexe

C'est pas moins pire comme cela ?
Non dans la mesure où tous les autres services qui se basent

sur le fichier des users sont capables de prendre en compte tes modifs.