Я использую 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-клиентом, который я пробую, при перечислении files я получаю только числовой 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. имя владельца
и UNIX.groupname
, должны быть зарегистрированы в IANA для использования в списках MLSD
, чтобы иметь возможность предоставлять имена пользователей / групп в списках с помощью этой команды. Я скоро добавлю их поддержку в ProFTPD .
Надеюсь, это поможет!