Forum Linux.debian/ubuntu utiliser la commande "adduser" avec PHP nécessite d'être root ... mais comment ?

Posté par  .
Étiquettes : aucune
0
26
jan.
2007
Bonjour,

Sur un intranet sécurisé, j'ai fais une page PHP qui permet à n'importe qui de taper son login et son mot de passe pour creer son compte sur un serveur.

Dans mon script, la commande est préte à etre lancée
Mais le probleme : comment faire pour les droits admin ?

Voila ma commande :
exec($cmd,$oput,$stdout);
Avec $cmd qui contient :
sudo /usr/sbin/adduser -g utilisateurs -p "bubu" -c "bibi" -s /sbin/bash -d /home/bibi bibi

Mais sudo demande le mot de passe root, donc ca n'avance rien ...
Je me suis dis que je pourais mettre le bit suid sur l'executable adduser pour pouvoir le lancer en simple utilisateur. Mais je me dis que ca ne servira pas à grand chose car l'utilisateur n'aura tjrs pas les droits sur les fichiers à modifier. Par exemple /etc/passwd... Et mettre les droits en écriture sur tous ces fichiers me semble vraiment barbar ...

Avez vous une idée ? Quelle est la bonne solution ? Sinon lancer apache en root a la place d'un utilisateur systeme ? Mais c est pas top non plus ... Il doit bien y avoir une solution pourtant ?
  • # RTM

    Posté par  . Évalué à 2.

    man sudoers Sudo est très finement paramétrable. Pas besoin de sortir le bazooka pour tuer cette vilaine mouche (en donnant les droits root à apache par exemple) ;-)
    • [^] # Re: RTM

      Posté par  . Évalué à 2.

      Je confirme.
      Une piste :
      - installer sudo
      - le configurer avec visudo.
      On peut spécifier les commandes autorisées pour un utilisateurs, en l'occurence www-data (debian) avec quelque chose du style :

      User_Alias WWW www-data (suis plus sur de la syntaxe)
      Cmnd_Alias CMD /mon/script/shell/, /mon/autre/script/shell (idem)
      WWW ALL=(ALL) NOPASSWD: CMD

      ou les scripts sont exécutables (chmod +x).


      Bon courage !
      • [^] # Re: RTM

        Posté par  (site web personnel) . Évalué à 1.

        www-data ALL=(ALL) NOPASSWD: /usr/sbin/adduser -g utilisateurs *

        Hum après je te conseille de faire très gaffe a tes -p "xxx" en clair dans la ligne de commande...

        Ça de forte chance d'être loggué sur le fichier de log en clair...

        Mieux vaudrais essayer d'envoyer un passwd nom_compte (!=root!!!) avec deux fois le pass qui va bien en paramètre.
        • [^] # Re: RTM

          Posté par  (site web personnel) . Évalué à 1.

          Comme dis plus bas, je pense qu'il serait plus simple de faire du compte utilisateur en base (my)sql, c'est bien plus simple (et facile a faire, enfin pour moi).

          Et ce sera nettement plus sur...
  • # utilisateurs virtuels avec une base MySQL, LDAP, etc.

    Posté par  (site web personnel) . Évalué à 3.

    Sinon, il est toujours possible d'utiliser une base LDAP ou SQL pour stocker tes utilisateurs. Si tu as vraiment besoin d'un accès au shell, PAM saura gérer le reste.
  • # Suid

    Posté par  . Évalué à 1.

    Je me suis dis que je pourais mettre le bit suid sur l'executable adduser pour pouvoir le lancer en simple utilisateur. Mais je me dis que ca ne servira pas à grand chose car l'utilisateur n'aura tjrs pas les droits sur les fichiers à modifier. Par exemple /etc/passwd... Et mettre les droits en écriture sur tous ces fichiers me semble vraiment barbar ...

    Il me semble que les fichiers seront ouverts avec les droits du root, puisque c'est le processus de adduser qui va s'en charger, donc ça devrait marcher.

    Mais je plussoie l'idée du LDAP, bien plus sécurisée que de mettre des SUID partout.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.