0

这是一个非常奇怪的问题。我有一个带有 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 输出

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

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

1 回答 1

3

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

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

现在,我不确定是否是我的客户端(我尝试了多个 SFTP 客户端)故意尝试设置这些权限,或者它是否是 proFTPD 的默认设置,但使用了该IgnoreSFTPUploadPerms选项(在上面的链接部分中详细说明) docs),我能够阻止这种影响文件传输的情况:

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

于 2015-11-03T22:43:36.717 回答