Sziasztok.
Szeretném bemutatni a Pfotpd-n keresztül, hogy miért fontos folyamatosan modernizálni keresni az újabb jobb megoldásokat nem csak az asztali környezetben, hanem a szerver oldalakon is.
Én és Whi barátom ezt a blogoot szeretnénk folyamatosan, a legfontosabb legálltalánosabb, és egy-két olyan szerver szolgáltatást bemutatni nektek, amelyek nagyon megkönnyítheti azoknak az életét, akik ezen a területen mozognak, továbbá számítunk arra, hogy a mi tudásunkat is tovább csiszoljátok majd a hozzá szólásotaikkal.
Akkor adjunk a szerver testére.
Proftpd, talán a legelterjetteb ftp szerver a linux szervereken. Nagyon fontos, tudni, hogy nagyon gyors, és nagyon kicsi, rengeteg lehetőség van arra, hogy finom hangoljunk...
Ez a blog is több részből fog állni.
Első rész.
proftpd telepítése.... SQL adattárolással.
Mivel nem feltételezem, hogy szerveren túl sokan futtatnának X-t ezért, konzolos parancsokat fogok írni.
root userrel, aki nem root alól adja ki a commandot, annak természetesen: sudo-apt-get install...
apt-get install mysql-server mysql-client libmysqlclient15-dev
apt-get install php5 php5-mysql
apt-get install apache2 libapache2-mod-php5
apt-get proftpd-mysql
/etc/init.d/apache2 start
/etc/init.d/mysql start
/etc/init.d/proftpd stop
-Hozzuk létre az FTP userünket, és a grouppunkat:
groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c "proftpd user" -g ftpgroup ftpuser
most jön egy kis trükk... létre kell hoznunk az adatbázis szerkezetünket:
nano /root/proftpd.sql
# és másoljuk be ezeket a sorokat...
create database proftpd;
GRANT SELECT, INSERT, UPDATE, DELETE ON proftpd.* TO 'proftpd'@'localhost' IDENTIFIED BY 'jelszo';
GRANT SELECT, INSERT, UPDATE, DELETE ON proftpd.* TO 'proftpd'@'localhost.localdomain' IDENTIFIED BY 'jelszo';
FLUSH PRIVILEGES;
USE proftpd;
CREATE TABLE usertable (
userid text,
passwd text,
homedir text,
shell text,
uid int(11) NOT NULL auto_increment,
gid int(11) default NULL,
count int(11) NOT NULL default '0',
lastlogin datetime NOT NULL default '0000-00-00 00:00:00',
lastlogout datetime NOT NULL default '0000-00-00 00:00:00',
expiration datetime NOT NULL default '0000-00-00 00:00:00',
disabled tinyint(4) default '0',
det_name tinytext,
det_mail tinytext,
det_adress tinytext,
det_notes tinytext,
PRIMARY KEY (uid)
) TYPE=MyISAM;
CREATE TABLE grouptable (
groupname text,
gid int(11) NOT NULL auto_increment,
members text,
description tinytext,
PRIMARY KEY (gid),
UNIQUE KEY gid_2 (gid),
KEY gid (gid)
) TYPE=MyISAM;
CREATE TABLE xfer_stat (
userid text,
file text,
size bigint(20) default '0',
address_full text,
address_ip text,
command text,
timespent text,
time text,
cmd text,
dunno text
) TYPE=MyISAM;
CREATE TABLE `ftpquotalimits` (
`name` varchar(30) NOT NULL default '',
`quota_type` enum('user','group','class','all') NOT NULL default 'user',
`per_session` enum('false','true') NOT NULL default 'false',
`limit_type` enum('soft','hard') NOT NULL default 'hard',
`bytes_in_avail` float NOT NULL default '0',
`bytes_out_avail` float NOT NULL default '0',
`bytes_xfer_avail` float NOT NULL default '0',
`files_in_avail` int(10) unsigned NOT NULL default '0',
`files_out_avail` int(10) unsigned NOT NULL default '0',
`files_xfer_avail` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`name`)
) TYPE=MyISAM;
CREATE TABLE `ftpquotatallies` (
`name` varchar(30) NOT NULL default '',
`quota_type` enum('user','group','class','all') NOT NULL default 'user',
`bytes_in_used` float NOT NULL default '0',
`bytes_out_used` float NOT NULL default '0',
`bytes_xfer_used` float NOT NULL default '0',
`files_in_used` int(10) unsigned NOT NULL default '0',
`files_out_used` int(10) unsigned NOT NULL default '0',
`files_xfer_used` int(10) unsigned NOT NULL default '0'
) TYPE=MyISAM;
INSERT INTO grouptable (groupname, gid, members, description) VALUES ('ftpgroup', 2001, 'ftpuser', 'FTP users');
quit ;
mentsük el.
parancsok: mysql -u root -p
source /root/proftpd.sql
ha sikeresen lefutott akkor már kész is a nagy adatbázisunk, aki már képes fogadni a userünket.
most hackeljük meg a proftpd.conf fájlt
nano /etc/proftpd/proftpd.conf
ezeket a sorokat másoljuk bele.:
Include /etc/proftpd/modules.conf
AuthOrder mod_sql.c
SQLBackend mysql
SQLEngine on
SQLAuthenticate users*
SQLAuthTypes Backend
SQLConnectInfo proftpd@localhost proftpd jelszó
SQLUserInfo usertable userid passwd uid gid homedir shell
SQLGroupInfo grouptable groupname gid members
SQLUserWhereClause "disabled=0 and (NOW()<=expiration or expiration=-1 or expiration=0)"
CreateHome on
LogFormat default "%h %l %u %t \"%r\" %s %b"
LogFormat auth "%v [%P] %h %t \"%r\" %s"
LogFormat write "%h %l %u %t \"%r\" %s %b"
# Define log-files to use
TransferLog /var/log/proftpd/proftpd.xferlog
ExtendedLog /var/log/proftpd/proftpd.access_log WRITE,READ write
ExtendedLog /var/log/proftpd/proftpd.auth_log AUTH auth
ExtendedLog /var/log/proftpd/proftpd.paranoid_log ALL default
SQLLogFile /var/log/proftpd/proftpd.mysql
AllowStoreRestart on
AllowRetrieveRestart on
RequireValidShell off
PathDenyFilter "\\.ftp)|\\.ht)[a-z]+$"
DefaultRoot ~
DenyFilter \*.*/
# Log the user logging in
SQLLog PASS counter
SQLNamedQuery counter UPDATE "lastlogin=now(), count=count+1 WHERE userid='%u'" usertable
# logout log
SQLLog EXIT time_logout
SQLNamedQuery time_logout UPDATE "lastlogout=now() WHERE userid='%u'" usertable
# display last login time when PASS command is given
SQLNamedQuery login_time SELECT "lastlogin from usertable where userid='%u'"
SQLShowInfo PASS "230" "Last login was: %{login_time}"
# xfer Log in mysql
SQLLog RETR,STOR transfer1
SQLNamedQuery transfer1 INSERT "'%u', '%f', '%b', '%h', '%a', '%m', '%T', now(), 'c', NULL" xfer_stat
SQLLOG ERR_RETR,ERR_STOR transfer2
SQLNamedQuery transfer2 INSERT "'%u', '%f', '%b', '%h', '%a', '%m', '%T', now(), 'i', NULL" xfer_stat
AllowOverwrite on
HideNoAccess on
AllowAll
mentsük el.
még egy config fájlt szét hackerkedünk.
ezeket a sorokat okosan helyezzük be.
sudo nano /etc/proftpd/modules.conf
LoadModule mod_sql.c
LoadModule mod_sql_mysql.c
mentsük el.
sudo /etc/init.d/proftpd start
és végül egy kis csemege
http://proftpd-adm.sourceforge.net/
Ha ezt a kis alkalmazást berakjuk a webkönyvtárunkba akkor webes felületről, újra indítások nélkül, tudjuk adminisztrálni a proftpd szerverünk.
Statisztikákkal, logokkal...
Tudom, hogy a blog nem volt elég alaposan kommentezve, de azok akik ilyen rendszereket pakkolnak össze, nem is igénylik, ha meg igen, akkor rám írnak. Megyek is mert hulla fáradt vagyok, megiszom a jól megérdemelt sörömet....
Üdv Earth&Whi.