User local et server ftp
Résolu
Bonjour,
J'ai installé un serveur FTP sur mon serveur CentOS en exploitant certains user locaux du serveur. Cela fonctionne bien mais il y a une chose que j'aimerais en plus, a chaque connexion sur le serveur avec ces users une commande est executée dans le .bashrc mais celle-ci ne s'exécute pas quand je me connecte à travers le FTP, est-ce possible de faire en sorte qu'elle s'exécute dans les 2 cas svp ?
Mon serveur ftp est vsftpd.
Merci d'avance de votre aide.
J'ai installé un serveur FTP sur mon serveur CentOS en exploitant certains user locaux du serveur. Cela fonctionne bien mais il y a une chose que j'aimerais en plus, a chaque connexion sur le serveur avec ces users une commande est executée dans le .bashrc mais celle-ci ne s'exécute pas quand je me connecte à travers le FTP, est-ce possible de faire en sorte qu'elle s'exécute dans les 2 cas svp ?
Mon serveur ftp est vsftpd.
Merci d'avance de votre aide.
A voir également:
- User local et server ftp
- Appdata local - Guide
- Typsoft ftp server - Télécharger - Téléchargement & Transfert
- Ip local - Guide
- Prix d'un appel local - Forum Vos droits sur internet
- Cybera server - Télécharger - Divers Réseau & Wi-Fi
9 réponses
Ben non car le ~/.bashrc est exécuté si tu lances un shell (bash), ce qui n'est pas le cas quand tu te connectes en ftp.
La seule idée que je vois c'est d'écrire un petit démon qui parse les logs de vsftpd et qui réagit quand vstfpd écrit dans les logs qu'un utilisateur s'est connecté avec succès (option xfer_log ?)
Après il faut voir si vsftpd n'implémente pas des "hooks". Visiblement ce n'est pas le cas dans vsftpd lui même :
http://viki.brainsware.org/?en/vsHook
Bonne chance
La seule idée que je vois c'est d'écrire un petit démon qui parse les logs de vsftpd et qui réagit quand vstfpd écrit dans les logs qu'un utilisateur s'est connecté avec succès (option xfer_log ?)
Après il faut voir si vsftpd n'implémente pas des "hooks". Visiblement ce n'est pas le cas dans vsftpd lui même :
http://viki.brainsware.org/?en/vsHook
Bonne chance
Tu m'avais conseillé d'installer Proftpd mais j'ai utilisé vsftpd car il est livré en natif dans CentOs5.8 donc j'ai commencé avec lui, mais peut être que cela est possible avec un autre. Ou bien c'est une règle qui s'appliquera à tous ?
J'avais aussi pensé à utiliser inotify qui peut réagir à des modification de répertoires, donc quand un user upload un fichier il devrait y avoir un moyen d'exécuter un script.
On bien utiliser ExecOnConnect qui est inclus dans Proftpd ?
Qu'en penses tu ?
J'avais aussi pensé à utiliser inotify qui peut réagir à des modification de répertoires, donc quand un user upload un fichier il devrait y avoir un moyen d'exécuter un script.
On bien utiliser ExecOnConnect qui est inclus dans Proftpd ?
Qu'en penses tu ?
Non non tu peux tout à fait virer via ton gestionnaire de paquets vsftpd et proftpd si tu préfères. Par contre seul l'un des deux serveurs doit être activé à un moment donné.
Ton gestionnaire de paquets devrait te permettre de virer vsftpd et installer proftpd facilement. Apparemment ce serait yum :
https://forums.commentcamarche.net/forum/affich-8540881-comment-installer-un-programme-sous-cent-os
https://doc.fedora-fr.org/wiki/Yum
Mais sinon c'est effectivement ExecOnConnect que tu utiliseras dans proftpd, qui fournit le mécanismes de hook auquel je faisais allusion.
http://www.proftpd.org/docs/contrib/mod_exec.html
Il suffit donc d'installer le paquet proftpd et le paquet qui fournit ce module, puis configurer /etc/proftpd/proftpd.conf (ou /etc/proftpd.conf, le chemin peut différer selon la distribution). Sous debian, proftpd et le module exec sont fournit par le paquet proftpd-basic (le nom diffère sans doute sous centOS).
Une fois le fichier configuré, relance proftpd via la commande service ou en invoquant directement le script dans /etc/init.d, typiquement :
Bonne chance
Ton gestionnaire de paquets devrait te permettre de virer vsftpd et installer proftpd facilement. Apparemment ce serait yum :
https://forums.commentcamarche.net/forum/affich-8540881-comment-installer-un-programme-sous-cent-os
https://doc.fedora-fr.org/wiki/Yum
Mais sinon c'est effectivement ExecOnConnect que tu utiliseras dans proftpd, qui fournit le mécanismes de hook auquel je faisais allusion.
http://www.proftpd.org/docs/contrib/mod_exec.html
Il suffit donc d'installer le paquet proftpd et le paquet qui fournit ce module, puis configurer /etc/proftpd/proftpd.conf (ou /etc/proftpd.conf, le chemin peut différer selon la distribution). Sous debian, proftpd et le module exec sont fournit par le paquet proftpd-basic (le nom diffère sans doute sous centOS).
Une fois le fichier configuré, relance proftpd via la commande service ou en invoquant directement le script dans /etc/init.d, typiquement :
service proftpd restart /etc/init.d/proftpd restart
Bonne chance
Tout d'abord Merci de ta réponse.
J'ai installé Proftpd mais je ne sais pas si mod_exec s'est installé automatiquement. De plus sur la doc il est écrit que depuis la version 1.3.3 mod_exec est inclus d'office dans les sources mais je ne sais pas comment a été compilé le paquet que j'ai installé. Sais-tu ou je pourrais vérifier sa présence stp ?
Ensuite j'ai rajouté les lignes suivantes à mon fichier de conf, peux tu me dire si c'est ok ?
<IfModule mod_exec.c>
ExecEngine on
ExecLog /var/log/ftpd/exec.log
ExecOnConnect /usr/sbin/intrusion.sh --user %u
</IfModule>
Mon but est d'exécuter le script intrusion a chaque connexion mais j'ai besoin de la valeur de %u, on est d'accord que je peux récupérer cette valeur dans mon script ? Si oui comment stp ? Je peux directement utiliser %u comme une variable globale dans mon script ou alors cela se passe autrement ?
Si toute fois mod_exec n'a pas été compiler dans mon paquet est-ce que je peux l'ajouter ou bien il faut tout recompiler avec des sources complètes que je dois récupérer ?
Merci d'avance de ton aide.
J'ai installé Proftpd mais je ne sais pas si mod_exec s'est installé automatiquement. De plus sur la doc il est écrit que depuis la version 1.3.3 mod_exec est inclus d'office dans les sources mais je ne sais pas comment a été compilé le paquet que j'ai installé. Sais-tu ou je pourrais vérifier sa présence stp ?
Ensuite j'ai rajouté les lignes suivantes à mon fichier de conf, peux tu me dire si c'est ok ?
<IfModule mod_exec.c>
ExecEngine on
ExecLog /var/log/ftpd/exec.log
ExecOnConnect /usr/sbin/intrusion.sh --user %u
</IfModule>
Mon but est d'exécuter le script intrusion a chaque connexion mais j'ai besoin de la valeur de %u, on est d'accord que je peux récupérer cette valeur dans mon script ? Si oui comment stp ? Je peux directement utiliser %u comme une variable globale dans mon script ou alors cela se passe autrement ?
Si toute fois mod_exec n'a pas été compiler dans mon paquet est-ce que je peux l'ajouter ou bien il faut tout recompiler avec des sources complètes que je dois récupérer ?
Merci d'avance de ton aide.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Sous debian le module (mod_exec.so) est rangé dans /usr/lib/proftpd. J'imagine que la commande rpm (option -l ?) permet de lister le contenu d'un paquet, tu peux regarder celui de ton paquet proftpd. Ou sinon tu peux faire une recherche avec "updatedb && locate | grep mod_exec".
Pour la configuration, le répertoire de log me paraît bizarre, assure-toi en tout cas qu'il existe (j'aurais plus vu /var/log/proftpd/exec.log). Si cette option marche, le fichier devrait être créé, tu peux lancer la commande suivante pour voir ce qui est écrit dedans au fil du temps :
Ensuite, à première vu c'est correct, mais je te conseille d'ajouter dans /usr/sbin/intrusion.sh d'écrire dans un fichier (par exemple /tmp/toto) les paramètres que tu as reçu, mais si ça se trouve avec les logs tu auras déjà tout ce qu'il faut.
Par ailleurs, il serait plus propre de placer ce script dans /usr/local/bin vu que ce script ne provient pas d'un paquet (=> /usr/local) et que ce n'est pas un binaire qui sert à administrer le système (=> .../sbin).
Bonne chance
Pour la configuration, le répertoire de log me paraît bizarre, assure-toi en tout cas qu'il existe (j'aurais plus vu /var/log/proftpd/exec.log). Si cette option marche, le fichier devrait être créé, tu peux lancer la commande suivante pour voir ce qui est écrit dedans au fil du temps :
tail -f /var/log/proftpd/exec.log
Ensuite, à première vu c'est correct, mais je te conseille d'ajouter dans /usr/sbin/intrusion.sh d'écrire dans un fichier (par exemple /tmp/toto) les paramètres que tu as reçu, mais si ça se trouve avec les logs tu auras déjà tout ce qu'il faut.
Par ailleurs, il serait plus propre de placer ce script dans /usr/local/bin vu que ce script ne provient pas d'un paquet (=> /usr/local) et que ce n'est pas un binaire qui sert à administrer le système (=> .../sbin).
Bonne chance
Merci encore tu m'aides bien et ca avance.
Proftp recompiler et réinstaller avec le mod_exec ca fonctionne j'ai fait des test. il ne me reste plus qu'à exploiter la variable %u que je n'arrive pas à récupérer dans mon script et je n'ai pas bien compris ton explication avec le fichier toto.txt tu peux détailler stp ?
Merci d'avance.
Proftp recompiler et réinstaller avec le mod_exec ca fonctionne j'ai fait des test. il ne me reste plus qu'à exploiter la variable %u que je n'arrive pas à récupérer dans mon script et je n'ai pas bien compris ton explication avec le fichier toto.txt tu peux détailler stp ?
Merci d'avance.
Pour commencer, je ne pense pas qu'il soit nécessaire de recompiler proftpd, en tout cas une installation via un paquet est plus propre (pour bénéficier des mises à jour).
Pour ton script, tu peux écrire les arguments reçus dans un fichier
Bonne chance
Pour ton script, tu peux écrire les arguments reçus dans un fichier
(mando@silk) (~) $ cat toto.sh #!/bin/sh echo $@ > /tmp/toto (mando@silk) (~) $ sh toto.sh arg1 arg2 arg3 (mando@silk) (~) $ cat /tmp/toto arg1 arg2 arg3
Bonne chance