jednoduchý FTP server - proftpd

FTP server server pokud možno NE!

Začal bych zvláštně tím, že bych doporučil ftp server jednoduše nepoužívat. Použijte raději sftp nebo scp.

Pokud vám jde jen o to, si nahrát několik souborů na server, můžete bez jakékoli instalace čehokoli použít scp nebo winscp. Pokud nechcete případného uživatele pustit jen do některých adresářů a ne do celého systému, přečtěte si tento můj příspěvek na fóru. http://forum.odorik.cz/viewtopic.php?f=12&t=234&p=1137 .

Proč ftp ne? Jde o to, že ftp je zastaralý, nebezpečný a komplikovaný protokol. Komplikovaný je především díky jeho vícero módům a používání více různých portů. Nebezpečný je, protože přenáší nešifrované heslo po síti. A zastaralý je, protože je z roku 1985.

Občas se ale stane, že použití ftp je stále cesta nejmenšího odporu. V našem případě je důvod multifunkční zařízení,OKI MB460, které v režimu scanner dovede naskenované obrázky ukládat rovnou do adresáře ftp serveru. Ve vašem případě může být důvod např. vaši spolupracovníci (třeba grafici), kteří jinou manipulaci se soubory než ftp nezvládají. Ostatně ftp server můžete zapnout jen na dobu nutnou k nahrání souborů. Pokud navíc dáte grafikovi přístup jen do jeho adresáře s obrázky, které stejně budou později volně přístupné na internetu, nejedná se ani o žádné bezpečnostní riziko.

Také bych chtěl konstatovat, že nejsem žádný odborník na FTP servery. Prostě mi tady něco jednoduchého funguje a tak o tom i píši. Pokud víte o nějakém jiném nebo jednodušším postupu, budu rád pokud se podělíte.

Jdeme na to

Postupoval jsem podle návodu http://giantdorks.org/alain/ftp-server-with-virtual-users-on-debian-lenny/ a bez potíží vše funguje na našem pracovním počítači s debianem squeeze.

První věcí, kterou se návod zabývá, je zavádění modulu do jádra. Myslím, že k tomu není důvod a tak jsem tento krok vynechal. Ostatně na 4smart ani žádné další moduly do jádra zavádět nemůžete.

instalace ftp serveru:

aptitude install proftpd

Vytvoříme dva uživatele user1 a user2. Ftp adresáře budou mít cestu /var/ftp/ .

# nejdříve vytvořím adresáře
mkdir -p /var/ftp/user{1,2}/{read,write}
# nastavím vhodná práva
chown -R proftpd:nogroup /var/ftp/
# zjist user id a group id
grep ftp /etc/passwd
#proftpd:x:111:65534::/var/run/proftpd:/bin/false
# zde se dozvíme user id (uid) a group id gid, což doplníme do následujícího příkazu
ftpasswd --passwd --name=user1 --uid=111 --gid=65534 --home=/var/ftp/user1 --shell=/bin/false --file=/etc/proftpd/passwd
# budeme vyzvání pro zadání hesla
ftpasswd --passwd --name=user2 --uid=111 --gid=65534 --home=/var/ftp/user1 --shell=/bin/false --file=/etc/proftpd/passwd

Na konec souboru /etc/proftpd/proftpd.conf přidám následující.

AuthUserFile            /etc/proftpd/passwd
DefaultRoot             ~
RequireValidShell       off
 
# VALID LOGINS
<Limit LOGIN>
   AllowUser user1
   AllowUser user2
   DenyALL
</Limit>
 
# USER 1
<Directory /var/ftp/user1/read>
    <Limit ALL>
        DenyAll
    </Limit>
    <Limit DIRS READ>
        AllowUser user1
    </Limit>
</Directory>
<Directory /var/ftp/user1/write>
    <Limit ALL>
        DenyAll
    </Limit>
    <Limit DIRS READ WRITE>
        AllowUser user1
    </Limit>
</Directory>
 
# USER 2
<Directory /var/ftp/user2/read>
    <Limit ALL>
        DenyAll
    </Limit>
    <Limit DIRS READ>
        AllowUser user2
    </Limit>
</Directory>
<Directory /var/ftp/user2/write>
    <Limit ALL>
        DenyAll
    </Limit>
    <Limit DIRS READ WRITE>
        AllowUser user2
    </Limit>
</Directory>

Nyní můžeme ftp server spustit

/etc/init.d/proftpd start

Malá odbočka - chyba, která se vás nejspíš nebude týkat

V mém případě jsem dostal zprávu, že start selhal

root@brno-ng:~# /etc/init.d/proftpd start
Starting ftp server: proftpd - warning: unable to determine IP address of 'brno-ng'
 - error: no valid servers configured
 - Fatal: error processing configuration file '/etc/proftpd/proftpd.conf'
 failed!
root@brno-ng:~#

musel jsem přidat ještě do /etc/hosts řádek.

192.168.0.1     brno-ng

Kde brno-ng je můj hostname

Nastavíme/vypneme automatické spouštění po startu

Nastavit, jestli si ftp server přejeme spouštět automaticky po startu systému, můžeme pomocí příkazu:

rcconf

Automaticky se startují démoni, u kterých je hvězdička. Hvězdička se ze zapíná a vypíná mezerníkem.

Pokud jej nemáte, nainstalovat jej lze pomocí

aptitude install rcconf

Jak to otestovat?

root@brno-ng:~# ftp localhost
Connected to localhost.
220 ProFTPD 1.3.3a Server (Debian) [::1]
Name (localhost:root): user1
331 Password required for user1
Password:
230 User user1 logged in
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 EPRT command successful
150 Opening ASCII mode data connection for file list
drwxr-xr-x   2 user1    nogroup      4096 Jan 23 16:28 read
drwxrwxrwx   3 user1    nogroup      4096 Jan 24 13:26 write
226 Transfer complete
ftp> exit
221 Goodbye.
root@brno-ng:~# 

zde vidíte příkazovou řádku. Pomocí programu ftp (klient) (možná musíte nejdříve nainstalovat pomocí aptitude install ftp) jsem se přihlásil na localhost. Možné je též zadat IP adresu stroje místo localhost. Jak je vidět, byl jsem vyznám na Name (zadal jsem user1) a heslo.

Dále jsem provedl příkaz ls, což mi vypsalo obsah kořenového adresář. Je vidět, že obsahuje podadresáře read a write tak, jak jsme je vytvořili výše. Z programu ftp odejdu příkazem exit.

 
ftp_server_debian.txt · Poslední úprava: 2015/08/20 16:01 autor: misa