A PureFTPd nyugdíjazása
Nem tudom ki hogy van vele, de nekem a PureFTPd-nél sokkal szimpatikusabb a ProFTPd. Az ISPConfig kettes verziójában még ez volt az alapértelmezett FTP szerver, ráadásul a paramétereinek módosítása is sokkal egyszerűbb. Lehet ez csak az én furcsaságom, de úgy döntöttem, hogy nyugdíjaztatom a PureFTPd-t és visszaváltok ProFTPd-re. Természetesen ez is megoldható egy kis ügyeskedéssel, ráadásul semmi hátrányt nem jelent a dolog, mert a folyamat végeztével minden ugyanúgy fog működni, mint azelőtt. (Na jó, egy hátulütője talán mégis van a dolognak. Mivel egy ISPConfig fájlt is érint a folyamat, ezért egy esetleges frissítés esetén elveszhet a módosításunk, erre azért figyeljünk).
Töröljük a PureFTPd-t:
apt-get remove pure-ftpd-common pure-ftpd-mysql
Telepítsük a ProFTPd-t:
apt-get install proftpd proftpd-mod-mysql
Ha rákérdez, akkor a "standalone" módot válasszuk.
Hozzunk létre neki egy csoportot és felhasználót:
groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c "proftpd user" -g ftpgroup ftpuser
Módosítsuk kicsit az ISPConfig adatbázisát:
mysql -u root -p
Use dbispconfig
Az első parancs kiadása után kérni fogja a MySQL root jelszót, adjuk meg neki.
Hajtsuk végre a következő módosításokat a táblán:
ALTER TABLE `ftp_user` ADD `shell` VARCHAR( 18 ) NOT NULL DEFAULT
'/sbin/nologin',
ADD `count` INT( 11 ) NOT NULL DEFAULT '0',
ADD `accessed` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
ADD `modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00';
CREATE TABLE ftp_group (
groupname varchar(16) NOT NULL default '',
gid smallint(6) NOT NULL default '5500',
members varchar(16) NOT NULL default '',
KEY groupname (groupname)
) TYPE=MyISAM COMMENT='ProFTP group table';
INSERT INTO `ftp_group` (`groupname`, `gid`, `members`) VALUES
('ftpgroup', 2001, 'ftpuser');
Nyissuk meg az ISPConfig konfigurációs fájlját:
nano /usr/local/ispconfig/interface/lib/config.inc.php
Keressük ki az ISPConfig adatbázisának jelszavát és írjuk fel valahova (Keressük a "db_password" mögött).
Módosítsuk a ProFTPd konfigurációját és engedélyezzük az SQL modult:
nano /etc/proftpd/proftpd.conf
Szedjük ki a kettőskeresztet az include elől, hogy ezt kapjuk:
Include /etc/proftpd/sql.conf
Ctrl + o majd Ctrl +x.
Nyissuk meg a ProFTPd SQL konfigurációs fájlját:
nano /etc/proftpd/sql.conf
Másoljuk bele a következőket:
#
# Proftpd sample configuration for SQL-based authentication.
#
# (This is not to be used if you prefer a PAM-based SQL authentication)
#
<IfModule mod_sql.c>
DefaultRoot ~
SQLBackend mysql
# The passwords in MySQL are encrypted using CRYPT
SQLAuthTypes Plaintext Crypt
SQLAuthenticate users groups
# used to connect to the database
# databasename@host database_user user_password
SQLConnectInfo dbispconfig@localhost ispconfig _IRDIDEAJELSZOT_
# Here we tell ProFTPd the names of the database columns in the "usertable"
# we want it to interact with. Match the names with those in the db
SQLUserInfo ftp_user username password uid gid dir shell
# Here we tell ProFTPd the names of the database columns in the "grouptable"
# we want it to interact with. Again the names match with those in the db
SQLGroupInfo ftp_group groupname gid members
# set min UID and GID - otherwise these are 999 each
SQLMinID 500
# create a user's home directory on demand if it doesn't exist
CreateHome off
# Update count every time user logs in
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE "count=count+1, accessed=now() WHERE userid='%u'" ftpuser
# Update modified everytime user uploads or deletes a file
SQLLog STOR,DELE modified
SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser
RootLogin off
RequireValidShell off
</IfModule>
Fontos: A fenti szöveg bemásolása után keresd meg az _IRDIDEAJELSZOT_ részt, töröld ki és másold be az imént leírt ISPConfig MySQL jelszavát.
Ezután Ctrl + o majd Ctrl + x.
Engedélyezzünk még két modult:
nano /etc/proftpd/modules.conf
Ismét szedjük ki a kettős keresztet a loadmodule elől két helyen is:
LoadModule mod_sql.c
LoadModule mod_sql_mysql.c
Ctrl + o majd Ctrl + x.
Indítsuk újra a ProFTPd-t:
/etc/init.d/proftpd restart
Még egy apró módosítás az ISPConfig kódjában és kész is vagyunk:
nano /usr/local/ispconfig/interface/web/sites/ftp_user_edit.php
Keressük meg a következőt:
$uid = $web["system_user"];
$gid = $web["system_group"];
És cseréljük le erre:
$userinfo = posix_getpwnam($web["system_user"]);
$uid = $userinfo['uid'];
$gid = $userinfo['gid'];
Kész is vagyunk!
A cikk még nem ért véget, kérlek, lapozz!