SFTP 上传后拒绝删除

SFTP 上传后拒绝删除

我想防止用户删除他们已上传到我的 sftp 服务器的文件。我知道我可以使用 inotify/dnotify(或 pam hook)和 lsof 来设置自己的解决方案,它会触发脚本执行某些操作,例如chattr +i $filename在文件上传后已关闭。但我想知道是否有一些功能已经可用,或者有解决方案已经过审查并可用,而我却不知道。

当前的设置是,我正在使用 openssh sftp,用户在连接时就会被监禁。

答案1

看看 lsyncd(http://code.google.com/p/lsyncd/)。它将为您的解决方案提供 inotify=>action 部分。它看起来会像这样:

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。

答案2

如果您使用参数添加sftp-serverumask 选项,则新上传的文件将使用上面提到的 umask 创建,这意味着它们将没有对其文件的写访问权限,因此它们将无法删除这些文件。-u0222

你的遗嘱内容sshd_config如下:

Subsystem sftp internal-sftp -u 0222

相关内容