Назад | Перейти на главную страницу

ProFTPd: как отображать виртуальное имя пользователя в списках?

Я использую ProFTPd 1.3.5a (кстати, у меня такое же поведение на более старой версии 1.3.4d) с довольно распространенной настройкой виртуальных пользователей для веб-сервера.

Проще говоря, ProFTPd работает с UID / GID apache и имеет свои локальные файлы для аутентификации. Все пользователи имеют один и тот же реальный UID / GID (опять же, apache) и привязаны к своим каталогам с записями DirFake *.

Это отрывок из конфигурации:

AuthPAM off
AuthOrder mod_auth_file.c
AuthUserFile /etc/proftpd/ftpd.passwd
AuthGroupFile /etc/proftpd/ftpd.group
UseFtpUsers off
DefaultRoot ~
DefaultChdir /
DirFakeUser on ~
DirFakeGroup on ~
DirFakeMode 0644
ShowSymLinks off
Umask 026 027

<Directory ~/>
  UserOwner www-data
  GroupOwner www-data
</Directory>

Но с каждым ftp-клиентом, который я пробую, при перечислении файлов я получаю только числовой UID / GID, а не виртуальное имя пользователя. Это также раздражает, потому что клиенты, такие как CyberDuck, будут считать, что числовой идентификатор не совпадает с идентификатором пользователя, с которым они связаны, и покажут все файлы / каталоги как недоступные (даже если затем попытка доступа к ним действительно работает).

редактировать: на сервере есть "настоящий" пользователь www-data с UID 33 и групповыми www-данными с GID 33, ProFTPd работает с этим UID / GID, виртуальные пользователи в /etc/proftpd/ftpd.[passwd|group] все имеют uid = gid = 33, все файлы в каталогах пользователей имеют uid = gid = 33. Сейчас ftp-клиенты перечисляют все файлы как uid 33 и gid 33 и не могут преобразовать числовые идентификаторы в имена пользователей / групп. Я не хочу показывать файлы как принадлежащие www-data в ftp-клиентах, но принадлежащих имени пользователя, которое они использовали для аутентификации. Это тоже то, что mod_ls будет делать с DirFake* варианты, как я понял: закидывание фейкового пользователя / группы подключенным клиентам. Он не делает этого или, по крайней мере, делает это только для числовых идентификаторов.

Как я могу позволить ProFTPd показывать клиентам виртуальное имя пользователя в списках?

Некоторые FTP-клиенты теперь используют более новую MLSD/MLST команды, а не LIST и NLST, для вывода списка файлов; у этих более новых команд нет фактов для имен, только идентификаторы. Таким образом, вы можете попробовать добавить FactsAdvertise off на ваш proftpd.conf, который сообщает ProFTPD не рекламировать что он может обрабатывать эти новые команды FTP. Это, в свою очередь, должно привести к тому, что FTP-клиенты вернутся к более старым командам FTP, которые предоставляют имена.

Обновить: Я запросил два новых факта, относящихся к ОС, UNIX.ownername и UNIX.groupname, быть зарегистрированным в IANA для использования в MLSD списки, чтобы иметь возможность предоставлять имена пользователей / групп в списках с помощью этой команды. Я добавлю их поддержку в ProFTPD скоро.

Надеюсь это поможет!