|
ot Vladsun(2-08-2007)
reiting (19)
[ dobre ]
[ zle ]
Variant za otpechatvane 1. Uvod
Statiiata shte razgleda problemite i resheniiata pri suzdavane na home direktoriite na FTP potrebitelite, strukturata im i pravata na potrebitelite v tiah. Vnimanieto e kontsentrirano vurhu konfiguriraneto na FTP surver sus spetsifichni iziskvaniia kum strukturata na direktoriite i poddirektoriite.
ProFTP e edin ot populiarnite ftp surveri i tui kato az rabotia predimno s nego shte razgledam negovata konfiguratsiia.
2. Obshta konfiguratsiia
Sled kato FTP survera se konfigurira i pusne v deistvie e neobhodimo da se dobaviat potrebiteli, koito da imat dostup do tazi usluga.
Neka predpolozhim, che sme suzdali potrebitel ftp kum grupa ftp i survera e pusnat s tozi potrebitel. Sushto taka sme suzdali direktoriiata /home/ftp sus sobstvenik ftp:ftp.
Pri tezi usloviia, iskame da dobaviame direktoriite na potrebitelite kato poddirektorii na /home/ftp/. Dobavianeto mozhe da stane po razlichen nachin - primerno chrez mySQL ili LDAP modulite za avtentifikatsiia na ProFTP. Drug nachin e chrez izpolzvaneto na useradd komandata.
Nai-chesto tova stava chrez:
useradd |
useradd -g ftp -s /bin/false -d /home/ftp/ivan -pPAROLA ivan |
Izpolzvaneto na /bin/false za shell na FTP potrebitelite e preporuchitelno.
V tazi statiia shte razgledam konfiguriraneto na ProFTP surver s MySQL avtentifikatsiia. Samiiat instalatsionen protses niama da bude razglezhdan.
Eto kakvo predstavliava /etc/proftpd/proftpd.conf:
/etc/proftpd/proftpd.conf |
Include /etc/proftpd/modules.conf
UseIPv6 off
ServerName "ServerName of you choice"
ServerType standalone
DeferWelcome off
MultilineRFC2228 on
DefaultServer on
ShowSymlinks on
TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 1200
ListOptions "-l"
Port 21
MaxInstances 30
User ftp
Group ftp
Umask 022 022
AllowOverwrite on
DenyFilter \*.*/
DenyFilter ".ftpaccess"
DefaultRoot ~
TransferLog /var/log/proftpd/xferlog
SystemLog /var/log/proftpd/proftpd.log
<IfModule mod_tls.c>
TLSEngine off
</IfModule>
<IfModule mod_quota.c>
QuotaEngine on
</IfModule>
<IfModule mod_ratio.c>
Ratios on
</IfModule>
<IfModule mod_delay.c>
DelayEngine on
</IfModule>
<IfModule mod_ctrls.c>
ControlsEngine on
ControlsMaxClients 2
ControlsLog /var/log/proftpd/controls.log
ControlsInterval 5
ControlsSocket /var/run/proftpd/proftpd.sock
</IfModule>
<IfModule mod_ctrls_admin.c>
AdminControlsEngine on
</IfModule>
SQLConnectInfo proftpd@localhost proftpd_database proftpd_password
SQLAuthenticate users groups
SQLAuthTypes Crypt Backend
SQLDefaultHomedir ~
SQLUserInfo users userid passwd uid gid homedir shell
SQLGroupInfo groups groupid gid members
SQLLogFile /var/log/proftpd.sql_log
# Count number of logins for each user
SQLLog PASS logincount
SQLNamedQuery logincount UPDATE "login_count=login_count+1 WHERE userid='%u'" users
# Save last login
SQLLog PASS lastlogin
SQLNamedQuery lastlogin UPDATE "last_login=now() WHERE userid='%u'" users
# Count number of bytes/files downloaded and uploaded
SQLLog RETR dlbytescount
SQLNamedQuery dlbytescount UPDATE "dl_bytes=dl_bytes+%b WHERE userid='%u'" users
SQLLog RETR dlcount
SQLNamedQuery dlcount UPDATE "dl_count=dl_count+1 WHERE userid='%u'" users
SQLLog STOR ulbytescount
SQLNamedQuery ulbytescount UPDATE "ul_bytes=ul_bytes+%b WHERE userid='%u'" users
SQLLog STOR ulcount
SQLNamedQuery ulcount UPDATE "ul_count=ul_count+1 WHERE userid='%u'" users
# Do not let disabled or expired users to login
SQLUserWhereClause "disabled!=1 and (NOW()<=expires or expires=-1)"
# Do not require a valid shell, this might be a good thing to turn on for SQL-users
# This might simplify the configuration a little bit
RequireValidShell off |
Estestveno, vashiiat konfiguratsionen fail mozhe da se razlichava, osobeno v MySQL chastta. V sluchaia sum izpolzval gotovo reshenie za web interfeis - "ProFTPd management", v koeto ima zadanie za tablitsite i konfiguratsiiata na ProFTP.
Do tuk nishto interesno.
3. Suzdavane na direktorii pri poiskvane
Ako se opitate da vlezete vuv FTP survera s potrebitel suzdaden ot www interfeisa i po gorniia konfiguratsionen fail, to shte poluchite greshka poradi fakta, che niama suzdadena home direktoriia za potrebitelia. Prichinite za lipsata na tazi direktoriia sa dve:
www survera ne bi triabvalo da ima prava za suzdavane na direktorii v /home/ftp/;
niamate zadadena optsiia v konfiguratsionniia fail na ProFTP za avtomatichno suzdavane na direktoriiata.
Edina ot optsiite v sluchaia e:
SQLHomedirOnDemand |
SQLHomedirOnDemand on |
T.e. pri purvoto vlizane na potrebitelia negovata home direktoriia shte se suzdade avtomatichno sus suotvetnite sobstvenik, grupa i prava. Za pravata shte govorim po-dolu.
Druga optsiia, s po-golemi vuzmozhnosti e:
Ako sa zadadeni i dvete optsii, to CreateHome e s prioritet.
Optsiiata e v sledniia format:
CreateHome |
CreateHome off|on [<mode>] [skel <path>] [dirmode <mode>] |
V nai-prostiia variant imame:
V tozi sluchai shte se suzdavat avtomatichno direktorii za potrebitelite, kato pravata za direktoriiata sa 0700 - stoinostta na mode po premulchavane.
Ako iskame da promenim pravata, prim. na 711, to shte izpolzvame:
CreateHome |
CreateHome on 711 |
Izpolzvaneto na dirmode parametura se nalaga v sluchaite, kogato suzdavame home direktoriia za potrebitel, koiato se namira v nesushtestvuvasha(i) direktoriia(i). Primeno imame potrebitel hasan. Iskame taka da organizirame durvoto na FTP potrebitelskite direktorii, che to da e podredeno po azbuchen red ot vtori red. T.e. direktoriiata na hasan triabva da e /home/ftp/h/ha/hasan. Ako hasan e purviia potrebitel s bukvata "h", to direktoriite /home/ftp/h i /home/ftp/h/ha vse oshte ne sushestvuvat. V takiva sluchai izpolzvame slednoto:
CreateHome |
CreateHome on 700 dirmode |
V tozi sluchai pravata vurhu direktoriite /home/ftp/h i /home/ftp/h/ha sa otnovo 0700.
Ako iskame da promenim pravata vurhu direktoriite /home/ftp/h i /home/ftp/h/ha (prim na 0711), to izpolzvame:
CreateHome |
CreateHome on 700 dirmode 711 |
V niakoi sluchai se nalaga da se izgradi struktura ot poddirektorii za vseki potrbitel. Primerno vseki potrebitel triabva da ima direktorii out, in, temp pri tova s razlichni prava vurhu tiah.
Realizatsiiata na podobna funktsionalnost se zadava chrez skel parametura:
CreateHome |
CreateHome on skel /etc/ftpd/skel |
Stoinostta na tozi parametur de fakto e putia do direktoriiata, koiato sudurzha modela (skeleta) za suzdavane na strukturata na direktoriite zaedno s failovete v tiah za vseki potrebitel.
Spored primera po-gore v /etc/ftpd/skel triabva da imame imame:
/etc/ftpd/skel/in
/etc/ftpd/skel/out
/etc/ftpd/skel/temp
Togava pri purvoto vlizane na potrebitelia hasan shte se poluchi slednoto durvo na direktoriite:
/home/ftp/hasan/in
/home/ftp/hasan/out
/home/ftp/hasan/temp
Ako izpolzvame i primera za dirmode, to shte se poluchi slednoto durvo na direktoriite:
/home/ftp/h/ha/hasan/in
/home/ftp/h/ha/hasan/out
/home/ftp/h/ha/hasan/temp
V tozi sluchai pulnata optsiia e:
CreateHome |
CreateHome on 700 skel /etc/ftpd/skel dirmode 711 |
V "skeletnata" direktoriia mozhe da ima i failove - te sushto she se suzdadat v direktoriiat na potrebitelia. Nai-umestno e tezi failove da sa .ftpaccess failove, s koito da se zadavat dopulnitelno ogranicheniia po deistviiata na potrebitelia za vsiaka direktoriia. Imenno tozi fail shte razgledame v sledvashtata tochka.
4. Izpolzvane na .ftpaccess faila
Fail s takova ime, namirasht se v direktoriia prinadlezhashta na FTP potrebitel deistva kato direktivite v sektsiia na konfiguratsionniia fail na ProFTP. Eto zashto e nalozhitelno da zashtitim dostupa do tozi fail chrez izpolzvaneto na:
.ftpaccess |
DenyFilter ".ftpaccess" |
v konfiguratsionniia fail.
Estestveno, niama da opisvam vsichki vuzmozhni optsii, koito mozhete da zadadete v tozi fail. SHTe razgledam samo niakoi sluchai za ogranichavane na pravata za pisane, chetene, triene i redaktsiia na failove ot potrebitelia.
4.1. Samo za chetene
.ftpaccess |
<Limit ALL>
DenyAll
</Limit>
<Limit CDUP CWD XCWD XCUP PWD XPWD LIST>
AllowAll
</Limit>
<Limit READ>
AllowAll
</Limit> |
4.2. Samo za zapis, bez triene
.ftpaccess |
<Limit ALL>
DenyAll
</Limit>
<Limit CDUP CWD XCWD XCUP PWD XPWD LIST>
AllowAll
</Limit>
<Limit STOR STOU>
AllowAll
</Limit> |
4.3. Samo zapis, bez triene, bez redaktsiia
Vazhno e da se otbelezhi zabranata za CHMOD komandata.
.ftpaccess |
<Limit ALL>
DenyAll
</Limit>
<Limit CDUP CWD XCWD XCUP PWD XPWD LIST>
AllowAll
</Limit>
<Limit STOR STOU>
AllowAll
</Limit>
Umask 222 |
Za poveche informatsiia otnosno FTP komandite, koito mozhete da izpolzvate po opisaniia po-gore nachin:
http://www.nsftools.com/tips/RawFTP.htm
5. Izpolzvani materiali
http://www.nsftools.com/tips/RawFTP.htm
http://www.castaglia.org/proftpd/doc/contrib/ProFTPD-mini-HOWTO-CreateHome.html
http://www.khoosys.net/single.htm?ipg=848
http://ppmy.sourceforge.net/HOWTO
<< | >>
|
|