FileZilla 报告“权限被拒绝”但清空文件(删除所有文件内容)

FileZilla 报告“权限被拒绝”但清空文件(删除所有文件内容)

我觉得这个问题很奇怪。我获得了我正在处理的站点的 FTP 访问权限,但似乎存在权限问题。在 FileZilla 中,如果我尝试编辑文件并重新上传到服务器,我会收到错误Permission denied,但同时编辑后的文件的内容会在服务器上被删除!所以我最终处于远程文件损坏(所有内容都被删除 - 0B!)的情况,但我没有权限修复它。

大多数文件夹的权限设置为 775,文件的权限设置为 664。

  • 为什么我会收到permission denied错误?我的权限有什么问题?
  • 如果我确实没有被授予写入文件的权限,为什么它的内容会被删除?

我在这里附加了两个 FileZilla 日志,其中一个已关闭调试:

10:32:02    Status: Connecting to [IP.ADD.RE.SS:PORT]...
10:32:05    Status: Connected to [IP.ADD.RE.SS]
10:32:05    Status: Retrieving directory listing...
10:32:05    Status: Listing directory /
10:32:06    Status: Directory listing of "/" successful
10:32:12    Status: Connecting to [IP.ADD.RE.SS:PORT]...
10:32:14    Status: Connected to [IP.ADD.RE.SS]
10:32:15    Status: Starting download of /wp-config.php
10:32:15    Status: remote:/wp-config.php => local:/tmp/fz3temp-1/wp-config.php
10:32:16    Status: File transfer successful, transferred 3.4 KB in 1 second
10:32:29    Status: Starting upload of /tmp/fz3temp-1/wp-config.php
10:32:30    Command:    put "/tmp/fz3temp-1/wp-config.php" "wp-config.php"
10:32:30    Error:  /wp-config.php: open for write: permission denied
10:32:30    Error:  File transfer failed
10:32:30    Status: Starting upload of /tmp/fz3temp-1/wp-config.php
10:32:30    Status: Retrieving directory listing of "/"...
10:32:30    Status: Listing directory /
10:32:39    Status: Skipping upload of /tmp/fz3temp-1/wp-config.php
10:32:39    Status: File transfer skipped
10:33:39    Status: Disconnected from server

和其他正在调试的

10:46:32    Status: Connecting to [IP.ADD.RE.SS:PORT]...
10:46:32    Trace:  Going to execute /usr/bin/fzsftp
10:46:32    Response:   fzSftp started, protocol_version=6
10:46:32    Trace:  CSftpControlSocket::ConnectParseResponse(fzSftp started, protocol_version=6)
10:46:32    Trace:  CSftpControlSocket::SendNextCommand()
10:46:32    Trace:  CSftpControlSocket::ConnectSend()
10:46:32    Command:    open "gqwp@[IP.ADD.RE.SS]" [PORT]
10:46:32    Trace:  Server version: SSH-2.0-mod_sftp/0.9.7
10:46:32    Trace:  We believe remote version has SSH-2 RSA padding bug
10:46:32    Trace:  Using SSH protocol version 2
10:46:32    Trace:  Doing Diffie-Hellman group exchange
10:46:33    Trace:  Doing Diffie-Hellman key exchange with hash SHA-256
10:46:33    Trace:  Server also has ssh-dss host key, but we don't know it
10:46:33    Trace:  Host key fingerprint is:
10:46:33    Trace:  ssh-rsa 2048 [LO:NG:SSH:FI:NG:ER:PR:INT]
10:46:33    Trace:  Initialised AES-256 SDCTR client->server encryption
10:46:33    Trace:  Initialised HMAC-SHA1 client->server MAC algorithm
10:46:33    Trace:  Initialised AES-256 SDCTR server->client encryption
10:46:33    Trace:  Initialised HMAC-SHA1 server->client MAC algorithm
10:46:33    Trace:  Pageant is running. Requesting keys.
10:46:34    Trace:  Pageant has 1 SSH-2 keys
10:46:34    Trace:  Attempting keyboard-interactive authentication
10:46:34    Trace:  Using keyboard-interactive authentication. inst_len: 0, num_prompts: 1
10:46:34    Command:    Pass: **************
10:46:34    Trace:  Access granted
10:46:34    Trace:  Opening session as main channel
10:46:34    Trace:  Opened main channel
10:46:34    Trace:  Started a shell/command
10:46:34    Status: Connected to [IP.ADD.RE.SS]
10:46:35    Trace:  CSftpControlSocket::ConnectParseResponse()
10:46:35    Trace:  CSftpControlSocket::ResetOperation(0)
10:46:35    Trace:  CControlSocket::ResetOperation(0)
10:46:35    Trace:  CFileZillaEnginePrivate::ResetOperation(0)
10:46:35    Trace:  CSftpControlSocket::FileTransfer(...)
10:46:35    Status: Starting upload of /tmp/fz3temp-1/wp-config.php
10:46:35    Trace:  CSftpControlSocket::SendNextCommand()
10:46:35    Trace:  CSftpControlSocket::ChangeDirSend()
10:46:35    Command:    cd "/"
10:46:35    Response:   New directory is: "/"
10:46:35    Trace:  CSftpControlSocket::ResetOperation(0)
10:46:35    Trace:  CControlSocket::ResetOperation(0)
10:46:35    Trace:  CSftpControlSocket::ParseSubcommandResult(0)
10:46:35    Trace:  CSftpControlSocket::FileTransferSubcommandResult()
10:46:35    Trace:  CSftpControlSocket::SendNextCommand()
10:46:35    Trace:  FileTransferSend()
10:46:35    Command:    put "/tmp/fz3temp-1/wp-config.php" "wp-config.php"
10:46:35    Error:  /wp-config.php: open for write: permission denied
10:46:35    Trace:  FileTransferParseResponse(2)
10:46:35    Trace:  CSftpControlSocket::ResetOperation(2)
10:46:35    Trace:  CControlSocket::ResetOperation(2)
10:46:35    Error:  File transfer failed
10:46:35    Trace:  CFileZillaEnginePrivate::ResetOperation(2)
10:46:35    Trace:  CSftpControlSocket::FileTransfer(...)
10:46:35    Status: Starting upload of /tmp/fz3temp-1/wp-config.php
10:46:35    Trace:  CSftpControlSocket::ParseSubcommandResult(0)
10:46:35    Trace:  CSftpControlSocket::FileTransferSubcommandResult()
10:46:35    Status: Retrieving directory listing of "/"...
10:46:36    Trace:  sftpcontrolsocket.cpp(836): List called from other command   caller=0x7f3db4003080
10:46:36    Trace:  CSftpControlSocket::ParseSubcommandResult(0)
10:46:36    Trace:  CSftpControlSocket::ListSubcommandResult()
10:46:36    Trace:    state = 1
10:46:36    Trace:  CSftpControlSocket::SendNextCommand()
10:46:36    Trace:  CSftpControlSocket::ListSend()
10:46:36    Trace:    state = 3
10:46:36    Command:    ls
10:46:36    Status: Listing directory /
10:46:37    Trace:  CSftpControlSocket::ListParseResponse()
10:46:37    Trace:  CSftpControlSocket::ResetOperation(0)
10:46:37    Trace:  CControlSocket::ResetOperation(0)
10:46:37    Trace:  CSftpControlSocket::ParseSubcommandResult(0)
10:46:37    Trace:  CSftpControlSocket::FileTransferSubcommandResult()
10:46:41    Trace:  CSftpControlSocket::SendNextCommand()
10:46:41    Trace:  FileTransferSend()
10:46:41    Command:    put "/tmp/fz3temp-1/wp-config.php" "wp-config.php"
10:46:41    Error:  /wp-config.php: open for write: permission denied
10:46:41    Trace:  FileTransferParseResponse(2)
10:46:41    Trace:  CSftpControlSocket::ResetOperation(2)
10:46:41    Trace:  CControlSocket::ResetOperation(2)
10:46:41    Error:  File transfer failed
10:46:41    Trace:  CFileZillaEnginePrivate::ResetOperation(2)
10:46:41    Trace:  CSftpControlSocket::FileTransfer(...)
10:46:41    Status: Starting upload of /tmp/fz3temp-1/wp-config.php
10:46:41    Trace:  CSftpControlSocket::ParseSubcommandResult(0)
10:46:41    Trace:  CSftpControlSocket::FileTransferSubcommandResult()
10:46:41    Status: Retrieving directory listing of "/"...
10:46:41    Trace:  sftpcontrolsocket.cpp(836): List called from other command   caller=0x7f3db4003080
10:46:41    Trace:  CSftpControlSocket::ParseSubcommandResult(0)
10:46:41    Trace:  CSftpControlSocket::ListSubcommandResult()
10:46:41    Trace:    state = 1
10:46:41    Trace:  CSftpControlSocket::SendNextCommand()
10:46:41    Trace:  CSftpControlSocket::ListSend()
10:46:41    Trace:    state = 3
10:46:41    Command:    ls
10:46:41    Status: Listing directory /
10:46:42    Trace:  CSftpControlSocket::ListParseResponse()
10:46:42    Trace:  CSftpControlSocket::ResetOperation(0)
10:46:42    Trace:  CControlSocket::ResetOperation(0)
10:46:42    Trace:  CSftpControlSocket::ParseSubcommandResult(0)
10:46:42    Trace:  CSftpControlSocket::FileTransferSubcommandResult()
10:46:42    Trace:  CSftpControlSocket::SendNextCommand()
10:46:42    Trace:  FileTransferSend()
10:46:42    Command:    put "/tmp/fz3temp-1/wp-config.php" "wp-config.php"
10:46:42    Error:  /wp-config.php: open for write: permission denied
10:46:42    Trace:  FileTransferParseResponse(2)
10:46:42    Trace:  CSftpControlSocket::ResetOperation(2)
10:46:42    Trace:  CControlSocket::ResetOperation(2)
10:46:42    Error:  File transfer failed
10:46:42    Trace:  CFileZillaEnginePrivate::ResetOperation(2)
10:46:42    Status: Retrieving directory listing of "/"...
10:46:42    Trace:  CSftpControlSocket::ParseSubcommandResult(0)
10:46:42    Trace:  CSftpControlSocket::ListSubcommandResult()
10:46:42    Trace:    state = 1
10:46:42    Trace:  CSftpControlSocket::SendNextCommand()
10:46:42    Trace:  CSftpControlSocket::ListSend()
10:46:42    Trace:    state = 3
10:46:42    Command:    ls
10:46:43    Status: Listing directory /
10:46:43    Trace:  CSftpControlSocket::ListParseResponse()
10:46:43    Trace:  CSftpControlSocket::ResetOperation(0)
10:46:43    Trace:  CControlSocket::ResetOperation(0)
10:46:43    Status: Directory listing of "/" successful
10:46:43    Trace:  CFileZillaEnginePrivate::ResetOperation(0)

答案1

检查 FileZilla/PuTTY 源代码,很明显 FileZilla 在尝试打开文件进行写入时确实收到了“权限被拒绝”错误。

如果尽管出现错误但文件内容仍被删除,那么这一定是 SFTP 服务器的错误/配置错误。

相关内容