Linux: запретить пользователям SFTP удалять файлы FTP даже сразу после их загрузки?

Я установил группу sftpusers на своем компьютере CentOS и использую внутреннюю службу SFTP, чтобы пользователи могли загружать файлы в каталог, настроенный для chroot.

Владелец каталога - root, а его группа - sftpusers, и у них есть разрешение на чтение / запись, которое позволяет им загружать файлы через SFTP.

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

Итак, мои вопросы:

1) Есть ли способ сделать это, используя простые разрешения?

2) Есть ли способ установить "разрешения по умолчанию" для любых файлов, загружаемых членом группы sftpusers? Чтобы после загрузки файла он автоматически не читался или как?

3) Есть ли другой способ сделать это, который не использует скрипт cron, выполняемый каждую минуту, или что-то еще, чтобы изменить разрешения?

4) Есть ли способ запустить скрипт (или иным образом вызвать какое-либо событие) сразу после завершения загрузки файла? Какой-то тип события "onFileFinishUpload", который я могу каким-то образом подключить?

Ура!

1 ответ

Решение

Извинения, у меня недостаточно репутации, чтобы размещать все ссылки в строке. Я подготовил суть, которая сохраняет их: https://gist.github.com/3590779

  1. Нет способа достичь этого с простыми разрешениями. Благодаря sftp-серверу OpenSSH вы не сможете реализовать полный список требований, но в зависимости от файловой системы, в которую загружаются файлы, вы можете использовать [атрибуты] и [ACL] для достижения некоторых ваших требований.

  2. Да, [sftp-server принимает параметр -u] (вы можете установить это в вашем [sshd_config] на Subsystem sftp строка), которая устанавливает Umask для всех загрузок.

  3. Да, вы можете использовать inotify, одним способом может быть инструмент [incron], хотя есть много способов использовать inotify. Inotify позволяет ядру уведомлять пользовательскую программу о событии файловой системы, которое вы идентифицируете, например, добавление файла в каталог. Затем вы можете запустить команду для этого события.

    (3 часть 2) Альтернативный подход, который может вам не подойти, - это использовать что-то вроде vsftpd с защищенным SSL протоколом FTP. Это позволяет использовать шифрованный FTP, но поскольку vsftpd является полнофункциональным FTP-сервером, он обеспечивает простую настройку (см. [Chown_uploads параметр] в vsftpd.conf) для точного соответствия вашим потребностям.

  4. Да, через подсистему inotify вы можете зарегистрировать наблюдение за событием [IN_CLOSE_WRITE].

Другие вопросы по тегам