具有组写访问权限的用户的SFTP覆盖失败

时间:2015-11-03 20:31:25

标签: ubuntu ftp sftp file-permissions proftpd

这是一个非常奇怪的。我有一个带有proFTPD的Ubuntu服务器设置(12.04),我打开了SFTP。我有一个用户,我希望能够编辑一组文件。这些文件由用户www-data和组www-data拥有。这些文件具有权限664.用户位于www-data组中,并且能够通过shell通过ssh连接时查看和编辑文件。但是,通过SFTP,用户可以查看这些文件,但尝试编辑它们会导致SFTP报告拒绝权限,然后导致文件大小为零。但是,用户可以删除和移动文件。任何人都可以想到为什么会发生这种情况的原因吗?我还尝试将文件的组所有权更改为另一个组,并将用户添加到该组,但同样的问题也出现了。

使用proFTPD在常规FTP上不会出现此问题。

编辑:根据要求,错误的全文(这是通过sftp命令行交互模式):

Uploading /Users/leonaves/Desktop/testfile to /testfile
remote open("/testfile"): Permission denied

编辑2:用户主目录的ls -l输出:

ls -l output

编辑3:SFTP日志显示以下内容:

error changing permissions of '/testfile' to 0100644: Operation not permitted

1 个答案:

答案 0 :(得分:1)

所以,问题在于,无论出于何种原因,proFTPD在上传到0644之前都试图设置文件的权限,但由于用户不是所有者,因此不能。它试图设置这些权限的原因是proFTPD文档(http://www.proftpd.org/docs/contrib/mod_sftp.html#SFTPOptions)中的详细信息:

  

当SFTP客户端上载文件或创建目录时,路径上的所需权限将作为上载的一部分发送到服务器。 (这与FTP不同,后者不包括上传中的文件权限。)

现在,我不确定是否是我的客户端(我试过多个SF​​TP客户端)有目的地试图设置这些权限,或者它是否是proFTPD的默认设置,但使用IgnoreSFTPUploadPerms选项(在文档的上述链接部分详细说明,我能够阻止这种影响文件传输:

  

如果由于任何原因需要更多类似FTP的功能,并希望mod_sftp静默忽略SFTP客户端发送的任何权限,请使用此选项。