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

Как я могу ограничить загрузку определенных расширений файлов через ssh?

Как я могу ограничить определенные расширения файлов и размер загружаемых файлов через SSH?

Я использую установку Ubuntu 12.10 по умолчанию и сервер Open-ssh.

OpenSSH изначально не имеет этих возможностей, хотя вы можете частично сделайте это с коммерческими продуктами (на ум приходят CrushFTP, Linoma или Barracuda).

Если вы хотите применить фильтрацию содержимого к загрузкам, вы можете сделать это с помощью OpenSSH, разрешив пользователям загружать файлы во входящую очередь, а также периодически сканировать и перемещать одобренный контент в исходящую очередь, это также работает для сканирования аудио / видео. incron должен помочь с этим. Он не будет работать эффективно для загрузок на основе размера, если вы намерены сэкономить пропускную способность, размер файла. является часть протокола scp, для этого требуется, чтобы клиент давал советы, но не обязательно учитывать размер файла.


Обновить: поскольку OpenSSH позволяет делегировать сервер sftp внешнему процессу (через Subsystem в sshd_config) вы можете реализовать свой собственный SFTP-сервер. Perl Net::SFTP:SftpServer модуль представляет собой полную реализацию, и в документации есть рабочий пример (обязательно установите все его зависимости, правильно настройте системный журнал, чтобы он регистрировался, и удалите ARGV проверяет, не превращаете ли вы этот скрипт в оболочку пользователя).

Он имеет настраиваемый параметр максимального размера файла и поддерживает функции обратного вызова для событий передачи файлов, позволяя вам проверять имя файла (и содержимое), хотя обратные вызовы только вызываются после завершение перевода.

Вы можете тривиально исправить makeSafeFileName() функционировать в SftpServer.pm чтобы добавить условия для имени файла, у него уже есть (настраиваемый) тест регулярного выражения для правильных имен файлов (хотя обратите внимание, что это относится ко всем именам, включая каталоги); или добавьте дополнительный тест для $filename в функции processOpen() какой обработанный файл открывается (наверное, лучше).

Вы можете включить его глобально в sshd_config с участием Subsystem sftp ..., или вы можете выборочно использовать его через ForceCommand для группы пользователей:

Match Group sftplimited
    ForceCommand /usr/local/bin/sftp-server.pl