Установка · 3 min read · Nov 06, 2025
ISPConfig 3 ProFTPd Для Debian
ISPConfig 3 ProFTPd Для Debian
1 Введение
Я новый пользователь ISPConfig и я занимаюсь Linux уже несколько лет. Мой сервер в настоящее время является VPS с OpenVZ, и он не позволяет мне запускать стандартный pureftpd, который поставляется с ISPConfig, поэтому я начал изучать ProFTPd и обнаружил, что переключиться на его использование не так уж сложно.
2 Предварительная установка
Пожалуйста, обратите внимание: это не включает поддержку квот, так как мой VPS не поддерживает ее. Если у вас есть какие-либо предложения или идеи о том, как улучшить эту интеграцию, не изменяя ftp_user_edit.php в ISPConfig3, пожалуйста, дайте мне знать. Эти инструкции были написаны на Debian 5.0 Lenny, но должны работать так же и для 6.0. Для других дистрибутивов эти инструкции могут потребовать небольших изменений.
Также обратите внимание: этот процесс сработал для меня на новом сервере и установке ISPConfig 3. Использование этого на существующем сервере потребует редактирования и сохранения каждого ftp-пользователя, который был создан, и может вызвать другие проблемы. Я могу создать простой php-скрипт, чтобы сделать это автоматически в будущем. Я не несу ответственности за любые проблемы, которые могут возникнуть, поэтому, пожалуйста, используйте это НА ВАШ РИСК.
3 Установка
Запустите
apt-get remove pure-ftpd-common pure-ftpd-mysql
apt-get install proftpd proftpd-mod-mysql
Запуск в автономном режимеСоздание группы и пользователя
groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c “proftpd user” -g ftpgroup ftpuser
4 Настройка базы данных
mysql -u root -p
Используйте dbispconfig
Запустите запрос:
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');5 Настройка ProFTPd
Отредактируйте /usr/local/ispconfig/interface/lib/config.inc.php:
nano /usr/local/ispconfig/interface/lib/config.inc.phpНайдите переменную db_password.
Запомните пароль для дальнейшего использования.
Отредактируйте /etc/proftpd/proftpd.conf
nano /etc/proftpd/proftpd.confНайдите:
#Include /etc/proftpd/sql.confИзмените на:
Include /etc/proftpd/sql.confОтредактируйте /etc/proftpd/sql.conf
nano /etc/proftpd/sql.confСотрите все содержимое и замените на:
#
# Пример конфигурации Proftpd для аутентификации на основе SQL.
#
# (Это не следует использовать, если вы предпочитаете аутентификацию SQL на основе PAM)
#
DefaultRoot ~
SQLBackend mysql
# Пароли в MySQL шифруются с использованием CRYPT
SQLAuthTypes Plaintext Crypt
SQLAuthenticate users groups
# используется для подключения к базе данных
# databasename@host database_user user_password
SQLConnectInfo dbispconfig@localhost ispconfig _insertpasswordhere_
# Здесь мы говорим ProFTPd имена столбцов базы данных в "usertable"
# с которыми мы хотим взаимодействовать. Соответствуйте имена с теми в базе данных
SQLUserInfo ftp_user username password uid gid dir shell
# Здесь мы говорим ProFTPd имена столбцов базы данных в "grouptable"
# с которыми мы хотим взаимодействовать. Снова имена соответствуют тем в базе данных
SQLGroupInfo ftp_group groupname gid members
# установите минимальный UID и GID - в противном случае это 999 каждый
SQLMinID 500
# создайте домашний каталог пользователя по запросу, если он не существует
CreateHome off
# Обновляйте счетчик каждый раз, когда пользователь входит в систему
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE "count=count+1, accessed=now() WHERE userid='%u'" ftpuser
# Обновляйте измененный каждый раз, когда пользователь загружает или удаляет файл
SQLLog STOR,DELE modified
SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser
RootLogin off
RequireValidShell off
Не забудьте заменить insertpasswordhere на пароль, который вы получили из ISPConfig.
Если ваша база данных MySQL находится на другом сервере, измените localhost, чтобы указать ваш сервер MySQL.
Отредактируйте: /etc/proftpd/modules.conf
nano /etc/proftpd/modules.confНайдите:
#LoadModule mod_sql.cИзмените на:
LoadModule mod_sql.cНайдите:
#LoadModule mod_sql_mysql.cИзмените на:
LoadModule mod_sql_mysql.cЗапустите:
/etc/init.d/proftpd restart6 Изменения в ISPConfig 3
Теперь нам нужно изменить один из файлов ispconfig. Это не идеально, так как если вы обновите до новой версии, вы потеряете изменения, но это единственный способ заставить proftpd работать, который я смог найти.
Отредактируйте /usr/local/ispconfig/interface/web/sites/ftp_user_edit.php
nano /usr/local/ispconfig/interface/web/sites/ftp_user_edit.php
Найдите:
$uid = $web["system_user"];
$gid = $web["system_group"];Замените на:
$userinfo = posix_getpwnam($web["system_user"]);
$uid = $userinfo['uid'];
$gid = $userinfo['gid'];Примечание: если вы в настоящее время вошли в веб-панель ISPConfig, вам нужно выйти, прежде чем изменения будут зарегистрированы на вашем компьютере.
Get new posts in your inbox
No spam. Unsubscribe anytime.