Далее команды можете просто копировать и вставлять в командную строку консоли.
Я работал под Х-ми, использовал редактор gedit. В консоли можете использовать например редактор nano -w или vi
Я буду показывать установку только необходимых для данного FTP сервера пакетов.
Если у вас уже установлен сервер LAMP, то добавьте только те, которые отсутствуют.
2 Установка MySQL сервера и пакета phpMyAdminМожете установить в консоле одной командой:
apt-get install mysql-server mysql-client libmysqlclient15-dev phpmyadmin apache2
Во время установки дайте следующие ответы:
Пароль для пользователя
root для управления базой
MySQL:
<-- yourrootsqlpassword (введите ваш пароль)Название вашего Web сервера (необходимо для правильной конфигурации MySQL). В данной версии Ubuntu это :
<-- apache2 3 Установка PureFTPd сервера с поддержкой MySQLВ Ubuntu 7.10 такой пакет уже имеется в репозитарии, поэтому просто вводим команду:
apt-get install pure-ftpd-mysql
Далее создаем
ftp группу
(ftpgroup) и
ftp пользователя
(pureftp user), которых будем использовать для всех ваших будущих виртуальных пользователей. Если в Вашей системе нет
id номера
2001, то присваиваем этой группе и пользователю
id 2001:
groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c "pureftpd user" -g ftpgroup ftpuser
4 Создаем MySQL базу данных для PureFTPd сервераПеред созданием непосредственно базы, создадим пользователя
pureftpd с паролем
ftpdpass который будет являться администратором нашей базы (
pureftpd):
CREATE DATABASE pureftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO 'pureftpd'@'localhost' IDENTIFIED BY 'ftpdpass';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO 'pureftpd'@'localhost.localdomain' IDENTIFIED BY 'ftpdpass';
FLUSH PRIVILEGES;
Замените слово
ftpdpass на свой пароль (этот, я использовал для примера, для пущей секретности можете менять и имя базы и имя пользователя).
Затем заходим в оболочку базы MySQL и копируем в командную строку ниже приведенные команды, затем нажимаем
Enter (yes) для создания таблиц базы:
создаем:
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;
Выходим:
Набрав в браузере команду
http://192.168.1.10/phpmyadmin/ мы попадаем в гую пакета, с помощью которого можно администрировать базу данных вашего PureFTPd сервера.
5 Конфигурируем PureFTPdРедактируем файл
/etc/pure-ftpd/db/mysql.conf:
сохраняем старый:
cp /etc/pure-ftpd/db/mysql.conf /etc/pure-ftpd/db/mysql.conf_orig
обнуляем:
cat /dev/null > /etc/pure-ftpd/db/mysql.conf
набираем:
gedit /etc/pure-ftpd/db/mysql.conf
и вставляем сл. строки:
MYSQLSocket /var/run/mysqld/mysqld.sock
#MYSQLServer localhost
#MYSQLPort 3306
MYSQLUser pureftpd
MYSQLPassword ftpdpass
MYSQLDatabase pureftpd
#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")
Строка
MYSQLCrypt md5дает возможность переконвертировать текст пароля в строку
MD5 string, с целью секретности.
Далее создаем новый файл с именем /etc/pure-ftpd/conf/ChrootEveryone, содержащим одну строку со словом yes:
echo "yes" > /etc/pure-ftpd/conf/ChrootEveryone
Это разрешит серверу PureFTPd изолировать каждого виртуального пользователя в его домашнем каталоге, в результате чего? он не сможет просматривать каталоги и файлы вне его домашнего каталога.
И еще создаем файл с именем /etc/pure-ftpd/conf/CreateHomeDir с той же командой.
echo "yes" > /etc/pure-ftpd/conf/CreateHomeDir
Что позволит серверу PureFTPd автоматически создавать домашний каталог пользователя, при входе пользователя в систему, даже если домашний каталог еще не существует.
Затем перестартуем PureFTPd:
/etc/init.d/pure-ftpd-mysql restart
6 Создаем пробную базу для тестирования системы.
Для внесения содержания в базу заходим в оболочку MySQl:
Затем вводим:
Немного пояснений:
Новый пользователь создаваемый для тестирования FTP сервера будет имееть статус 1 (т.е. доступ активен)), он имеет (в моем примере) пароль secret (при внесении изменений в базу данных с помощью пакета phpmyadmin вы должны включить функцию MySQL's MD5),имеет так же UID и GID 2001 (см раздел №2!), домашнюю директорию /var/www, и скорость закачки (upload и download) в 100 KB/sec. (kilobytes в second), а так же квоту (quota) в 50 MB:
Теперь сам код который вводим:
INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES ('exampleuser', '1', MD5('secret'), '2001', '2001', '/var/www', '100', '100', '', '*', '50', '0');
Выходим из оболочки:
Теперь открываем свой FTP клиент в компьютере (что-нибудь подобно WS_FTP или SmartFTP, если у вас Windows или gFTP или FileZilla на Линуксе) и пробуем подключиться.
Имя хоста которое при этом надо использовать- это имя вашей машины (или ее IP адрес), имя пользователя в моем примере является- exampleuser, а пароль- secret.
Каталог, который я прописал, это - var/www. Для захода на мою страничку.
Вы можете использовать например свой реальный, типа- /home/www.example.com.
Для добавления пользователе можно продолжать как в командной строке, а можно с помощью phpmyadmin.
8 Создаем возможность логинится анонимным пользователям на наш FTP.
В начале оздаем пользователя ftp (с домашней папкой в /home/ftp) и в группе ftp:
groupadd ftp
useradd -s /bin/false -d /home/ftp -m -c "anonymous ftp" -g ftp ftp
Затем создаем конфигурационный файл /etc/pure-ftpd/conf/NoAnonymous со строкой- no:
echo "no" > /etc/pure-ftpd/conf/NoAnonymous
С такой конфигурацией анонимные пользователи могут логинися к FTP серверу.
Делаем рестарт серверу PureFTPd:
/etc/init.d/pure-ftpd-mysql restart
Создаем для анонимных пользователей папку с различными правами, например:
cd /home/ftp
mkdir incoming
chown ftp:nogroup incoming/
chmod 311 incoming/
cd ../
chmod 555 ftp/
Про администрирование с помощью phpmyadmin это отдельный разговор, и там лучше с картинками.
Пока все.
Подсмотрено:
http://howtoforge.com/virtual-hosting-with-pureftpd-and-mysql-ubuntu-7.10