Настройка ProFTPd с виртуальными пользователями в файле

Допустим есть установленный ProFTPd сервер, например как я описывал в этой статье — Установка и настройка ProFTPd в Ubuntu

Далее опишу процесс настройки ProFTPd с виртуальными пользователями в файле.

Откроем конфигурацию ProFTPd в любом текстовом редакторе:

sudo nano /etc/proftpd/proftpd.conf

Укажем параметры:

DefaultRoot ~
RequireValidShell off
AuthUserFile /etc/proftpd/ftpd.passwd
AuthGroupFile /etc/proftpd/ftpd.group
AuthOrder mod_auth_file.c

Как видим для авторизации пользователей используется только модуль mod_auth_file.c, соответственно логины и пароли берутся только из файла /etc/proftpd/ftpd.passwd.

Теперь создадим например пользователя test:

sudo ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=test --uid=60 --gid=60 --home=/srv/ftp/test/ --shell=/bin/false

После этой команды будет создан файл /etc/proftpd/ftpd.passwd схожей структуры с /etc/passwd.
UID и GID можно указывать любые, желательно кроме 0 (это root) и тех что указаны в /etc/passwd.
Можно также указать UID и GID аналогичные как у пользователя в /etc/passwd, например 33 как у пользователя www-data, чтобы предоставить похожие права к веб файлам и указать домашней директорией /var/www.
Можно создавать пользователей с одинаковыми UID и GID, разными домашними директориями и с учетом что им запрещено выходить выше уровня своей директории (параметр DefaultRoot ~ в конфигурации сервера).

Модуль mod_auth_file требует чтобы доступ к чтению и записи на файл /etc/proftpd/ftpd.passwd был запрещен для всех пользователей, по этому укажем права:

chmod 640 /etc/proftpd/ftpd.passwd
chown proftpd:root /etc/proftpd/ftpd.passwd

Иначе будет ошибка при запуске proftpd:

mod_auth_file/1.0: unable to use world-readable AuthUserFile ‘/etc/proftpd/ftpd.passwd’: Операция не позволена

Создадим файл ftpd.group:

sudo ftpasswd --group --name=nogroup --file=/etc/proftpd/ftpd.group --gid=60 --member test

Проверим правильность конфигурации:

sudo proftpd -t

Перезапустим ProFTPd чтобы применить изменения:

sudo /etc/init.d/proftpd restart

Так как пароли в файле хранятся в шифрованном виде, то менять пароль пользователю можно так:

sudo ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=test --change-password

Можно заблокировать/разблокировать пользователя (добавляется/убирается символ ! в файле ftpd.passwd перед хешем пароля, тем самым делая невозможным подключение пользователя):

sudo ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=test2 --lock
sudo ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=test --unlock

Удалить пользователя можно так:

sudo ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=test --delete-user

ftpasswd является скриптом написанным на Perl, обычно находится в /usr/sbin/ftpasswd.

Смотрите также мои статьи:

Оставьте комментарий

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