2012. október 2., kedd

FTP szerver telepítése

Izgalmas rész következik, NEM csomagból fogunk telepíteni, hanem forrásból, és még csomagot is készítünk belőle. Miért is? Mert nem találtam a repóban a pureftpd-t, és én azt akarom használni. Szeretem, mert egyszerű, nagyon kevés memória, biztonsági gondom még sosem volt, szóval ideális. De az Arch arm-os repójában nincs, úgyhogy lefordítjuk. Próbáltam a SAMBA-t is, ezzel windows alatt könnyebb dolgunk van, de a sebessége sem éri el az ftp-jét (piszkálás nélkül), és jóval több erőforrást használ, mint egy ilyen kis progi. Nézzük.

Szükségünk lesz a base-devel csomagra, ez felteszi a forrásból fordítás és a csomagkészítéshez szükséges programokat. Telepítsük:
pacman -S base-devel
Most készítsünk egy egy olyan PKGBUILD fájlt, ami letölti, kicsomagolja, csomagot csinál és feltelepíti a PureFTPd-t. Készítsünk egy könyvtárat mondjuk "pure-ftpd" könyvtárat, (valamint a pkg és az src könyvtárakat is) lépjünk be, és hozzuk létre a fájlt:
mkdir pure-ftpd && cd pure-ftpd && mkdir {src,pkg} && vim PKGBUILD
Valami ilyesmit írjunk bele:
# Maintainer: mortein79 <mortein79@gmail.com>

pkgname=pure-ftpd
pkgver=1.0.36
pkgrel=1
pkgdesc="PureFTPd for ARM platform"
arch=('arm')
url="http://www.pureftpd.org/"
license=('custom')
depends=('openssl')
backup=('etc/pure-ftpd.conf')
source=("ftp://pureftpd.org/pub/${pkgname}/releases/${pkgname}-${pkgver}.tar.bz2")

build() {
        cd ${srcdir}/${pkgname}-${pkgver}
        ./configure --prefix=/usr \
           --with-puredb \
           --with-ftpwho \
           --with-altlog \
           --with-tls    \
           --with-rfc2640

        make
}

package() {
        cd ${srcdir}/${pkgname}-${pkgver}
        make DESTDIR=${pkgdir} install
        install -Dm755 configuration-file/pure-config.pl ${pkgdir}/usr/sbin/pure-config.pl

        install -Dm644 configuration-file/pure-ftpd.conf ${pkgdir}/etc/pure-ftpd.conf

        install -Dm644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
}
md5sums=('7899c75c1fed7dbad0352eb31080e066')
Mit is mondhatnék még. Mentsük el, és kész. A build-nál látni hogy milyen paraméterekkel fordítjuk, itt nagyon fontos a "--with-rfc2640", ha ezt kihagyjuk nem lesz UTF-8 támogatás, az pedig ékezetes fájl/könyvtár neveknél probléma.  Nem kapcsoltam be a mysql-backendet, nem hiszem hogy szükség lenne rá. A legvégén az az md5sum az 1.0.36-osé, ha más verziót akarunk, akkor értelemszerűen azét kell beleírni. Futtassuk/telepítsük is fel:
makepkg -i
Erre szépen letölti, kicsomagolja, stb., elvileg minden rendben lesz.

De ezzel nem vagyunk kész, fent van, de be kellene állítani, és meg kellene oldani hogy elinduljon bootoláskor. A konfiguráláshoz szerkesszük a /etc/pure-ftpd.conf fájlt
sudo vim /etc/pure-ftpd.conf
Az enyém, kicsit kitakarítva így néz ki:
ChrootEveryone              yes   # hogy senki ne tudjon kilépni a home-jából
BrokenClientsCompatibility  no
MaxClientsNumber            50
Daemonize                   yes    # így kényelmesebb
MaxClientsPerIP             8
VerboseLog                  no
DisplayDotFiles             yes
AnonymousOnly               no
NoAnonymous                 no
SyslogFacility              ftp
DontResolve                 yes
MaxIdleTime                 15
PureDB                        /etc/pureftpd.pdb
LimitRecursion              10000 8
AnonymousCanCreateDirs      no
MaxLoad                     4
AntiWarez                   yes
Umask                       133:022
MinUID                      100
AllowUserFXP                no
AllowAnonymousFXP           no
ProhibitDotFilesWrite       no
ProhibitDotFilesRead        no
AutoRename                  no
AnonymousCantUpload         no
MaxDiskUsage               99
CustomerProof              yes
FileSystemCharset       utf8    # ez a két sor az UTF-8 miatt
ClientCharset           utf8        # ez a két sor az UTF-8 miatt

A legtöbb sor egyértelmű, párhoz fűztem csak megjegyzést. Mentsük el, nézzük az automatikus indulást. Ehhez egy systemd service fájlt kell készítenünk. Tehát, hozzuk létre a megfelelő helyen és néven:
sudo vim /etc/systemd/system/pure-ftpd.service
A tartalma legyen ilyesmi:
[Unit]
Description=Pure-FTPd FTP server
After=syslog.target network.target

[Service]
Type=forking
PIDFile=/var/run/pure-ftpd.pid
ExecStart=/usr/sbin/pure-config.pl /etc/pure-ftpd.conf --daemonize

[Install]
WantedBy=multi-user.target

Mentsük, kilépés. Hozzuk létre a useradatbázist, és a virtuális usereket. Ilyenkor először létrehozunk egy "sima" user-t, akihez kapcsolódnak a virtuális userek.
sudo useradd -g ftp -d /dev/null -s /etc raspiftp
Most létrejött a "raspiftp" user, akinek a devnull a home-ja, és az ftp csoportba tartozik. Többet nem is várunk el tőle. Hozzunk hát létre ftp-felhasználót, akivel majd ki-be lépegetünk.
sudo pure-pw useradd baltazar -u raspiftp -d /STORAGE
Most jól létrejött a "baltazar" nevű ftp-user, akinek a /STORAGE a home-ja. Pure-pw-vel végzett minden módosítás után el kell menteni az adatbázist a
sudo pure-pw mkdb
paranccsal. (Az adatbázis egy fájl, amit az előbb a konfigban a PureDB opciónál adtunk meg.) Opsz, baltazárnak nem hoztunk létre passwordot. Adjunk neki:
sudo pure-pw passwd baltazar
Ha megvan, (kétszer meg fogja kérdezni, nem íródik ki), mentsünk újra:
sudo pure-pw mkdb
Meg is vagyunk a userrel. Ha ellenőrízni akarjuk a felhasználó beállításait, kérdezzük csak le:
sudo pure-pw show baltazar
Ha minden ok, teszteljük le, indítsuk el az ftp-szervert:
sudo systemctl start pure-ftpd
Most próbáljunk meg belépni valami ftp-programmal, sikerülnie kell. ha mindent rendben találunk, állítsuk be hogy minden rendszerindításnál induljon el a pureftpd:
sudo systemctl enable pure-ftpd

Nem tértem kis sok érdekes dologra, TLS-t sem állítottunk be, és a portot is hagytuk a 21-esen, hogy csak pár apróságot említsek. Ezek megtalálhatóak a pure doksijában, a weboldalán. Olyan egyszerű az egész, hogy szégyellem ezt a postot... ;)

7 megjegyzés:

  1. Nagyon jó lett az írásod,érthető,egyszerűen szuper!
    Csak így tovább!
    Szeva

    VálaszTörlés
    Válaszok
    1. Köszi, igyekszem. Mostanában kicsit el vagyok ásva melóval, de próbálom nem hanyagolni a blogot sem.

      Törlés
  2. szia, van arra valami tipped, hogy ftp -n keresztül miért csak 2mb /sec -el tudok írni a vinyóra? olvasás kb 6-7mb/sec. Usb -s vinyó, ntfs.

    VálaszTörlés
    Válaszok
    1. Nem hiszem hogy köze van az ftp-hez. Most néztem, nekem még a 256 Mb-os modell B-m van, húzva sincs, de 7-8 Mb-al írok, igaz, xfs-re. Szerintem ntfs-gebasz. Csatolásnál próbáld meg a "noatime"-ot, hátha segít. PL.:

      mount -t ntfs -o noatime,gid=users /dev/sdx /media/cucc

      Törlés
    2. Így van, próbáltam mount.ntfs és mount.ntfs-3g -vel is de sajnos nincs jelentős javulás.

      fstab:/dev/disk/by-uuid/ /storage ntfs-3g noatime 0 0

      dd-vel tesztelve ezt az eredményt kapom:
      [root@pi /]# dd if=/dev/zero of=/storage/test bs=8k count=256k
      ^C4009+0 beolvasott rekord
      4009+0 kiírt rekord
      32841728 bájt (33 MB) másolva, 12,8221 mp, 2,6 MB/s

      esetleg valami ötlet azon kívül, hogy másik fájlrendszer?:)

      Törlés
    3. :( Nem sok jóval biztathatlak. Feltúrtam a netet én is, de úgy látom, hogy ténylegesen az NTFS a probléma oka. Vagyis inkább a linux. Vagyis a linux ntfs-írás implementációja. Vagy inkább az, hogy mindezek arm processzoron. Akárhogy is, egy ilyen végkövetkeztetés akadt a kezembe:

      "NTFS + write + arm platform = horrible"

      Sajnos, ebből az egyenletből egyedül a fájlrendszer cserélhető. Nem igazán tudok mit ajánlani, ha komoly növekedést akarsz sebességben. Ha beállítasz NFS-t, talán kicsit gyorsabb lesz, de nem sokkal. (és cserébe megkapod az NFS-es extra szívást: a leszakadó fáljrendszer hangout-ot)

      Valószínűleg a proci nem bírja az NTFS-íráshoz a számolgatást. Desktopon, hordozható NTFS-es vinyóra 20-25Mb-al írok, arch linux alatt, ntfs-3g-vel. Ugyanerre ha rpire rakom, hasonló az eredmény mint a Te tesztedben.

      Gondolom, ha le lehetne cserélni az NTFS-t, már lecserélted volna. Így csak jó szerencsét kívánhatok, meg Boldog Karácsonyt :)

      Törlés