1

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

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

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

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

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

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

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

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

Ура!

1 ответ1

2

Извинения У меня нет достаточной репутации, чтобы разместить все ссылки в строке. Я подготовил суть, которая сохраняет их: 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].

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .