Üdvözöllek, rendszergazda kolléga! Valószínűleg már te is tapasztaltad azt a frusztráló pillanatot, amikor a Pure-FTPd szervereden beállítottad a virtuális felhasználókat – minden zöldnek tűnt a konfiguráció során –, mégis, a bejelentkezés kudarcot vall, vagy ha sikerül is, a felhasználó nem látja a fájljait, esetleg rossz helyen landol. Ne aggódj, nem vagy egyedül! A virtuális felhasználók kezelése egy FTP szerveren számos előnnyel jár, de a beállítás során könnyedén bele lehet futni rejtett buktatókba. Ebben a cikkben mélyrehatóan tárgyaljuk, miért nem működhetnek a Pure-FTPd virtuális felhasználói, és lépésről lépésre bemutatjuk, hogyan javítsd ki a leggyakoribb problémákat. Készülj fel egy átfogó hibaelhárítási útmutatóra!
Miért érdemes Pure-FTPd virtuális felhasználókat használni?
Mielőtt belevetnénk magunkat a problémák bugyraiba, tisztázzuk, miért is érdemes egyáltalán virtuális felhasználókkal bajlódni. A hagyományos, rendszerbeli felhasználókkal szemben a virtuális felhasználók a következő előnyöket kínálják:
- Biztonság: A virtuális felhasználók nincsenek közvetlen kapcsolatban a rendszer felhasználói fiókjaival. Ez azt jelenti, hogy nem tudnak bejelentkezni az operációs rendszerbe, ami drasztikusan csökkenti a biztonsági kockázatokat.
- Elkülönítés: Minden virtuális felhasználóhoz saját otthoni könyvtár rendelhető, ami garantálja, hogy a felhasználók csak a nekik szánt területeket érhetik el, és nem férhetnek hozzá más felhasználók vagy a rendszer fájljaihoz.
- Egyszerűbb kezelés: Külön adatbázisban (például PureDB, MySQL, PostgreSQL, LDAP) tárolva a felhasználókat, sokkal könnyebb őket hozzáadni, módosítani vagy törölni, anélkül, hogy a rendszer felhasználói fiókjait kellene piszkálni.
- Rugalmasság: Lehetővé teszi több ezer FTP felhasználó kezelését anélkül, hogy terhelné a rendszer felhasználókezelőjét.
Látható, hogy a virtuális felhasználók beállítása rendkívül előnyös, különösen tárhelyszolgáltatók vagy nagyobb weboldalak esetén. De térjünk rá a lényegre: miért nem működik?
A „nem megy” tünetei – Felismerés és diagnózis
Amikor a Pure-FTPd virtuális felhasználókkal van gond, az általában az alábbi tünetekben nyilvánul meg:
- Bejelentkezési hiba: A leggyakoribb probléma, hogy a felhasználónevet és jelszót beírva a kliens „Authentication failed”, „Login incorrect” vagy hasonló hibaüzenetet ad vissza.
- Sikeres bejelentkezés, de üres könyvtár: A felhasználó bejut, de nem látja a fájljait, vagy egy üres könyvtár fogadja, holott fájloknak kellene lenniük.
- Rossz otthoni könyvtár: A felhasználó nem a számára kijelölt könyvtárban landol, hanem egy másikban, esetleg a szerver gyökérkönyvtárában.
- Engedélyezési hibák: A felhasználó bejut, látja a fájlokat, de nem tud feltölteni, törölni vagy módosítani.
- Lassú bejelentkezés, majd időtúllépés: Ez gyakran hálózati vagy DNS-sel kapcsolatos probléma, de lehet konfigurációs hiba is.
Miért nem működik? – A gyökér okok feltárása
A Pure-FTPd viszonylag robusztus, de a konfigurációja precizitást igényel. A legtöbb hiba valamilyen elírásból, hiányzó komponensből vagy rosszul beállított engedélyből fakad. Lássuk a leggyakoribb okokat:
1. Helytelen Pure-FTPd Konfiguráció (pure-ftpd.conf
)
A pure-ftpd.conf
fájl a szerver agya. Egyetlen rossz paraméter is okozhat működésképtelenséget. Kiemelten fontos a következő direktívák ellenőrzése:
VirtualUsers yes
: Ez a legfontosabb. Enélkül a Pure-FTPd nem is próbál virtuális felhasználókat hitelesíteni.PureDB /etc/pure-ftpd/pureftpd.pdb
: Ha PureDB-t használsz, győződj meg róla, hogy az útvonal helyes, és a fájl létezik, valamint a szerver felhasználója olvashatja.AuthMethod
: Ez határozza meg, milyen hitelesítési módszert használsz. Például:PureDB
,MySQL
,LDAP
. Ha több metódust is használsz, vesszővel válaszd el őket (pl.AuthMethod PureDB,MySQL
). Fontos a sorrend is, ha az első nem működik, megpróbálja a következőt.ChrootEveryone yes
: Nagyon ajánlott biztonsági okokból. Ez bezárja a felhasználót a saját otthoni könyvtárába. Ha ez nincs beállítva, vagy rosszul, a felhasználó „láthatja” a szerver más részeit, ami biztonsági rés. Viszont ha a chrootolt könyvtár nem rendelkezik megfelelő engedélyekkel, az is okozhat gondot (lásd lentebb).MinUID
: Ez a direktíva megadja a minimális UID-t, amivel egy felhasználó bejelentkezhet. A Pure-FTPd virtuális felhasználói egy rendszerbeli UID/GID párhoz „map”-elődnek. Győződj meg róla, hogy a megadott UID (általában egy dedikált `ftpuser` vagy `ftpgroup` nevű rendszerfelhasználó UID-je) nagyobb, mint aMinUID
értéke. Gyakori hiba, hogy ez a UID kisebb, mint a beállítottMinUID
(pl. 1000 vagy 500).NoAnonymous yes
: Ha nem akarsz anonim hozzáférést, ezt állítsdyes
-re. Ha véletlenülno
-n van, és az anonim felhasználó is aktív, az is zavart okozhat.
2. Virtuális Felhasználó Adatbázis Problémák (PureDB, SQL, LDAP)
A virtuális felhasználók adatait tároló adatbázis hibája az egyik leggyakoribb ok:
- PureDB:
- Nem létezik vagy nem elérhető a
pureftpd.pdb
fájl: Győződj meg róla, hogy a fájl aPureDB
direktívában megadott útvonalon található, és hogy a Pure-FTPd szerver folyamat felhasználója (általábanroot
vagypure-ftpd
) olvashatja azt. - Nem lett újraépítve: Miután hozzáadtál, módosítottál vagy töröltél egy virtuális felhasználót a
pure-pw
paranccsal, MINDIG futtatnod kell apure-pw mkdb
parancsot, hogy az adatbázis fájl frissüljön. Ezt sokan elfelejtik! - Helytelen felhasználó adatok: Ellenőrizd a
pure-pw list
vagypure-pw show <felhasználónév>
paranccsal, hogy a felhasználónév, jelszó, otthoni könyvtár és a hozzá rendelt rendszerbeli UID/GID helyesek-e.
- Nem létezik vagy nem elérhető a
- MySQL/PostgreSQL:
- Adatbázis kapcsolat hiba: Helytelen adatbázisnév, felhasználónév, jelszó, host vagy port. Ellenőrizd a
pure-ftpd.conf
fájlban aMySQLSocket
,MySQLServer
,MySQLUser
,MySQLPassword
,MySQLDatabase
direktívákat. - Helytelen SQL lekérdezés: A
MySQLCrypt
ésMySQLGetPW
(vagy hasonló) direktívákban megadott SQL lekérdezéseknek pontosan meg kell egyezniük az adatbázis sémájával. Ha a jelszó oszlop neve más, vagy a titkosítási algoritmus nem megfelelő, hibát fog adni. - Hiányzó PHP modulok/SQL kliens könyvtárak: Győződj meg róla, hogy a Pure-FTPd fordításakor, vagy a rendszeren telepítve vannak az adatbázis-kezelőhöz szükséges kliens könyvtárak (pl.
libmysqlclient-dev
).
- Adatbázis kapcsolat hiba: Helytelen adatbázisnév, felhasználónév, jelszó, host vagy port. Ellenőrizd a
- LDAP:
- Helytelen LDAP szerver adatok: Host, port, bind DN, jelszó.
- Helytelen keresési paraméterek: Base DN, filterek.
3. Fájlrendszer Engedélyek (Permissions)
Az engedélyek (permissions) a leggyakoribb és legfrusztrálóbb hibaforrások. Ne feledd, hogy a virtuális felhasználó egy SYSTEM UID/GID-hez van rendelve, így annak a felhasználónak kell rendelkeznie a megfelelő engedélyekkel a virtuális felhasználó otthoni könyvtárában!
- Otthoni könyvtár engedélyei:
- A virtuális felhasználó otthoni könyvtárának tulajdonosa általában a Pure-FTPd által használt dedikált rendszerfelhasználó (pl.
ftpuser
,ftpgroup
), VAGY aroot
, de úgy, hogy a csoportja a dedikált rendszerfelhasználó csoportja legyen. - Az otthoni könyvtár engedélyeinek általában
755
-nek vagy775
-nek kell lenniük (drwxr-xr-x
vagydrwxrwxr-x
). - A könyvtáron belüli fájlok és alkönyvtárak engedélyeinek is megfelelőnek kell lenniük. Fájlokra
644
(-rw-r--r--
) vagy664
(-rw-rw-r--
), könyvtárakra755
(drwxr-xr-x
) vagy775
(drwxrwxr-x
). - Gyakori hiba: a könyvtár tulajdonosa és csoportja
root:root
, és a felhasználó nem tud írni. Ilyenkor achown -R ftpuser:ftpgroup /path/to/user/home
parancs segíthet (azftpuser:ftpgroup
helyére behelyettesítve a tényleges rendszerfelhasználót és csoportot, amit a Pure-FTPd használ).
- A virtuális felhasználó otthoni könyvtárának tulajdonosa általában a Pure-FTPd által használt dedikált rendszerfelhasználó (pl.
- Chroot problémák: Ha a
ChrootEveryone yes
be van állítva, a felhasználó otthoni könyvtárának és annak minden szülőkönyvtárának, egészen a fájlrendszer gyökeréig, NEM lehet írható mások (world-writable) számára. Vagyis nem lehet777
engedélye! Ez kritikus biztonsági követelmény, és ha megsérted, a Pure-FTPd nem engedi be a felhasználót (vagy hibával kilép). Ellenőrizd achmod o-w /path/to/chroot/parent
paranccsal, ha valami777
-re van állítva.
4. SELinux vagy AppArmor
Ezek a biztonsági keretrendszerek a fájlrendszer-hozzáférést szabályozzák. Ha aktívak, és nincsenek megfelelően konfigurálva, letilthatják a Pure-FTPd hozzáférését a felhasználói könyvtárakhoz, még akkor is, ha az engedélyek jók.
- SELinux:
- Ellenőrizd az állapotát:
sestatus
. Haenforcing
, az okozhat problémát. - Ideiglenes letiltás tesztelésre:
setenforce 0
. Ha ezután működik az FTP, akkor az SELinux a ludas. - Megoldás: Helyes SELinux kontextus beállítása (pl.
semanage fcontext -a -t public_content_rw_t "/var/www/html(/.*)?"
ésrestorecon -R /var/www/html
), vagy egy FTP-vel kapcsolatos boolean engedélyezése (pl.setsebool -P allow_ftpd_full_access on
).
- Ellenőrizd az állapotát:
- AppArmor: Hasonlóan, az AppArmor profilok is korlátozhatják a hozzáférést. Ellenőrizd a logokat, hogy látod-e AppArmor-ral kapcsolatos „denied” üzeneteket.
5. Tűzfal (Firewall)
Bár alapvető hiba, néha elfelejtődik, hogy a tűzfal blokkolja a kapcsolatot.
- FTP vezérlő port (21/TCP): Győződj meg róla, hogy nyitva van.
- Passzív (PASV) porttartomány: Az FTP passzív módban véletlenszerű portokat használ adatátvitelre. A Pure-FTPd konfigurációjában meg kell adnod egy porttartományt (pl.
PassivePortRange 30000 35000
), és ezt a tartományt meg kell nyitnod a tűzfalon is. - Ellenőrizd a tűzfal szabályait:
sudo ufw status
(Ubuntu/Debian) vagysudo firewall-cmd --list-all
(CentOS/RHEL) vagysudo iptables -L
.
6. Hiányzó Rendszerfelhasználó vagy Helytelen UID/GID
Amint említettük, a Pure-FTPd virtuális felhasználói egy rendszerfelhasználóhoz és csoporthoz vannak rendelve. Győződj meg róla, hogy ez a rendszerfelhasználó (pl. ftpuser
vagy pureftp
) létezik a rendszeren, és annak UID-je és GID-je megfelel a Pure-FTPd konfigurációban (pl. MinUID
) és a pure-pw
parancsnál megadottaknak.
Hozd létre a felhasználót, ha még nincs: sudo groupadd ftpgroup
és sudo useradd -g ftpgroup -d /dev/null -s /sbin/nologin ftpuser
. A -d /dev/null
és -s /sbin/nologin
megakadályozza a bejelentkezést a rendszerbe, ami biztonsági szempontból fontos. Ezután a virtuális felhasználókat ehhez az ftpuser
-hez rendeled hozzá a pure-pw useradd
paranccsal.
Hogyan javítsd ki a hibát? – Lépésről lépésre hibaelhárítás
Most, hogy átnéztük a lehetséges okokat, lássuk, hogyan diagnosztizáld és javítsd ki őket rendszeresen:
1. Kezdd a logokkal!
A logok a legjobb barátaid a hibaelhárításban. A Pure-FTPd általában a rendszernaplókba ír.
Ellenőrizd a következő fájlokat:
/var/log/auth.log
(Debian/Ubuntu)/var/log/secure
(CentOS/RHEL)/var/log/syslog
Használj tail -f
parancsot egy külön terminálban, miközben próbálsz bejelentkezni az FTP klienssel. Keresd a „pure-ftpd” bejegyzéseket, és a „login failed”, „denied”, „permission denied” vagy „chroot” kulcsszavakat. Ezek a bejegyzések pontosan megmutathatják a hiba okát.
2. Ellenőrizd a Pure-FTPd folyamatot
Győződj meg róla, hogy a Pure-FTPd fut, és a megfelelő konfigurációs fájlt használja:
ps aux | grep pure-ftpd
Ez megmutatja a futó folyamatot és a parancssori argumentumait. Ha nem fut, indítsd el:
sudo systemctl start pure-ftpd
Vagy ha már fut, és konfigurációt változtattál:
sudo systemctl restart pure-ftpd
3. Alapos Pure-FTPd Konfiguráció (pure-ftpd.conf
) ellenőrzése
Nyisd meg a /etc/pure-ftpd/pure-ftpd.conf
fájlt (vagy ahol a disztribúciód tárolja) és ellenőrizd az összes fent említett direktívát. Különösen figyelj a VirtualUsers
, PureDB
(vagy más AuthMethod), AuthMethod
, ChrootEveryone
, MinUID
és PassivePortRange
beállításokra.
4. Virtuális Adatbázis Integritásának Ellenőrzése
PureDB esetén:
- Ellenőrizd a
pureftpd.pdb
fájl létezését és engedélyeit:ls -l /etc/pure-ftpd/pureftpd.pdb
A fájlnak léteznie kell, és a Pure-FTPd folyamat felhasználójának (általában root) olvasási joggal kell rendelkeznie.
- Listázd a felhasználókat és ellenőrizd az adatokat:
sudo pure-pw list
sudo pure-pw show <felhasználónév>
Győződj meg róla, hogy a felhasználónév, az otthoni könyvtár, az UID/GID és a jelszó helyes. Ha a jelszóval van gond, állítsd újra:
sudo pure-pw passwd <felhasználónév>
- NE FELEDD! Építsd újra az adatbázist: Minden alkalommal, amikor változtatsz egy virtuális felhasználón (hozzáadás, módosítás, törlés), újra kell építened a PureDB fájlt:
sudo pure-pw mkdb
Ezután indítsd újra a Pure-FTPd szolgáltatást.
SQL/LDAP esetén:
Ellenőrizd az adatbázis kapcsolatot és a lekérdezések helyességét a konfigurációs fájlban megadottak szerint. Próbálj manuálisan csatlakozni az adatbázishoz a megadott felhasználónévvel és jelszóval, és futtasd le a Pure-FTPd által használt lekérdezéseket.
5. Fájlrendszer Engedélyek és Tulajdonosi Jogok
Ez az egyik legtrükkösebb rész. Lépésről lépésre ellenőrizd:
- Dedikált FTP rendszerfelhasználó ellenőrzése:
id ftpuser
(vagy a te dedikált FTP felhasználód neve). Jegyezd fel az UID és GID értékeket, és hasonlítsd össze a
pure-ftpd.conf
-ban aMinUID
ésMinGID
beállításokkal. Ha nem létezik, hozd létre. - Otthoni könyvtár tulajdonosa és engedélyei:
ls -ld /path/to/user/home
Az otthoni könyvtár tulajdonosa legyen a dedikált FTP felhasználó (pl.
ftpuser
) és a csoportja a dedikált FTP csoport (pl.ftpgroup
). Az engedélyek legyenek755
(drwxr-xr-x
) vagy775
(drwxrwxr-x
). Ha szükséges, módosítsd:sudo chown ftpuser:ftpgroup /path/to/user/home
sudo chmod 755 /path/to/user/home
- Fájlok és alkönyvtárak engedélyei az otthoni könyvtáron belül:
ls -l /path/to/user/home
Győződj meg róla, hogy a fájlokra
644
vagy664
, a könyvtárakra755
vagy775
. Ha hibák vannak, rekurzívan módosíthatod:sudo find /path/to/user/home -type d -exec chmod 755 {} ;
sudo find /path/to/user/home -type f -exec chmod 644 {} ;
sudo chown -R ftpuser:ftpgroup /path/to/user/home
- Chroot ellenőrzés (ha
ChrootEveryone yes
):A felhasználó otthoni könyvtárának és az ANNA FELETTI összes könyvtárnak egészen a gyökérkönyvtárig (
/
) NEM LEHET írási joga mások (world-writable) számára. Pl. ha a könyvtár/var/www/felhasznalo1
, akkor ellenőrizd:ls -ld /var/www/felhasznalo1
ls -ld /var/www
ls -ld /var
Egyik sem mutathat
drwxrwxrwx
(777
) engedélyt, vagy olyat, ahol az „egyéb” (other) írási joggal rendelkezik. Ha igen, távolítsd el az „egyéb” írási jogot:sudo chmod o-w /path/to/problematic/directory
6. SELinux és AppArmor ellenőrzése
Ahogy fentebb említettük, ideiglenesen tiltsd le a SELinuxot (sudo setenforce 0
) vagy az AppArmort, és próbáld meg a bejelentkezést. Ha ez megoldja a problémát, akkor a biztonsági keretrendszer a ludas, és meg kell találnod a megfelelő konfigurációt vagy engedélyező szabályt, ahelyett, hogy véglegesen kikapcsolnád.
SELinux esetén a audit2allow -a
parancs segíthet generálni a hiányzó szabályokat az /var/log/audit/audit.log
fájlból.
7. Tűzfal beállítások
Győződj meg róla, hogy a 21-es port és a PassivePortRange
-ben beállított porttartomány nyitva van a tűzfalon. Például UFW esetén:
sudo ufw allow 21/tcp
sudo ufw allow 30000:35000/tcp
sudo ufw reload
8. Kiegészítő eszközök és tippek
pure-ftpwho
: Megmutatja az aktuálisan bejelentkezett felhasználókat. Hasznos ellenőrizni, hogy egyáltalán sikerül-e bejutni valahogy.pure-pw usermod <felhasználónév> -u <UID> -g <GID>
: Ha a virtuális felhasználó rossz rendszer UID/GID-hez van rendelve. Ne felejtsd el utána apure-pw mkdb
-t!- Tesztelj egyszerű klienssel: Ha lehetséges, teszteld a bejelentkezést egy egyszerű FTP klienssel (pl. parancssori
ftp
programmal vagy FileZilla-val), hogy kizárd a komplexebb kliensbeállításokból adódó hibákat.
Gyakori tévhitek és buktatók
- A Pure-FTPd virtuális felhasználó egyenlő a rendszerfelhasználóval: NEM! A virtuális felhasználó egy adatbázis-bejegyzés, ami EGY rendszerfelhasználó (pl.
ftpuser
) jogait és engedélyeit veszi fel. Ezért kritikus, hogy ez a rendszerfelhasználó megfelelően legyen beállítva. - Csak a jelszó a gond: Nagyon sok esetben az engedélyek vagy a konfiguráció a ludas, nem a jelszó. Mindig ellenőrizd a logokat, mielőtt újraállítanád a jelszót!
- A
pure-pw mkdb
elfelejtése: Ez a leggyakoribb hiba. A PureDB fájl nem frissül automatikusan!
Összegzés és Jótanácsok
A Pure-FTPd virtuális felhasználók beállítása néha kihívást jelenthet, de a türelemmel és a megfelelő hibaelhárítási lépésekkel szinte minden probléma orvosolható. A legfontosabb, hogy mindig kezdd a logok ellenőrzésével, légy szisztematikus, és ellenőrizz minden lehetséges pontot (konfiguráció, adatbázis, engedélyek, biztonsági rétegek, tűzfal).
Amikor legközelebb belefutsz a „nem megy” problémába, ne ess pánikba! Vedd elő ezt az útmutatót, és haladj végig a lépéseken. Nagy valószínűséggel hamarosan újra száguldani fognak a bitek a szervereden!