Ci-dessous, les différences entre deux révisions de la page.
— |
serveurftp_quiestconnecte [2007/12/15 09:48] (Version actuelle) tyrtamos créée |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== Qui est connecté à mon serveur ftp? ====== | ||
+ | |||
+ | [testé sur vsftp installé sur debian etch] | ||
+ | |||
+ | [origine: une discussion sur le forum: [[http://forum.debian-fr.org/viewtopic.php?t=9493&start=0]] ] | ||
+ | |||
+ | **//EN CONSTRUCTION//** | ||
+ | |||
+ | On utilise la ligne suivante (en console sous root): | ||
+ | |||
+ | # lsof -i :21 -u^root -u^nobody | mawk '{print $3 " "$2" "$8}' | sort -u | | grep -v 'USER' | ||
+ | |||
+ | |||
+ | Cela donne si les utilisateurs "tyrtamos" et "jeanpaul" sont connectés à partir de la machine "192.168.0.99": | ||
+ | |||
+ | jeanpaul 5103 192.168.0.215:ftp->192.168.0.99:1105 | ||
+ | tyrtamos 5089 192.168.0.215:ftp->192.168.0.99:1103 | ||
+ | |||
+ | Commentaires: | ||
+ | |||
+ | * c'est "mawk" qu'il faut prendre (remplace awk) | ||
+ | |||
+ | * le "-u^root" évite la ligne correspondant au processus d'écoute du serveur | ||
+ | |||
+ | * le "-u^nobody" évite toutes les lignes correspondant aux processus d'autorisation de chaque connexion | ||
+ | |||
+ | * le "$3" donne l'identifiant, le "$2" donne le pid et le "$8" donne l'IP appelante | ||
+ | |||
+ | * le "sort -u" fait le tri, mais permet surtout de supprimer les doublons de la liste obtenue | ||
+ | |||
+ | * le "grep" permet d'éviter la ligne qui correspond aux libellés des colonnes fournis par lsof (sinon, on a une ligne: "USER PID NODE") | ||
+ | |||
+ | Amélioration possible: il est inutile de répéter le nom de la machine serveur. Il faudrait que la colonne: | ||
+ | |||
+ | nestidebian.local:ftp->192.168.0.99:1103 | ||
+ | |||
+ | devienne: | ||
+ | |||
+ | 192.168.0.99:1103 | ||
+ | |||
+ | On devrait pouvoir faire ça par une expression régulière. | ||
+ | |||
+ | La commande est assez lente à cause de la tentative de convertion adresse IP -> nom de domaine. Si on ne veut que les adresses IP, on utilise l'option "-n" de "lsof", et la réponse est très rapide. | ||
+ | |||
+ | Avec tout cela, on a bien la liste demandée: les utilisateurs connectés à un moment donné au serveur ftp, avec l'IP de leur machine. | ||
+ | |||
+ | Mais je ne sais pas ce que ça donne si on configure vsftp avec des utilisateurs virtuels. Dans mes essais, mon vsftp est configuré avec les utilisateurs ayant un compte linux sur la machine qui a le serveur ftp. | ||
+ | |||
+ | En complétant par une recherche dans le fichier log, on devrait pouvoir dire depuis combien de temps la connexion est active, et donner la liste des fichiers téléchargés (dans les 2 sens). | ||