Page 1 sur 1

exec() pour créer user linux

Posté : 02 mars 2008, 02:06
par beve
Bonjour,
je tente de créer une interface de création d'utilisateur ssteme sur une plateforme LINUX.
Le probleme, je ne connais que le langage php pour la developper.
J'ai vu qu'il y a 2 commandes utilisables pour passer des ligne de commande au systeme.

J'ai donc essayé ça :
<?php echo exec('useradd benoist'); ?>
J'ai changé les droits jusqu'a affecter un chmod 777 et un proprietaire de fichier root.
Au final, rien.. meme pas un retour dans le echo...

Savez vous comment je peux faire, ou puis je chercher ?

Merci pour votre aide.

Posté : 02 mars 2008, 10:40
par zeus
Il faut lire la doc ...

Dans la doc d'exec(), il est dit que le retour est le statut de l'exécution et que le retour textuel sera placé dans un tableau passé en paramètre.

Posté : 03 mars 2008, 17:29
par beve
bonjour, et merci pour ta réponse.
ok, je n'ai pas de retour mais la commande n'est pas exécutée car l'user n'est pas créé.
sais tu d'ou ça peut venir ?
merci a nouveau pour ton aide.

Posté : 03 mars 2008, 17:33
par Hywan
Est-ce que la commande useradd existe ? J'ai fais un

Code : Tout sélectionner

which useradd
sur mon Mac, et je n'ai rien.

Quand tu fais la commande sans passer par PHP, ça fonctionne ?

Posté : 03 mars 2008, 18:37
par beve
c'est une commande debian qui fonctionne parfaitement en passant par le shell.
par php, j'ai l'impression qu'on ne peut pas créer de nouveau user... c'est assez surprenant...
Je pense plutot qu'il y a qque chose que je ne fais pas correctement...

http://www.coagul.org/article.php3?id_article=229

merci de ton aide.

Posté : 03 mars 2008, 18:41
par Hywan
merci de ton aide.
votre* s'il te plaît. zeus t'as aussi aidé.

Je ne connais pas la gestion des utilisateurs sous debian, je ne peux pas t'aider, désolé.

Posté : 03 mars 2008, 18:52
par Ripat
C'est une commande root. Que retourne:
<?php echo exec('useradd benoist' 2>&1); ?>
Solutions:
ajouter www-data (le UID du serveur web) dans le groupe root. Très mauvaise idée. :wink:
ajouter www-data dans le sudoer (1) pour la commande useradd et faire:
<?php echo exec('sudo useradd benoist' 2>&1); ?>
(1) en root:

Code : Tout sélectionner

# visudo
rajouter:

Code : Tout sélectionner

www-data ALL = NOPASSWD: /usr/sbin/useradd

Posté : 03 mars 2008, 20:32
par beve
Merci donc a vous tous ! ;)

Ripat, je suis tout a fait d'accord avec toi, je ne veux pas passer www-data dans le groupe root.
Je veux juste que www-data ai des privilége d'administrateur le temps de passer 2 ou 3 commandes comme la création d'un user.
Par contre quand je tape la ligne en root

Code : Tout sélectionner

visudo
J'obtiens :

Code : Tout sélectionner

v1124:/var/www/softcomm/www/admin.softcomm.fr# visudo -bash: visudo: command not found
je ne comprends pas trop... n'est ce pas plutot :

Code : Tout sélectionner

vi sudo
ou dois je tapper cette commande ??

Merci de ton aide.

Posté : 03 mars 2008, 20:36
par Ripat
Est-ce que sudo est installé sur ton serveur?

Code : Tout sélectionner

$ dpkg -l sudo
Sinon, installe-le

Code : Tout sélectionner

# aptitude install sudo
Dès que c'est fait, visudo (sous root) et tu fais la modification indiquée plus haut.

Posté : 03 mars 2008, 20:45
par beve
est ce que je dois enregistrer mon fichier sous /etc/sudoers.tmp (defaut) ??
merci encore pour ton aide.

Posté : 03 mars 2008, 20:49
par Ripat
Une fois que tu as installé sudo, utilise visudo sous root. Cette commande te permettra d'éditer le fichier sudoers. Il est fortement recommandé de ne pas éditer directement sudoers.

Posté : 03 mars 2008, 20:53
par beve
ça marche !!!
trop bien, merci bcp !

Posté : 03 mars 2008, 20:57
par zeus
Modération :
beve, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.