检查 FTP 删除权限而不尝试删除文件

Check FTP delete permission without trying to delete a file

我必须检查 FTP 服务器是否允许我删除文件。不删除现有文件或发送文件并尝试删除该文件。 目前,我使用 'Send a file and try to Delete it' 虚拟解决方案,但有时我没有写权限。

我使用 Chilkat 库尝试了下面的代码,但据我所知,只有 Read、Write 和 Execute 属性,不存在 Delete 属性。

var ftp = new Chilkat.Ftp2();

ftp.Hostname = "127.0.0.1";
ftp.Username = "test";
ftp.Password = "test";

ftp.AuthTls = false;
ftp.PassiveUseHostAddr = true;


ftp.Connect();

// To get file permissions in UNIX format, disallow MSLD:
ftp.AllowMlsd = false;

if (ftp.GetDirCount() > 0)
{
    textBox1.AppendText("The permissions format is: " + ftp.GetPermType(0));
    textBox1.AppendText("\r\n");
}

for(var i = 0; i < ftp.GetDirCount();++i)
{ 
    // Display the permissions and filename
    textBox1.AppendText(ftp.GetPermissions(i) + " " + ftp.GetFilename(i));
    textBox1.AppendText("\r\n");
}

ftp.Disconnect();

那么,根据我上面的解释,是否可以判断FTP服务器是否有删除文件的权限呢?如果是,

FTP 协议中没有 API 来测试权限。

您可以尝试解释从 FTP 目录列表中获得的权限。

但是例如在 *nix 系统上,列表永远不会为您提供足够的信息来做出这样的决定。

顺便说一句,在 *nix 服务器上,如果您对文件的父目录具有写入权限,则您有权删除该文件。创建新文件的相同权限是什么。所以通常情况下,如果你可以创建一个文件,你就可以删除一个文件。但是 FTP 服务器通常会在系统权限之上强加另一个权限。这些通常包括创建和删除文件的单独权限。