Я использую 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 скоро.
Надеюсь это поможет!