Я установил pure-ftpd-mysql, и он отлично работает с хешированием паролей md5. Это не очень безопасно, поэтому я хотел бы использовать crypt с солёным sha512, как я использую в dovecot.
Как это настроить в pure-ftpd?
Создание нового пользователя с проходом sha512:
INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`,
`ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`)
VALUES ('MyUserName',
'1',
ENCRYPT('_mypassword_', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))),
'2001',
'2001',
'/var/www/test',
'100',
'100',
'',
'*',
'50',
'0');
Значения в файле конфигурации:
MYSQLCrypt md5
MYSQLGetPW SELECT Password FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
Итак, мой вопрос в том, что мне нужно поместить в файл конфигурации, чтобы пароль был сгенерирован с использованием вышеуказанного метода.
Я думал, что меняется MYSQLCrypt
к crypt
должно хватить. Но это не работает.
Если какой-либо другой метод не работает, в руководстве описывается, как создать модуль аутентификации. http://download.pureftpd.org/pure-ftpd/doc/README.Authentication-Modules (но как мне его включить?)
pure-ftpd-mysql поддерживает крипту sha512 с солью.
Это так просто, как:
MYSQLCrypt crypt
И убедитесь, что ваш Password
колонка достаточно длинная. Для крипты $ 6 $ это 106 символов.
Итак, структура таблицы, работающей с вашим запросом, может быть такой:
CREATE TABLE ftpd (
User varchar(16) NOT NULL default '',
status enum('0','1') NOT NULL default '0',
Password varchar(106) 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)
) ENGINE=MyISAM;