Script permettant l'ouverture de comptes ftp
sohnic
-
sohnic -
sohnic -
Bonjour,
J'ecris un site web (en php) heberge sur un serveur Linux dont l'une des pages est un formulaire demandant un login et un mot de passe afin de creer le compte ftp correspondant sur le meme serveur.
Malheureusement, les commandes exec, shell_exec, system, ... ne fonctionnent pas.
exec('ls'); OK
exec('useradd -G ftp titi'); ne fonctionne pas, normal l'utilisateur Apache n'est pas root (et je n'y tiens pas).
Mon idee a ete de faire :
exec('ssh root@localhost useradd -G ftp titi');
mais comment donner mon mot de passe (je n'ai strictement rien compris dans le man ssh concernant la variable ssh_askpass).
Je suis evidemment ouverte a toute autre idee que celle-ci.
Bref, si quelqu'un peut me donner un coup de main, ca me faciliterait grandement la vie. En effet, sans solution, je serai obligee d'heberger le serveur sur un windows, le logiciel plink permettant de qualifier entierement le compte ssh.
Merci par avance,
Sohnic
J'ecris un site web (en php) heberge sur un serveur Linux dont l'une des pages est un formulaire demandant un login et un mot de passe afin de creer le compte ftp correspondant sur le meme serveur.
Malheureusement, les commandes exec, shell_exec, system, ... ne fonctionnent pas.
exec('ls'); OK
exec('useradd -G ftp titi'); ne fonctionne pas, normal l'utilisateur Apache n'est pas root (et je n'y tiens pas).
Mon idee a ete de faire :
exec('ssh root@localhost useradd -G ftp titi');
mais comment donner mon mot de passe (je n'ai strictement rien compris dans le man ssh concernant la variable ssh_askpass).
Je suis evidemment ouverte a toute autre idee que celle-ci.
Bref, si quelqu'un peut me donner un coup de main, ca me faciliterait grandement la vie. En effet, sans solution, je serai obligee d'heberger le serveur sur un windows, le logiciel plink permettant de qualifier entierement le compte ssh.
Merci par avance,
Sohnic
A voir également:
- Script permettant l'ouverture de comptes ftp
- Script vidéo youtube - Guide
- Page d'ouverture google - Guide
- Mas script - Accueil - Windows
- Core ftp - Télécharger - Téléchargement & Transfert
- 2 comptes whatsapp double sim - Guide
3 réponses
Pour faire ce que tu veux faire, il y a plusieurs solutions.
1.
Si tu veux le faire avec ssh, tu peux procéder en créant un couple de clés rsa et en passant la clé publique au client ssh avec l'option -i.
Utilises "ssh-keygen -t rsa". Tes clés sont dans le sous répertoire .ssh de la racine de ton utilisateur (donc root dans ton cas). Lors de la création des clés, ne mets pas de mot de passe (sinon, il te faudra un mot de passe pour le débloquer sous windows, et tu ne pourra pas faire celà sans avoir à saisir le mot de passe le moment venu), presse juste entrée quand ssh-keygen te demande un mot de passe.
Dans le répertoire .ssh de root, copie la clée publique générée (elle termine par .pub) dans un fichier authorized_keys.
Tu prend la copie de la clé publique, que tu places dans un repertoire accessible par Apache (protège comme tu peux l'accès à ce répertoire, avec .htaccess par exemple, ou mieux, dans un répertoire placé ailleurs que dans l'arborescence Apache).
Tu lances ssh dans ton script php, avec comme nom de login root (option -l), avec la clé publique (option -i).
2.
Cette solution n'est pas très sûre, car ta clé n'est pas protégée et pourrait tomber entre de mauvaises mains en dépit de tes précautions.
Pour faire ce genre de choses j'utilise autres trucs.
Par exemple :
- tu peux créer un fichier ASCII avec les informations relatives aux commandes que tu veux lancer, et tu met un cron sous root, qui vérifie périodiquement ce qu'il y a à faire et vide le fichier quand il a terminé,
ou, si tu aimes bien Perl tu peux faire comme çà :
- tu envoies un e-mail à root depuis PHP et avec procmail, et dans ton .procmailrc tu crées une règle comme çà :
Dans ton fichier Perl, tu traites l'e-mail comme çà :
La boucle te donnera les lignes succesives de ton e-mail dans la variable $st
Bien sûr, il faut que tout çà soit bien programmé et que tu contrôles très soigneusement ce qu'entre l'utilisateur avant de le passer à une quelconque commande.
Dal
P.S. : n'héberge pas ton serveur sous Windows ;)
1.
Si tu veux le faire avec ssh, tu peux procéder en créant un couple de clés rsa et en passant la clé publique au client ssh avec l'option -i.
Utilises "ssh-keygen -t rsa". Tes clés sont dans le sous répertoire .ssh de la racine de ton utilisateur (donc root dans ton cas). Lors de la création des clés, ne mets pas de mot de passe (sinon, il te faudra un mot de passe pour le débloquer sous windows, et tu ne pourra pas faire celà sans avoir à saisir le mot de passe le moment venu), presse juste entrée quand ssh-keygen te demande un mot de passe.
Dans le répertoire .ssh de root, copie la clée publique générée (elle termine par .pub) dans un fichier authorized_keys.
Tu prend la copie de la clé publique, que tu places dans un repertoire accessible par Apache (protège comme tu peux l'accès à ce répertoire, avec .htaccess par exemple, ou mieux, dans un répertoire placé ailleurs que dans l'arborescence Apache).
Tu lances ssh dans ton script php, avec comme nom de login root (option -l), avec la clé publique (option -i).
2.
Cette solution n'est pas très sûre, car ta clé n'est pas protégée et pourrait tomber entre de mauvaises mains en dépit de tes précautions.
Pour faire ce genre de choses j'utilise autres trucs.
Par exemple :
- tu peux créer un fichier ASCII avec les informations relatives aux commandes que tu veux lancer, et tu met un cron sous root, qui vérifie périodiquement ce qu'il y a à faire et vide le fichier quand il a terminé,
ou, si tu aimes bien Perl tu peux faire comme çà :
- tu envoies un e-mail à root depuis PHP et avec procmail, et dans ton .procmailrc tu crées une règle comme çà :
:0 c * ^Subject:.*\[faire des trucs\] | /root/boiteatrucs/FairedesTrucsMerveilleux.pl
Dans ton fichier Perl, tu traites l'e-mail comme çà :
open(INFO, '-'); # Open standard input
@a=<INFO>;
close(INFO);
while ($st= shift @a) {
# faire des trucs ici avec $st
}
La boucle te donnera les lignes succesives de ton e-mail dans la variable $st
Bien sûr, il faut que tout çà soit bien programmé et que tu contrôles très soigneusement ce qu'entre l'utilisateur avant de le passer à une quelconque commande.
Dal
P.S. : n'héberge pas ton serveur sous Windows ;)
Merci beaucoup,
j'essaie ca des lundi et je te tiens au courant du resultat.
Donc, a bientot ... et encore merci,
Sohnic
j'essaie ca des lundi et je te tiens au courant du resultat.
Donc, a bientot ... et encore merci,
Sohnic
remoi !
Donc j'ai essaye ce que tu m'a dit.
sous root, j'ai genere les lcefs avec ssh-keygen -t rsa.
J'ai copie le fichier /root/.ssh/id_rsa.pub dans /tmp/authorized_keys.
J'ai modifie mon script php pour utiliser:
ssh -i /tmp/authorized_keys -l root localhost useradd -G ftp tutu
Et ca n'a pas marche...
Toujours sous root, si je tape cette meme commande et la console me demande mon mot de passe.
Si je retire la fin (= root@miaou) ou le debut (ssh_rsa) ou les deux, j'otiens :
[root@miaou root]# ssh -i /tmp/authorized_keys -l root localhost useradd -G ftp tutu
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0666 for '/tmp/authorized_keys' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /tmp/authorized_keys
Enter passphrase for key '/tmp/authorized_keys':
root@localhost's password:
ou la meme chose avec l'affichage de la clef.
Je precise que je n'ai pas mis de passphrase.
Bref, je suppose que j'ai loupe quelque chose dans ton explication et google ne pas pas plus aide sur ce coup la.
Quant au point 2, il est vraiment trop complexe moi. De plus, un cron pour l'ouverture de trois comptes a la semaine (et encore !) est peut-etre un peu lourde.
Je pense d'ailleurs pour cette raison que je vais finir par ouvrir les comptes ftp moi-meme et a l'ancienne, si vraiment il n'y a pas de solution simple.
Mais, quand meme, ca flatterait mon ego d'y arriver !
Encore merci pour ton aide precieuse,
Sohnic
Donc j'ai essaye ce que tu m'a dit.
sous root, j'ai genere les lcefs avec ssh-keygen -t rsa.
J'ai copie le fichier /root/.ssh/id_rsa.pub dans /tmp/authorized_keys.
J'ai modifie mon script php pour utiliser:
ssh -i /tmp/authorized_keys -l root localhost useradd -G ftp tutu
Et ca n'a pas marche...
Toujours sous root, si je tape cette meme commande et la console me demande mon mot de passe.
Si je retire la fin (= root@miaou) ou le debut (ssh_rsa) ou les deux, j'otiens :
[root@miaou root]# ssh -i /tmp/authorized_keys -l root localhost useradd -G ftp tutu
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0666 for '/tmp/authorized_keys' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /tmp/authorized_keys
Enter passphrase for key '/tmp/authorized_keys':
root@localhost's password:
ou la meme chose avec l'affichage de la clef.
Je precise que je n'ai pas mis de passphrase.
Bref, je suppose que j'ai loupe quelque chose dans ton explication et google ne pas pas plus aide sur ce coup la.
Quant au point 2, il est vraiment trop complexe moi. De plus, un cron pour l'ouverture de trois comptes a la semaine (et encore !) est peut-etre un peu lourde.
Je pense d'ailleurs pour cette raison que je vais finir par ouvrir les comptes ftp moi-meme et a l'ancienne, si vraiment il n'y a pas de solution simple.
Mais, quand meme, ca flatterait mon ego d'y arriver !
Encore merci pour ton aide precieuse,
Sohnic
> sinon, il te faudra un mot de passe pour le débloquer sous windows
tu peux ignorer le "sous windows"... j'ai copié collé trop vite une de mes précédentes réponses d'un utilisateur de windows.
Dal