Надійний ФТП — Pure FTPD в CentOS

Для нормальної роботи даного ФТП необхідна наявність MySQL, так як дані користувачів зберігатимуться в БД.

Запускаємо установку пакета

# yum install pure-ftpd
Loaded plugins: downloadonly, fastestmirror, priorities
Loading mirror speeds from cached hostfile

…..

…..

…..

Installed:
pure-ftpd.i386 0:1.0.29-1.el5.1

Complete!

Створюємо групу для FTP

# groupadd -g 2002 ftp-users

Створюємо користувача

# useradd -u 2002 -c /bin/false -d /bin/null -c «Pure FTPD User» -g ftp-users ftp-user

Тепер необхідно створити базу данних для зберігання даних користувачів FTP

Підключаємось до сервера баз данних

# mysql -u root -p YourPass

mysql> CREATE DATABASE srv_ftp;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON srv_ftp.* TO ‘ftp’@’localhost’ IDENTIFIED BY ‘YourPass’;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON srv_ftp.* TO ‘ftp’@’localhost.localdomain’ IDENTIFIED BY ‘YourPass’;
FLUSH PRIVILEGES;

Створюємо таблицю ftpd в базі srv_ftp, для цього зайдемо в базу

mysql> Use srv_ftp
Database changed

mysql> CREATE TABLE ftpd (
-> User varchar(16) NOT NULL default »,
-> status enum(‘0′,’1’) NOT NULL default ‘0’,
-> Password varchar(64) NOT NULL default »,
-> Uid varchar(11) NOT NULL default ‘-1’,
-> Gid varchar(11) NOT NULL default ‘-1’,
-> Dir varchar(128) NOT NULL default »,
-> ULBandwidth smallint(5) NOT NULL default ‘0’,
-> DLBandwidth smallint(5) NOT NULL default ‘0’,
-> comment tinytext NOT NULL,
-> ipaccess varchar(15) NOT NULL default ‘*’,
-> QuotaSize smallint(5) NOT NULL default ‘0’,
-> QuotaFiles int(11) NOT NULL default 0,
-> PRIMARY KEY (User),
-> UNIQUE KEY User (User)
-> ) TYPE=MyISAM;

Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> Quit

# cd /etc/pure-ftpd/

# vi pure-ftpd.conf (тут я опишу, що я змінював і для чого, все інше залишено без змін.)

#Показувати файли які починаються з крапки (no — непоказувати)

DisplayDotFiles             no

# Тут я залшив » no » оскільки передбачається анонімний доступ на папки обміну

NoAnonymous                 no

# розкоментуємо наступний рядок

# тут задаэться конфігураційний файл з параметрами доступу до бази

MySQLConfigFile               /etc/pure-ftpd/pureftpd-mysql.conf

PAMAuthentication             yes

# Дозволяємо анонімусам створювати каталоги

AnonymousCanCreateDirs      yes

#Якщо система завантажена більше ніж вказано тут, аноніми неможуть нічого завантажувати

MaxLoad                     4

# Заборона викачування файлів власниками яких на являється ftp

AntiWarez                   no

# Тут все ясно
Bind                      10.0.0.5,21

# Максимальна швидкість для анонімів в  KB/s

AnonymousBandwidth            1000

# Заборона видалення файлів які починаються на «.»

ProhibitDotFilesWrite       yes

# Заборона читання файлів які починаються на «.» (.history, .ssh…)

ProhibitDotFilesRead        yes

# Never overwrite files. When a file whoose name already exist is uploaded,
# it get automatically renamed to file.1, file.2, file.3, …

AutoRename                  no

# Дозволити анонімам завантажувати нові файли (no = завантаження дозвлено)

AnonymousCantUpload         no

# Куди писати логи в стилі Apache

AltLog                     clf:/var/log/pure-ftpd/pureftpd.log

# Створювати лог файли оптимізовані для статистики

AltLog                     stats:/var/log/pure-ftpd/pureftpd_stats.log

#Дозволити користувачам завантажувати. але не видаляти файли, ставимо ні

#KeepAllFiles                yes
KeepAllFiles                no

# Автоматично створювати домашні каталоги  для користувачів

CreateHomeDir               yes

# При перевищені доного значення закачка заборонена

#MaxDiskUsage               99
MaxDiskUsage               70

# Ставомо  ‘yes’ щоб дозволити перейменування файлів

NoRename  yes               

Ось перелік того що я поміняв.

Тепер переходимо до файла pureftpd-mysql.conf і робимо наступне

cp /etc/pure-ftpd/pureftpd-mysql.conf /etc/pure-ftpd/pureftpd-mysql.conf_orig (створюємо резервну копію)
cat /dev/null > /etc/pure-ftpd/pureftpd-mysql.conf (очищаємо)
vi /etc/pure-ftpd/pureftpd-mysql.conf (відкриваємо на редактування)

MYSQLSocket /var/lib/mysql/mysql.sock
#MYSQLServer localhost
#MYSQLPort 3306
MYSQLUser pureftpd (користувач базиданних)
MYSQLPassword ftpdpass (його пароль)
MYSQLDatabase srv_ftp (сама база данних)
#MYSQLCrypt md5, cleartext, crypt() or password() — md5 is VERY RECOMMENDABLE uppon cleartext
MYSQLCrypt md5 (метод шифрування паролей)
MYSQLGetPW SELECT Password FROM ftpd WHERE User=»\L» AND status=»1″ AND (ipaccess = «*» OR ipaccess LIKE «\R»)
MYSQLGetUID SELECT Uid FROM ftpd WHERE User=»\L» AND status=»1″ AND (ipaccess = «*» OR ipaccess LIKE «\R»)
MYSQLGetGID SELECT Gid FROM ftpd WHERE User=»\L»AND status=»1″ AND (ipaccess = «*» OR ipaccess LIKE «\R»)
MYSQLGetDir SELECT Dir FROM ftpd WHERE User=»\L»AND status=»1″ AND (ipaccess = «*» OR ipaccess LIKE «\R»)
MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHERE User=»\L»AND status=»1″ AND (ipaccess = «*» OR ipaccess LIKE «\R»)
MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHERE User=»\L»AND status=»1″ AND (ipaccess = «*» OR ipaccess LIKE «\R»)
MySQLGetQTASZ SELECT QuotaSize FROM ftpd WHERE User=»\L»AND status=»1″ AND (ipaccess = «*» OR ipaccess LIKE «\R»)
MySQLGetQTAFS SELECT QuotaFiles FROM ftpd WHERE User=»\L»AND status=»1″ AND (ipaccess = «*» OR ipaccess LIKE «\R»)

Потім наступне
chkconfig —levels 235 pure-ftpd on
/etc/init.d/pure-ftpd start
Включаєм старт на етапі завантаження.

Створюємо користувача

mysql -u root -p (з’єднуємось з сервером баз данних і вводимо пароль)

USE srv_ftp; (вибираємо саму базу, яка нам необхідна)

і вносимо наступне:

INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`,
`comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES (‘exampleuser’, ‘1’, MD5(‘secret’), ‘2002’, ‘2002’,
‘/home/www.example.com’, ‘100’, ‘100’, », ‘*’, ’50’, ‘0’);
Тут ми кажемо , що бажамо надати доступ по протоколу фтп користувачу — exampleuser, з паролем — secret, який шифрується в MD5, і входить до складу групи — ftp-users, з ідентифікаторами 2002 і домашньою папкою /home/www.example.com, також з обмеженням швидкості в 100 кБ/с, і доступом з любого ІР, розміром його каталога в 50 Мб, довільною кількістю файлів.

Всі ці комади можна ввсети через     phpMyAdmin — web інтерфейс управління сервером баз данних.

Після першого вдалого заходу створюється автоматично каталог.

# ls -l /home

drwxr-xr-x 2 ftpuser ftpusers 4096 Jul 14 13:27 www.example.com

Тепер необхідно включити доступ Анонімним користувачам

vi /etc/passwd

[...]
#ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
ftp:x:14:50:FTP User:/home/ftp:/sbin/nologin

Створюємо і надаємо права на папки обміну і доступу
chown ftp:nobody /home/ftp
cd /home/ftp
mkdir incoming
chown ftp:nobody incoming/
chmod 311 incoming/
cd ../
chmod 555 ftp/

І в кінці рестарт самого демона

/etc/init.d/pure-ftpd restart

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

*