Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 07/09/2012, à 13:22

Mindiell

Script de création de compte utilisateur

Bonjour tout le monde,

Je suis en train de travailler sur un site web et je voudrais rajouter des comptes utilisateurs.
Pour le moment, j'aimerai que mes utilisateurs puissent se connecter par FTP pour pouvoir déposer des fichiers.

Le fonctionnement est un petit peu celui d'un hébergeur par exemple :
- je m'inscris en rentrant un nom d'utilisateur toto
- le compte est créé, un mot de passe par défaut (toto au hasard) lui est attribué
- le compte est ajouté à un groupe spécifique (super_groupe par exemple)
- quelque part, un répertoire spécifique est créé (là où il pourra, plus tard, déposer des trucs)
- des droits spécifiques sont donnés au répertoire créé

=> Désormais, je dois pouvoir lancer un FTP et tomber sur le répertoire spécifique créé (à priori, les utilisateurs ne se loggeront jamais sur leur compte, pas besoin de home) et aucun autre. D'après ce que j'ai lu, il y a une histoire de chroot, mais je verrai ça après si possible.

Le groupe est utilisé par le site web pour afficher les fichiers déposés.

Le site est en python et j'ai envisagé 3 solutions :
- utilisation directe de python pour faire tout ça (je ne sais pas si c'est possible),
- utilisation de python pour déclencher le script (je ne sais pas si c'est possible),
- utilisation de python pour créer un fichier (par exemple), et le script est dans un crontab et se lance si le fichier existe,

J'ai donc fait quelques recherches et j'ai quelques questions :
- useradd me semble la bonne option pour commencer, mais puis-je bel et bien me passer d'un dossier home ? Que se passe-t-il si l'utilisateur cherche à se connecter quand même ? (sans réponse, j'essayerai moi-même ce soir wink)
- useradd crée automatiquement un groupe du nom de l'utilisateur, je suppose que ça ne pose pas de souci cette partie (ou alors on peut aussi s'en passer ? autant faire le minimum, non ?).


Donc, au final, mon script actuel ressemblerait à ça (mis à jour suivant les réponses) :

# Passage en mode super utilisateur
# ---> su ? Je n'ai jamais utilisé que sudo, va falloir que j'y travaille
# donc à priori il faut faire sudo su ou sudo -s, par contre, il est peut-être préférable de lancer le script en tant que sudoer, c'est plus simple je pense...

# Création du compte utilisateur
# -g : permet d'ajouter l'utilisateur aux groupes spécifiés à la suite
# -M : permet de ne pas créer le répertoire home de l'utilisateur
# -N : permet de ne pas créer de groupe portant le même nom que l'utilisateur
# -p : permet d'attribuer un mot de passe, mais celui-ci doit être crypté
#        la commande perl permet de crypter le mot de passe, et de renvoyer le résultat à la commande useradd
useradd -N -M -g super_groupe -p `perl -e "print crypt('$password', 'salt string')"` toto

# Création du répertoire de dépôt
mkdir /var/datas/t/o/t/toto
chown -R super_group:toto /var/datas/t/o/t/toto
chmod -R g+s /var/datas/t/o/t/toto

Voilà, n'hésitez pas à corriger, critiquer, etc... Toute aide est la bienvenue wink

Merci à tout le monde d'avance !

Dernière modification par Mindiell (Le 07/09/2012, à 13:31)

Hors ligne

#2 Le 07/09/2012, à 13:25

Mindiell

Re : Script de création de compte utilisateur

Je me réponds à moi-même : pour le mot de passe, on peut l'intégrer directement dans la première commande de création de compte avec perl !

Je modifie donc mon script...

Hors ligne

#3 Le 07/09/2012, à 16:21

Mindiell

Re : Script de création de compte utilisateur

Bon, finalement j'vais p'tet faire un javascript pour uploader les fichiers directement à travers le web... C'est plus fun pour les utilisateurs et pas forcément très compliqué... Je laisse le script au cas où, je trouve ça intéressant quand même le jour où un user me demandera d'accéder à ses fichiers par FTP wink

Hors ligne