SKazas (ICQ 441601224)
FTP serveris Jūsų kompiuteryje su Proftpd
Įžanga
Šis straipsnis padės paleisti FTP serverį su vienu virtualiu vartotoju su galimybe "uploadinti" ir kitu vietiniu sistemeniu vartotoju (kuriuo Jūs paprastai prisijungiate). Juos pavadinsime atitinkamai "virtualusis" ir "tikrasis". Esant poreikiui, galima labai lengvai pridėti dar daugiau vartotojų, tiek virtualių, tiek tikrųjų.
Eiga
Diegimas
Priklausomai nuo Jūsų naudojamos distribucijos, diegimas skirsis. Bet kurioje distribucijoje Jūs turite įdiegti proftpd programą. Keletas pavyzdžių: ArchLinux:
sudo pacman -Sy proftpd
Diegimą sudaro vieno paketo paprasčiausias įdiegimas, todėl ties šiuo klausimu daugiau neapsitosime.
Nustatymai
Pradžioje sukuriame "netikrą" shell'ą, paredaguodami bylą /etc/shells:
sudo nano /etc/shells
ir įterpdami į šią bylą eilutę (jei dar nėra):
/bin/false
Toliau viskas šiek tiek sudėtingiau. Nustatymus išskiriame į dvi dalis: vartotojų su jų katalogais, ir serverio nustatymai.
Vartotojų nustatymai
Vartotojų nustatymus taip pat išskaldome į dvi dalis: virtualusis ir tikrasis vartotojai.
Virtualaus vartotojo nustatymai
Katalogai
Sukuriame bendrajį katalogą /ftp, kuriame bus visų vartotojų bylos::
cd / sudo mkdir ftp
Jame sukuriame virtualiajam vartotojui /ftp/ftp-shared bendrąjį katalogą ir du pakatalogius: parsiuntimui ir išsiuntimui:
sudo mkdir /ftp/ftp-shared cd /ftp/ftp-shared sudo mkdir download sudo mkdir upload
Nustatome naujai sukurtų katalogų reikalingas teises:
cd /ftp sudo chmod 755 ftp-shared cd ftp-shared sudo chmod 755 download sudo chmod 777 upload
"Download" katalogas dabar yra tuščias, ir norint dalintis bylomis, reiktų padaryti jų kopijas į katalogą /ftp/ftp-share/download. Tai užima laiko ir vietos kietajame diske. Kad to išvengti, žiūrėkite Bylų dalinimas iš jau sukurto skirsnio ar katalogo straipsnio skyriuje Patarimai.
Virtualusis vartotojas
Sekančią eilutę nekeiskite, norimas prisijungimo vardas nustatomas kitur!
Pridedame virtualųjį varotoją su slaptažodžiu:
sudo useradd userftp -d /ftp/ftp-shared -s /bin/false sudo passwd userftp
Jūsų paprašys įvesti slaptažodį, kuriuo jungsis virtualus vartotojas. Dėl paprastumo suveskime 123
Slaptažodį bet kada galite pakeisti nauju panaudoję dar kartą komandą 2-oje eilutėje.
Virtualiojo vartotojo sūkurimo apibendrinimas:
- sukuriame katalogus, nustatydami jų teises
- pridedame vartotoją
Norėdami pridėti daugiau virtualių vartotojų, kartojame šį skyrelį, sukurdami naujus katalogus ir vartotojus.
Tikrojo vartotojo nustatymai
Katalogai
Analogiškai kaip ir virtualiam vartotojui, sukuriame katalogą, į kurį papuls tikrasis vartotojas, ir naujam katalogui iškarto suteikiame visas teises (juk sistemos vartotojai turi teisę elgtis su savo bylomis kaip nori.
cd /ftp sudo mkdir ftp sudo chmod 777 ftp
Tikrajam vartotojui pakaks vieno katalogo, nes jam iš karto suteikiamos visos teisės: tiek download, tiek upload, tiek trynimų ir t.t.
Kaip ir virtualiam vartotojui, mes nenorime kopijuoti visko į ftp katalogą, todėl žiūrime Bylų dalinimas iš jau sukurto skirsnio ar katalogo.
Vartotojas
Sukuriame naują vartotoją. Nebijokit, jungsitės į savo namų katalogą kaip vietinis sistemos vartotojas, čia tik tarpinis etapas.
sudo useradd ftp_real -d /ftp/ftp -s /bin/false sudo passwd ftp_real
Slaptažodį naudokite tokį patį, kokiu Jūs jungiatės prie savo vartotojo sistemoje.
Tikrojo vartotojo sūkurimo apibendrinimas:
- sukuriame katalogą, suteikdami visas teises
- sukuriame "tarpinius" vartotojus (šiuo atveju tarpinis vartotojas yra "ftp_real")
Kartojame šį skyrelį su naujais katalogais ir tarpiniais varototojais.
FTP serverio nustatymai
Redaguojame bylą /etc/proftpd.conf:
sudo nano /etc/proftpd.conf
Žemiau pateikiamas veikiantis pavyzdys. Viską palikite kaip yra nieko nekeisdami, išskyrus eilutes su komentarais. Jas redaguokite pagal savo poreikius:
AllowOverwrite on
AuthAliasOnly on
# Vartotojai. Cia galite prideti daugiau vartotoju, prirasydami daugiau eiluciu
#"UserAlias prisijungimovardas tarpinisvartotojas".
#Musu atveju tarpiniai vartotojai yra "userftp" (virtualiam vartotojui) ir "ftp" (tikram vartotojui)
UserAlias virtualusprisijungimovardas userftp #pakeiskite prisijungimo varda i Jums patinkanti
UserAlias tikrasvartotojas ftp_real #pakeiskite tikrasvartotojas i vietini sistemos #vartotoja
ServerName "FTP serveris draugams ;)" # serverio pavadinimas
ServerType standalone
DeferWelcome on
MultilineRFC2228 on
DefaultServer on
ShowSymlinks off
TimeoutNoTransfer 300
TimeoutStalled 60
TimeoutIdle 1200
DisplayChdir .message
ListOptions "-l"
RequireValidShell off
TimeoutLogin 20
RootLogin off
#Ivykiu registravima. Galbut Jums nereikia sekti ivykius, tai galite sekancias 3 eilutes istrinti:
ExtendedLog /var/log/ftp.log
TransferLog /var/log/xferlog
SystemLog /var/log/syslog.log
UseFtpUsers off
AllowStoreRestart on
Port 21
User nobody
Group nogroup
Umask 022 022
PersistentPasswd off
MaxClients 8
MaxClientsPerHost 8
MaxClientsPerUser 8
MaxHostsPerUser 8
# Sekmingais prisijungus, parodys sia zinute:
AccessGrantMsg "nulauzei pass? :)"
# Si zinute bus parodoma nepriklausomai ar sekmingas prisijungimas, ar ne:
ServerIdent on "tu namuose."
DefaultRoot ~
DefaultRoot ~
MaxLoginAttempts 3
<Limit LOGIN>
AllowUser userftp #jei kurete daugiau vartotoju, pridekite cia eiluciu AllowUser tarpinisvartotojas
AllowUser ftp_real
DenyALL
</Limit>
<Directory /ftp/ftp-shared>
Umask 022 022
AllowOverwrite off
<Limit MKD STOR DELE XMKD RNRF RNTO RMD XRMD>
DenyAll
</Limit>
</Directory>
<Directory /ftp/ftp-shared/download/*>
Umask 022 022
AllowOverwrite off
<Limit MKD STOR DELE XMKD RNEF RNTO RMD XRMD>
DenyAll
</Limit>
</Directory>
<Directory> /ftp/ftp-shared/upload/>
Umask 022 022
AllowOverwrite on
<Limit READ RMD DELE>
DenyAll
</Limit>
<Limit STOR CWD MKD>
AllowAll
</Limit>
</Directory>
<Directory /ftp/ftp/*>
Umask 022 022
AllowOverwrite on
<Limit MKD STOR DELE XMKD RNEF RNTO RMD XRMD>
AllowAll
</Limit>
</Directory>
Serverio startavimas
Įvykdome komandą (ArchLinux distribucijoje):
sudo /etc/rc.d/proftpd start
Kitose distribucijose:
sudo /etc/init.d/proftpd start
Sėkmingai startavus serveriui, galime jungtis iš išorės šiuo atveju dviem vartotojais:
virtualusprisijungimovardas slaptažodis 123 (arba Jūsų, jei įrašėte kitokį), ir tikrasvartotojas. Jei viską įvykdėte pagal instrukciją, slaptažodis toks pats, su kurio vartotojas jungiasi prie sistemos.
Kad nereiktų paleidinėti serverio kiekvieną kartą perkrovus kompiuterį, įrašykite į sistemą automatinį serverio paleidimą. ArchLinux atveju:
sudo nano /etc/rc.conf
Pridedame į eilutę DAEMONS = ( ....... network @proftpd .....)
Eiliškumas yra svarbus, ir ftp serveris turi startuoti tik po tinklo (network) startavimo!
Gentoo atveju:
rc-update add proftpd default
Patarimai
Bylų dalinimas iš jau sukurto skirsnio ar katalogo
Pirma eilutė virtualiajam vartotojui, antra - tikrajam:
sudo mount -o bind /katalogaskuriobylasplatinatevirtualiamvartotojui /ftp/ftp-share/download sudo mount -o bind /tikrasvartotojonamukatalogas /ftp/ftp
Ir nepamirštame automatiškai prijungti šių katalogų perkrovus kompiuterį:
sudo nano /etc/fstab
Įrašome pabaigoje bylos keletą eilučių:
/katalogas/kurio/bylas/platiname/virtualiam/vartotojui /ftp/ftp-share/download failųSistema bind 0 0 /tikras/vartotojo/namu/katalogas /ftp/ftp failųSistema bind,umask=0000 0 0
failųSistema pakeiskite į to skirnsio, kuriame įrašytos dalinamos bylos, failų sistemas: ext, ext3, reiserfs ar kitas.
Priėjimas per URL
Galite nuorodas į savo FTP serverį platinti iš karto su vartotojo vardu ir slaptažodžiu:
ftp://vartotojas:slaptažodis@adresas:portas/kelias
Be abejo, nebūtina nurodyti :portas ir /kelias, jei nenaudojate nestandartinių portų ir nėra tikslo nurodyti konkretų kelią:
ftp://vartotojas:slaptažodis@adresas
Nesklandumai
Pirmą kartą startuojant serverį, galimas klaidos pranešimas nogroup no exits ar panašus. Tokiu atveju paprasčiausiai sukuriame grupę:
sudo groupadd nogroup
Jungiantis prie interneto per routerį, nepavyksta prisijungti, nors viskas nustatyta teisingai. Paprasčiausiai routeryje Jums reikia atidaryti 21 portą.
Upload kataloge atsiųstoms byloms Jūs neturite savininko teisių. Tiesiog pridėkite savo vartotoją grupei userftp:
sudo gpasswd -a JUSUVARTOTOJOVARDAS userftp
Daugiau
Nuorodos