Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/12/2010, 21h26   #1
Candidat au titre de Membre du Club
 
Inscription : mai 2009
Messages : 146
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 146
Points : 13
Points : 13
Par défaut Ajouter un utilisateur via shell

Bonjour,
J'aimerais savoir comment utiliser PHP pour créer un utilisateur.
J'ai fait un script Shell, où j'ai inséré le useradd.
Tout à l'air de marcher, les messages que j'ai mit s'affichent, etc.
Mais l'utilisateur n'est pas créé, et je pense que cela est dû aux permissions manquantes de www-data.
Comment je peux lui attribuer ?
J'ai cherché auprès de sudo, je viens de l'installer, mais malgré là doc', j'y comprend rien...
Merci de m'aider !
ApocKalipsS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2010, 21h58   #2
Responsable Modération
 
Avatar de ok.Idriss
 
Homme Idriss Neumann
Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)
Inscription : février 2009
Messages : 1 972
Détails du profil
Informations personnelles :
Nom : Homme Idriss Neumann
Âge : 21
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)

Informations forums :
Inscription : février 2009
Messages : 1 972
Points : 5 958
Points : 5 958
Bonsoir.

Tu voulais le faire en PHP pour palier le problème de ton script shell ?

Citation:
Envoyé par ApocKalipsS Voir le message
J'ai fait un script Shell, où j'ai inséré le useradd.
Peux-tu nous donner le code de ton script et le retour de la commande ci-dessous ?

Code :
cat /etc/passwd | grep ton_user_crée_dans_le_script
Sinon tu as aussi la commande adduser plus ergonomique mais useradd est préférable pour un script ...

Cordialement,
Idriss
ok.Idriss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2010, 23h15   #3
Candidat au titre de Membre du Club
 
Inscription : mai 2009
Messages : 146
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 146
Points : 13
Points : 13
Salut,
Désolé je ne suis pas sur mon ordinateur actuellement, je copierais le code demain. Quand je lance le script en tant que root, ça marche bien... C'est donc surement un problème de droits, mais comment le résoudre ?
ApocKalipsS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 18h53   #4
Candidat au titre de Membre du Club
 
Inscription : mai 2009
Messages : 146
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 146
Points : 13
Points : 13
Up! Comment lancer mon script .sh en root via PHP (www-data) ?
ApocKalipsS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 18h56   #5
Responsable Modération
 
Avatar de ok.Idriss
 
Homme Idriss Neumann
Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)
Inscription : février 2009
Messages : 1 972
Détails du profil
Informations personnelles :
Nom : Homme Idriss Neumann
Âge : 21
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)

Informations forums :
Inscription : février 2009
Messages : 1 972
Points : 5 958
Points : 5 958
Bonsoir.

Citation:
Envoyé par ApocKalipsS Voir le message
Up! Comment lancer mon script .sh en root via PHP (www-data) ?
Tu as des instructions exec() et system () en PHP.

Cordialement,
Idriss
ok.Idriss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 19h32   #6
Candidat au titre de Membre du Club
 
Inscription : mai 2009
Messages : 146
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 146
Points : 13
Points : 13
Oui, mais elles me retournent une erreur 127, et je pense que c'est parce que www-data n'as pas les permissions de lancer ce programme...
ApocKalipsS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 19h42   #7
Responsable Modération
 
Avatar de ok.Idriss
 
Homme Idriss Neumann
Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)
Inscription : février 2009
Messages : 1 972
Détails du profil
Informations personnelles :
Nom : Homme Idriss Neumann
Âge : 21
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)

Informations forums :
Inscription : février 2009
Messages : 1 972
Points : 5 958
Points : 5 958
Salut.

Et avec une commande toute bête comme ls ou pwd, tu as la même erreur ?

Quel est le but de ton script PHP ? Peut-tu nous poster le code de ton script shell et de ton script PHP ?

Cordialement,
Idriss
ok.Idriss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 20h09   #8
Candidat au titre de Membre du Club
 
Inscription : mai 2009
Messages : 146
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 146
Points : 13
Points : 13
Si j'éxécute le script shell en utilisateur root via SSH, ça marche.
Si je le fais via PHP, ça marche pas.
Sinon j'ai essayé directement en useradd :

Code :
system("useradd user -g 65534 -s /bin/false -p `mkpasswd xxx` -d /home/usr",$return_var);
$return_var m'affiche 127, et aucun utilisateurs n'est créé.
ApocKalipsS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 20h13   #9
Responsable Modération
 
Avatar de ok.Idriss
 
Homme Idriss Neumann
Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)
Inscription : février 2009
Messages : 1 972
Détails du profil
Informations personnelles :
Nom : Homme Idriss Neumann
Âge : 21
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)

Informations forums :
Inscription : février 2009
Messages : 1 972
Points : 5 958
Points : 5 958
Re

C'est donc plus un problème de PHP qu'autre chose.

Citation:
Envoyé par ok.Idriss Voir le message
Et avec une commande toute bête comme ls ou pwd, tu as la même erreur ?

Quel est le but de ton script PHP ? Peut-tu nous poster le code de ton script shell et de ton script PHP ?
Peut tu répondre à ces questions ? Bon je pense que le script shell ne sera pas vraiment utile (ni même le script PHP) mais on ne sait jamais.

Peut tu aussi préciser ta distribution ?

Cordialement,
Idriss
ok.Idriss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 20h20   #10
Candidat au titre de Membre du Club
 
Inscription : mai 2009
Messages : 146
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 146
Points : 13
Points : 13
J'utilise Debian Lenny.
Et oui, la commande ls marche bien et me retourne tous les fichiers présents.
Code :
1
2
		system("ls",$return_var);
		echo $return_var;
Voici le script shell (le plus important) qui marche quand je le lance avec root, et pas avec PHP :

Code :
1
2
3
4
5
useradd $2 -g 65534 -s /bin/false -p `mkpasswd $4` -d /home
echo "Utilisateur FTP ajouté."
echo "Login : $2"
echo "MDP : $4"
exit 1
ApocKalipsS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 20h26   #11
Responsable Modération
 
Avatar de ok.Idriss
 
Homme Idriss Neumann
Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)
Inscription : février 2009
Messages : 1 972
Détails du profil
Informations personnelles :
Nom : Homme Idriss Neumann
Âge : 21
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)

Informations forums :
Inscription : février 2009
Messages : 1 972
Points : 5 958
Points : 5 958
Et si tu met les droits 777 sur ton script ?
ok.Idriss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 20h29   #12
Candidat au titre de Membre du Club
 
Inscription : mai 2009
Messages : 146
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 146
Points : 13
Points : 13
Tout est déjà en 777, et j'ai même mis le propriétaire du script en www-data...
ApocKalipsS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 20h35   #13
Responsable Modération
 
Avatar de ok.Idriss
 
Homme Idriss Neumann
Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)
Inscription : février 2009
Messages : 1 972
Détails du profil
Informations personnelles :
Nom : Homme Idriss Neumann
Âge : 21
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)

Informations forums :
Inscription : février 2009
Messages : 1 972
Points : 5 958
Points : 5 958
Alors je pense que ton problème vient de l'utilisation de useradd qui est une commande root ... on pourrait très bien changer les droits de cette commande mais c'est à proscrire (faille de sécurité considérable et bidouillage).

Si tu enlève le useradd du script, tu n'as plus cette erreur ?
ok.Idriss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 20h45   #14
Candidat au titre de Membre du Club
 
Inscription : mai 2009
Messages : 146
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 146
Points : 13
Points : 13
Eh bien en fait, quand je lance le script shell avec PHP, il n'y a pas d'erreurs, c'est comme si tout marchait, les messages sont affichés, etc.
Mais l'utilisateur ne se créé pas, et je suis sûr qu'il n'y a pas de problèmes de le script, car l'utilisateur est créé en root.

Par contre, si je lance la commande useradd directement avec exec() ou system(), là, il y a cette erreur 127.
ApocKalipsS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 20h52   #15
Responsable Modération
 
Avatar de ok.Idriss
 
Homme Idriss Neumann
Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)
Inscription : février 2009
Messages : 1 972
Détails du profil
Informations personnelles :
Nom : Homme Idriss Neumann
Âge : 21
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)

Informations forums :
Inscription : février 2009
Messages : 1 972
Points : 5 958
Points : 5 958
Justement, useradd est une commande root ... et créer pouvoir utilisateurs sans être administrateur est une grosse faille de sécurité . AMHA, tu devrais t'en tenir à exécuter ce script en root ...

Cordialement,
Idriss
ok.Idriss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 20h54   #16
Candidat au titre de Membre du Club
 
Inscription : mai 2009
Messages : 146
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 146
Points : 13
Points : 13
Ok, tant pis...
Et si je l'éxécute avec cron ?
Enfin, je lance le .sh avec cron, ça va marcher ou pas ?
ApocKalipsS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 20h58   #17
Responsable Modération
 
Avatar de ok.Idriss
 
Homme Idriss Neumann
Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)
Inscription : février 2009
Messages : 1 972
Détails du profil
Informations personnelles :
Nom : Homme Idriss Neumann
Âge : 21
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)

Informations forums :
Inscription : février 2009
Messages : 1 972
Points : 5 958
Points : 5 958
Citation:
Envoyé par ApocKalipsS Voir le message
Enfin, je lance le .sh avec cron, ça va marcher ou pas ?
Normalement oui, si c'est exécuté avec le fichier crontab root ...

ou :

Code :
1
2
3
[ ~] su -
root's password:
[ ~] crontab -e
Cordialement,
Idriss
ok.Idriss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 21h16   #18
Candidat au titre de Membre du Club
 
Inscription : mai 2009
Messages : 146
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 146
Points : 13
Points : 13
Ok, bon, je vais commencer à refaire mon script shell du coup.

Je souhaite créer un utilisateur où le champ "x" de ma base mysql = 0

Exemple, dans un base MYSQL, j'ai les champs :

nom truc x

j'ai 3 utilisateurs, dont :

Machin abc 0
Truc abc 0
truc2 abc 1

Comme Machin et Truc on 0 dans le champ x, j'aimerais que mon script shell créé les utilisateurs Machin et Truc, puis modifier le champ x en 1 pour ces deux utilisateurs.
Comment faire ?

J'ai essayé ceci :

Code :
STRING_SQL=`echo "use matable; select nom from ftp where fini=0;" | mysql --user=root --password=xxxx`
Mais je quand j'affiche cette variable, voilà ce que je vois :

Pourquoi affiche-t-il le nom du champ de ma table, "nom" ?
Comment faire une boucle pour créer un user pour tous les données retournées ?
Merci beaucoup de ton aide, Idriss !
ApocKalipsS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 21h32   #19
Responsable Modération
 
Avatar de ok.Idriss
 
Homme Idriss Neumann
Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)
Inscription : février 2009
Messages : 1 972
Détails du profil
Informations personnelles :
Nom : Homme Idriss Neumann
Âge : 21
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)

Informations forums :
Inscription : février 2009
Messages : 1 972
Points : 5 958
Points : 5 958
Citation:
Envoyé par ApocKalipsS Voir le message
Comment faire une boucle pour créer un user pour tous les données retournées ?
Avec un script de ce style (à adapter, corriger, etc) ?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/bin/bash
 
# user et mdp du SGBD MySQL
mysql_user=#...
mysql_passwd=#...
 
# stockage du résultats des requêtes
req_login=`echo "use matable; select nom from ftp where fini=0;" | mysql -u $mysql_user --password=$mysql_passwd`
 
req_mdp=`echo "use matable; select mdp from ftp where fini=0;" | mysql -u $mysql_user --password=$mysql_passwd`
 
i=0
 
for login in `echo $req_login` # récupération des login dans un tableau
do
     tab_login[$i]=$login
     let i=$i+1
done
 
i=0
 
for mdp in `echo $req_mdp` # récupération des mdp dans un tableau
do
     tab_mdp[$i]=$mdp
     let i=$i+1
done
 
for (( j=1 ; j<$i ; j=$j+1 )) # on part de 1 (pour pas avoir le nom de la colonne)
do
    useradd ${tab_login[$j]} -g 65534 -s /bin/false -p `mkpasswd ${tab_mdp[$j]}` -d /home
    echo "Utilisateur FTP ajouté."
    echo "Login : ${tab_login[$j]}"
    echo -e "MDP : ${tab_mdp[$j]}\n"
done
ok.Idriss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2010, 15h43   #20
Candidat au titre de Membre du Club
 
Inscription : mai 2009
Messages : 146
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 146
Points : 13
Points : 13
Salut, merci beaucoup, ça marche niquel !
Par contre, voilà le crontab que j'ai réalisé qui ne marche pas :
Code :
1
2
 
* * * * * root /home/backup/script/ajout_user.sh
Elle devrait pourtant s'exécuter toutes les minutes, non ?


EDIT : Ça marche niquel, je devais faire /usr/sbin/useradd au lieu de useradd dans le script shell.
Je te remercie infiniment, Idriss
ApocKalipsS est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h32.


 
 
 
 
Partenaires

Hébergement Web