Я хотел бы настроить chrooted SFTP-сервер с привилегиями только загрузки.
Я знаю, что когда-то делал это с FTP на FreeBSD с помощью SETUID. Все загруженные файлы автоматически принадлежали пользователю root, а остальные имели разрешение только на запись. Я узнал, что этот метод не работает в Linux (поправьте меня, если я ошибаюсь).
Я также встречал некоторые демоны FTP, позволяющие это, устанавливая umask для загружаемых файлов и запрещая использование chmod.
Ближе всего я подошел к следующему:
Я запускаю RHEL 6 с OpenSSH 5.3p1.
Смысл этого в том, чтобы иметь одну учетную запись SFTP, которую можно безопасно разделить между 50 людьми для доставки файлов на сервер, а не создавать 50 учетных записей SFTP.
ProFTPd определенно поддерживает режим эмуляции ssh для использования sftp, и я почти уверен, что он будет иметь обычный набор параметров конфигурации ftpd-normal для принудительного владения, управления загрузками и т. Д. Я думаю, что вам определенно стоит взглянуть на него. Я не могу помочь с конфигурацией только для загрузки ftpd, но вот мой код конфигурации для получения поддержки SFTP:
LoadModule mod_sftp.c
<VirtualHost 12.34.56.78>
SFTPEngine on
Port 443
SFTPLog /var/tmp/proftpd-sftp.log
SFTPHostKey /etc/ssh/ssh_host_rsa_key
SFTPHostKey /etc/ssh/ssh_host_dsa_key
DefaultRoot /home/testuser
<Limit LOGIN>
AllowGroup sftponly
DenyAll
</Limit>
</VirtualHost>
В Port 443
потому что у нас уже было sshd
работающий на порту 22, плюс нам пришлось поддерживать группу клиентов за множеством глубоко глупых брандмауэров, а порт 443 - это единственное место назначения, которое почти все сайты допускают без нагрузки. Там есть еще кое-что об ограничении доступа для одной группы пользователей и их перемещении в одно и то же место, которое вам, вероятно, не понадобится, но я включаю его, потому что могу подтвердить, что эта конфигурация работает как есть.