Installer un serveur FTP et le mettre en service NT Pré-requis : Télécharger les logiciels suivants Apache Server FTP le serveur FTP de la communauté Apache JavaService-2.0.10 Utilitaire permettant d’installer un programme Java en service NT FileZilla client FTPgratuit Editer ce script install-service-nt.bat (voir FAQ de la doc sur ftp-server) @echo off SET SET SET SET FTPSERVER_HOME= C:\D\Java\ftpserver-dev FTPSERVER_LIB=%FTPSERVER_HOME%\common\lib FTPSERVER_CLASSES=%FTPSERVER_HOME%\common\classes JAVA_HOME= C:\D\Java\j2sdk1.4.2_12 SET SET SET SET SET SET SERVER_CLASSPATH=%JAVA_HOME%\lib\tools.jar SERVER_CLASSPATH=%SERVER_CLASSPATH%;%FTPSERVER_CLASSES% SERVER_CLASSPATH=%SERVER_CLASSPATH%;%FTPSERVER_LIB%\commons-logging-1.0.3.jar SERVER_CLASSPATH=%SERVER_CLASSPATH%;%FTPSERVER_LIB%\log4j-1.2.12.jar SERVER_CLASSPATH=%SERVER_CLASSPATH%;%FTPSERVER_LIB%\ftpserver-dev.jar SERVER_CLASSPATH=%SERVER_CLASSPATH%;%FTPSERVER_HOME%\target\classes SET SET SET SET SET MAIN_CLASS=org.apache.ftpserver.commandline.CommandLine JVM_DLL=%JAVA_HOME%\jre\bin\server\jvm.dll CONF_XML=%FTPSERVER_HOME%/res/conf/ftpd.xml STDOUT_LOG=%FTPSERVER_HOME%\stdout.log STDERR_LOG=%FTPSERVER_HOME%\stderr.log JavaService.exe -uninstall ApacheFtpServer JavaService.exe -install ApacheFtpServer %JVM_DLL% -Djava.class.path=%SERVER_CLASSPATH% -start %MAIN_CLASS% -params -xml %CONF_XML% -out %STDOUT_LOG% -err %STDERR_LOG% -current %FTPSERVER_HOME% En n’oubliant de configurer les variables JAVA_HOME et FTPSERVER_HOME Dézipper l’api JavaService-2.0.10 et copier JavaService.exe dans le répertoire %FTPSERVER_HOME% Exécuter le install-service-nt.bat Aller dans Gestion de l’ordinateur > Services, la ligne du service ApacheFtpServer a été ajouté si tout a bien été exécuté. Démarrer le service. Le fichier de configuration utilisé par défaut par ftp-server est res/conf/ftpd.xml Pour configurer le serveur, éditer le fichier ftpd.xml Voici un exemple de configuration : <?xml version="1.0"?> <!-- XML file based configuration --> <config> <!-- Standard socket factory. If you want to support explicit secure connection, please specify the ssl block <socket-factory> <class>org.apache.ftpserver.socketfactory.FtpSocketFactory</class> <address>localhost</address> <port>21</port> <ssl> <keystore-file>./res/.keystore</keystore-file> <keystore-password>password</keystore-password> <keystore-type>JKS</keystore-type> <keystore-algorithm>SunX509</keystore-algorithm> <ssl-protocol>TLS</ssl-protocol> <client-authentication>false</client-authentication> <key-password>password</key-password> </ssl> </socket-factory> --> <!-- Secure server socket factory. In this case you have to specify the ssl block <socket-factory> <class>org.apache.ftpserver.socketfactory.SSLFtpSocketFactory</class> <address>localhost</address> <port>21</port> <ssl> <keystore-file>./res/.keystore</keystore-file> <keystore-password>password</keystore-password> <keystore-type>JKS</keystore-type> <keystore-algorithm>SunX509</keystore-algorithm> <ssl-protocol>TLS</ssl-protocol> <client-authentication>false</client-authentication> <key-password>password</key-password> </ssl> </socket-factory> --> <!-- Data connection configuration. If you want to support secure data connection, please specify the ssl block. <data-connection> <idle-time>10</idle-time> <active> <enable>true</enable> <local-address>localhost<local-address> <local-port>20</local-port> <ip-check>false<ip-check> </active> <passive> <address>localhost</address> <ports>0</ports> </passive> <ssl> <keystore-file>./res/.keystore</keystore-file> <keystore-password>password</keystore-password> <keystore-type>JKS</keystore-type> <keystore-algorithm>SunX509</keystore-algorithm> <ssl-protocol>TLS</ssl-protocol> <client-authentication>false</client-authentication> <key-password>password</key-password> </ssl> </data-connection> --> <!-- Standard users admin and anonymous will be created by default. --> <create-default-user>false</create-default-user> <!-- Ftp message configuration block <message> <class>org.apache.ftpserver.message.MessageResourceImpl</class> <custom-message-dir>./res</custom-message-file> <languages>en,zh-tw</languages> </message> --> <!-- Connection manager configuration block <connection-manager> <max-connection>20</max-connection> <max-login>10</max-login> <anonymous-login-enabled>true</anonymous-login-enabled> <max-anonymous-login>10</max-anonymous-login> <default-idle-time>60</default-idle-time> <timeout-poll-inverval>60</timeout-poll-inverval> </connection-manager> --> <!-- Command factory configuration block <command-factory> <command> <command-name>fully-qualified-command-class-name</command-name> </command> </command-factory> --> <!-- IP restrictor configuration block <ip-restrictor> <class>org.apache.ftpserver.iprestrictor.FileIpRestrictor</class> <file>./res/ip.gen</file> </ip-restrictor> --> <!-- Default properties file based user manager configuration block --> <user-manager> <class>org.apache.ftpserver.usermanager.PropertiesUserManager</class> <admin>admin</admin> <prop-file>./res/user.gen</prop-file> <prop-password-encrypt>false</prop-password-encrypt> </user-manager> <!-- Database based user manager configuration <user-manager> <class>org.apache.ftpserver.usermanager.DbUserManager</class> <admin>admin</admin> <jdbc-driver>org.gjt.mm.mysql.Driver</jdbc-driver> <jdbc-url>jdbc:mysql://localhost:3306/data</jdbc-url> <jdbc-user>user</jdbc-user> <jdbc-password>password</jdbc-password> <sql-user-insert>INSERT INTO FTP_USER (uid, userpassword, homedirectory, enableflag, writepermission, idletime, uploadrate, downloadrate) VALUES ('{uid}', '{userpassword}', '{homedirectory}', '{enableflag}', '{writepermission}', {idletime}, {uploadrate}, {downloadrate})</sql-user-insert> <sql-user-update>UPDATE FTP_USER SET userpassword='{userpassword}',homedirectory='{homedirectory}',enableflag='{enableflag}',writep ermission='{writepermission}',idletime={idletime},uploadrate={uploadrate},downloadrate={downlo adrate} WHERE uid='{uid}'</sql-user-update> <sql-user-delete>DELETE FROM FTP_USER WHERE uid = '{uid}'</sql-user-delete> <sql-user-select>SELECT uid, userpassword, homedirectory, enableflag, writepermission, idletime, uploadrate, downloadrate FROM FTP_USER WHERE uid = '{uid}'</sql-user-select> <sql-user-select-all>SELECT uid FROM FTP_USER ORDER BY uid</sql-user-select-all> <sql-user-authenticate>SELECT uid from FTP_USER WHERE uid='{uid}' AND userpassword='{userpassword}'</sql-user-authenticate> <sql-user-admin>SELECT uid FROM FTP_USER WHERE uid='{uid}' AND uid='admin'</sql-useradmin> </user-manager> --> <!-- LDAP based user manager <user-manager> <class>org.apache.ftpserver.usermanager.LdapUserManager</class> <admin>admin</admin> <ldap-url>ldap://localhost:389</ldap-url> <ldap-admin-dn>cn=Manager,dc=apache,dc=org</ldap-admin-dn> <ldap-admin-password>secret</ldap-admin-password> <ldap-authentication>simple</ldap-authentication> <ldap-user-base-dn>dc=apache,dc=org</ldap-user-base-dn> </user-manager> --> <!-- file system manager configuration block <file-system-manager> <class>org.apache.ftpserver.filesystem.NativeFileSystemManager</class> <create-home>false</create-home> </file-system-manager> --> <!-- All ftplets <ftplets>f1,f2</ftplets> --> <!-- Ftplet configuration <ftplet> <f1> <class>org.apache.ftpserver.ftplet.Ftplet1</class> <param>value1</param> </f1> <f2> <class>org.apache.ftpserver.ftplet.Ftplet2</class> <param>value2</param> </f2> </ftplet> --> </config> Comme on peut le constater on peut configurer le serveur pour faire du ssl, du cryptage de password, gérer les utilisateurs ayant accès au FTP par base de données, ou LDAP, faire de la restriction d’IP. Ajout des utilisateurs se fait grâce à ftp_ui.bat ou éditer user.gen Le répertoire home du serveur FTP est res/home. Déposer les fichiers que vous voulez mettre à disposition Redémarrer le serveur Tester le serveur FTP avec FileZilla en renseignant le hostname votre login et mot de passe que vous avez choisi lors de la gestion des utilisateurs. Et voilà.