IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Ajouter un utilisateur via shell


Sujet :

Shell et commandes GNU

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 146
    Points : 42
    Points
    42
    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 !

  2. #2
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 146
    Points : 42
    Points
    42
    Par défaut
    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 ?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 146
    Points : 42
    Points
    42
    Par défaut
    Up! Comment lancer mon script .sh en root via PHP (www-data) ?

  5. #5
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    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

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 146
    Points : 42
    Points
    42
    Par défaut
    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...

  7. #7
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    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

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 146
    Points : 42
    Points
    42
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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éé.

  9. #9
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    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

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 146
    Points : 42
    Points
    42
    Par défaut
    J'utilise Debian Lenny.
    Et oui, la commande ls marche bien et me retourne tous les fichiers présents.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  11. #11
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    Et si tu met les droits 777 sur ton script ?

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 146
    Points : 42
    Points
    42
    Par défaut
    Tout est déjà en 777, et j'ai même mis le propriétaire du script en www-data...

  13. #13
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    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 ?

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 146
    Points : 42
    Points
    42
    Par défaut
    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.

  15. #15
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    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

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 146
    Points : 42
    Points
    42
    Par défaut
    Ok, tant pis...
    Et si je l'éxécute avec cron ?
    Enfin, je lance le .sh avec cron, ça va marcher ou pas ?

  17. #17
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [ ~] su -
    root's password:
    [ ~] crontab -e
    Cordialement,
    Idriss

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 146
    Points : 42
    Points
    42
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !

  19. #19
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 146
    Points : 42
    Points
    42
    Par défaut
    Salut, merci beaucoup, ça marche niquel !
    Par contre, voilà le crontab que j'ai réalisé qui ne marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/01/2006, 11h08
  2. [LDAP] récupération login de l'utilisateur via Active Directory
    Par kcizth dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 21/12/2005, 16h47
  3. Invite utilisateur en shell
    Par tomca dans le forum Linux
    Réponses: 5
    Dernier message: 01/09/2005, 13h38
  4. script pour ajouter des utilisateurs postgres
    Par xopos dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 16/08/2004, 10h49
  5. l'ajout des utilisateurs
    Par frome dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 27/03/2004, 13h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo