Установка · 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 restart

6 Изменения в 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, вам нужно выйти, прежде чем изменения будут зарегистрированы на вашем компьютере.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.