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

Запретить удаление после загрузки SFTP

Я хотел бы запретить пользователям удалять файлы, которые они загрузили на мой сервер sftp. Я знаю, что могу создать собственное решение, используя inotify / dnotify (или pam hook) и lsof, который запускает скрипт для выполнения чего-то вроде chattr +i $filename после загрузки файла и закрыто. Но мне интересно, есть ли что-то уже доступное как функция или уже проверенное и доступное решение, о котором я не знаю.

Текущая настройка такова, что я использую openssh sftp, и пользователи попадают в тюрьму после подключения.

Если вы добавите свой sftp-server опция umask -u с параметром 0222, новые загруженные файлы будут созданы с указанной выше umask, что означает, что у них не будет доступа на запись для своих файлов, поэтому они не смогут удалить файлы.

Линия в вашем sshd_config будет выглядеть примерно так:

Subsystem sftp internal-sftp -u 0222

Посмотрите lsyncd (http://code.google.com/p/lsyncd/). Он предоставит часть действия inotify => для вашего решения. Это будет выглядеть так:

cat /etc/lsyncd.conf 
settings {
    logfile    = "/var/log/lsyncd.log",
    statusFile = "/var/run/lsyncd.status",
    nodaemon   = false,
    insist     = true,
}

-- config action
my_config = {
    delay = 10,
    maxProcesses = 1,
    onCreate  = "chattr +i -R /path/to/dir/*",
}

sync { my_config,
    source="/path/to/dir/",
}
-- EOF

вы можете изменить действие onCreate для лучшей логики, возможно, запустить скрипт, который найдет загруженные файлы и установит chattr + i.