Ajout d'un user sans useradd

Résolu
Bonjour,

voilà, j'ai besoin d'écrire un script afin de créer des utilisateurs mais sans passer par le mode root!

En effet, ce script sera utiliser via un site web.

Un peu comme un site web qui propose de stocker et des données sur le net grâce à des droits, et des comptes utilisateurs sachant que dans mon cas je suis obligée (je pense) de créer des comptes utilisateurs.

En fin de compte j'ai 3 solutions :

1- essayer des créer des comptes utilisateurs sans se connecter en root
2- essayer d'implémenter la connexion en root dans mon script (ce qui me plait moyen)
3- essayer de m'organiser autrement, c'est-à-dire créer un dosser utilisateur (plutôt qu'un compte) en sachant que je veux mettre des droits sur ce dossier, l'utilisateur pourra accéder à son unique dossier et sous-dossier (en aucun cas, il ne doit pouvoir aller dans les autres répertoires)

Que me proposez-vous ?
dites-moi ce que vous en pensez!

Merci d'avance !!!
Configuration: Linux Fedora
Firefox 2.0.0.8

21 réponses

  1. Modérateur
    Bon ben si tu es satisfaite c'est parfait :-) Merci pour ces précisions !
    0
    1. Mon script devait ajouter un utilisateur sans passer par les droits root à l'origine. Et ce script, je le lançais dans une de mes page web lorsqu'un utilisateur s'enregistrait (pour lui créer un compte sur la machine).

      Comme ce n'est pas possible, les comptes seront créés préalablement par un script lancer qu'une seule fois en mode root. Ensuite, il suffira d'attribuer le dernier compte libre de la machine au prochain utilisateur qui s'enregistre.

      Voilà! :)
      0
      1. Modérateur
        Du coup je ne vois pas trop l'avantage comparé à adduser mais bon :-)
        0
        1. Oui, je devrais lancer le script à la main, dommage... ^^
          0
          1. Modérateur
            Si j'ai bien compris tu auras donc besoin de lancer toi-même ce script à chaque fois à la main ?

            Et là, je ne m'y connais pas assez pour modifier tout ça, j'aurais peur de créer de grosses failles de sécurité....

            Effectivement il faut éviter d'intervenir dans ce genre de fichier (idéalement jamais)
            0
            1. Ne t'inquiète pas, de toute façon, ce n'est plus possible.

              En effet, mon script marche lorsque je le lance dans un terminal (à partir de mon nom d'utilisateur) mais ne fonctionne pas à partir d'une page PHP (en utilisant system ou exec) car l'utilisateur qui fait tourner apache n'est pas moi (d'après ce que j'ai vu) mais nobody...
              Et modifier le fichier /etc/sudoers avec nobody ne fonctionne pas.
              Il faudrait de plus, installer suexec...

              Et là, je ne m'y connais pas assez pour modifier tout ça, j'aurais peur de créer de grosses failles de sécurité....
              0
              1. Modérateur
                J'espère juste que n'importe qui n'est pas susceptible de créer 23000 comptes sur ta machine (et de s'y connecter ensuite en ssh ou en telnet)

                Bonne chance
                0
                1. Bon, j'ai résolu mon problème toute seule....

                  petite explication brève, j'ai utilisé sudo et j'ai accordé le droit d'utiliser la commande useradd à un utilisateur en modifiant le fichier /etc/sudoers.

                  Et voilà, problème résolu.... (décidément, je cherche toujours compliqué...)
                  0
                  1. Ah bon?

                    tu en es certain?

                    La machine contient pas mal de CPU, les jobs qui seront lancé seront vérifiés avant tout, et le gestionnaire de queue va mettre des restrictions pour que les utilisateurs n'utilise pas tout.
                    Il peut y avoir plusieurs tâches par utilisateur mais si tout les CPU sont occupés, il va falloir placé le job de l'utilisateur dans la file d'exécution...
                    Faire ça au niveau PHP me parait impossible...

                    Niveau des comptes, le temps que ça arrive à 60.000, on a encore du temps devant nous, ne t'inquiète pas! ^^

                    Ce soir, je pars demandé conseil auprès de mes enseignants, plus précidément à l'administrateur réseaux, et à mon prof d'unix.

                    Je vous tiens au courant.
                    0
                    1. Modérateur
                      Le gestionnaire de queue peut être fait au niveau php je pense (puisqu'il s'agit d'un serveur d'application). Dans ce cas, les utilisateurs n'ont pas besoin d'avoir un login sur la machine, juste sur le site. Moins tu laisses de liberté à l'utilisateur, moins il est susceptible de faire des bêtises ;-)

                      Bonne chance
                      0
                      1. Pour répondre à mamiemando, c'est un serveur d'application.

                        Mais sachant qu'il y a des restrictions... Je vais devoir utiliser un gestionnaire de queue. Je ne veux pas que pleins d'utilisateurs se connectent en même temps, envoient leurs données et "squatent" la machine avec pleins de jobs de lancés... (et finisse par cramer...)
                        0
                        1. Modérateur
                          Salut,

                          vont pouvoir s'inscrire dans une base de données, à cette inscription, un compte utilisateur est créé sur une machine.

                          Je ne pense pas que c'est une bonne solution.
                          Il me semble que le nombre d'utilisateurs est limité à 60000
                          # Min/max values for automatic uid selection in useradd
                          #
                          UID_MIN                  1000
                          UID_MAX                 60000


                          Je pense plutôt que tu dois créer un répertoire pour chaque utilisateur quelque part dans ton système et ensuite grâce aux ACL tu fixes les droits d'accèss

                          Par exemple
                          le répertoire père qui apartiendra à un utilisateur sur le server (pas à root) qui aura tous les droits de lecture est écriture
                          mdkir /home/server_user

                          ensuite le script de création des répertoire + attributions des droits pour chaque inscription sera exécuter sous l'identité de ce utilisateur
                          0
                          1. Modérateur
                            Hum si ce n'est pas indiscret, que sont sensés pouvoir faire les utilisateurs sur cette machine ?
                            0
                            1. Salut,

                              Le problème, c'est que je n'ai pas donnée assez de détails.

                              Je t'explique, sur le site, des utilisateurs vont pouvoir s'inscrire dans une base de données, à cette inscription, un compte utilisateur est créé sur une machine.
                              Donc une première question est de savoir comment automatiser cette tâche sans se connecter en root. Pour cette question je crois que c'est impossible, c'est l'administrateur qui devrai créer le compte pour lui.

                              Ensuite, suite à ça, les utilisateurs pourront se connecter sur le site, envoyer des données dans leur /home. Là, un logiciel s'occupe de leurs données pour en générer d'autres, qu'il pourront par la suite récupérer via un lien.

                              En ce qui concerne, les droits, la question ne se posent plus puisque les comptes utilisateurs seront créé par l'administrateur. un petit chmod 700 et on n'en parle plus...

                              Au niveau de PAM, je vois pas en quoi ce logiciel peut m'aider... Peut-être niveau sécurité a priori...
                              0
                              1. Modérateur
                                Salut,

                                Voilà pour PAM.

                                Linux-PAM est un système de bibliothèques qui gèrent les tâches d'authentification des applications (services) sur le système. Les bibliothèques fournissent une interface d'abstraction stable (Application Programming Interface - API) qui accorde les privilèges aux programmes (comme login(1) et su(1)) en ajournant la réalisation des tâches standard d'authentification

                                Ce n'était pas ce que tu as demandé. Tu parles des droits et pas des protocols d'authentification.

                                Il t'on mal conseillé ou tu as posé la mauvaise question ;-))
                                0
                                1. Merci.

                                  Finalement, j'ai vraiment besoin de créer un compte utilisateur sur la machine et non pas sur le serveur apache.
                                  On m'a proposé une autre solution aussi, cette solution s'appelle Pam...

                                  Je vais faire quelques recherches sur le net...
                                  0
                                  1. Modérateur
                                    Ah mais diantre !! Tu as raison !!! :-) Je viens même de découvrir que j'étais modo et que j'avais été sollicitée par c plus electronic :p
                                    0
                                    1. Modérateur
                                      Attention les htaccess n'ont un sens que pour des utiisateurs se connectant sur le serveur apache. Ce ne sont donc pas des utilisateurs sur la machine proprement dit. S'il s'agit bien d'utilisateur sur la machine c'est sans doute la solution de dubcek qui répond le mieux à ton problème (personnellement je ne connais pas trop les ACL).

                                      Bonne chance
                                      0
                                      1. Modérateur
                                        Salut Miss,

                                        personnellement je ne connais pas trop les ACL

                                        pourtant t'es dédans ;-))
                                        exemple d'utilisation
                                        0
                                    2. Oui, ce que je veux, c'est créer des comptes utilisateurs sur la machine.

                                      Je pense pouvoir utiliser un des répertoires utilisateurs avec des .htaccess, il me suffirait, de créer un répertoire à la base de mon site et de créer des sous répertoires avec le nom de l'utilisateur.

                                      Je vois que d'autres solutions s'offrent à moi.

                                      Je vais lire plus en détail l'article sur les ACL, merci Dubcek.
                                      Et merci mamiemando, car je pense que je peux aussi adopter cette solution.

                                      Si quelqu'un veut proposer une solution, je suis toute ouïe!!

                                      et merci encore!
                                      0
                                      1. Modérateur
                                        En fait tout dépend du genre d'utilisateur que tu veux créer. Si c'est vraiment un utilisateur sur la machine il faudra au choix :
                                        1- lancer la création de l'utilisateur en tant que root (le script php utilisant la commande sudo + ajouter l'utilisateur internet comme "sudoer") (pas terrible)
                                        2- lancer un script avec un bit suid (dangereux)
                                        3- changer les droits sur /etc/passwd (à éviter à tout prix !!)

                                        S'il s'agit de créer des comptes utilisateurs pour des internautesce qui me paraît plus logique c'est d'utiliser des htaccess (il suffit que ton script php crée les bons .htaccess dans chaque répertoires utilisateurs et utilise la commande htpasswd) :
                                        http://www.infres.enst.fr/~danzart/frames/htaccess.html

                                        S'il s'agit de comptes utilisateurs sur la machine les htaccess ne te seront d'aucune aide, la méthode (1). Sachant que c'est pas super car un utilisateur malveillant pourra créer plein de comptes...

                                        Bonne chance
                                        0
                                        • 1
                                        • 2