User local et server ftp [Résolu/Fermé]

Signaler
Messages postés
16
Date d'inscription
vendredi 14 septembre 2012
Statut
Membre
Dernière intervention
27 mai 2013
-
Messages postés
29801
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
12 mai 2021
-
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.

9 réponses

Messages postés
29801
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
12 mai 2021
7 090
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
Messages postés
16
Date d'inscription
vendredi 14 septembre 2012
Statut
Membre
Dernière intervention
27 mai 2013

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 ?
Messages postés
29801
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
12 mai 2021
7 090
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 :

service proftpd restart
/etc/init.d/proftpd restart


Bonne chance
Messages postés
16
Date d'inscription
vendredi 14 septembre 2012
Statut
Membre
Dernière intervention
27 mai 2013

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.
Messages postés
29801
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
12 mai 2021
7 090
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 :

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
Messages postés
16
Date d'inscription
vendredi 14 septembre 2012
Statut
Membre
Dernière intervention
27 mai 2013

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.
Messages postés
29801
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
12 mai 2021
7 090
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

(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
Messages postés
16
Date d'inscription
vendredi 14 septembre 2012
Statut
Membre
Dernière intervention
27 mai 2013

Bonjour,

Je n'ai pas trouvé de paquet tout prêt pour CentOs 5.8 de proftpd avec mod_exec dedans, ou bien j'ai mal cherché ce qui est possible aussi.

J'ai testé ton bout de code et tout fonctionne très bien, je t'en remercie.

Bonne journée.
Messages postés
29801
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
12 mai 2021
7 090
Parfait, bonne continuation !