【问题标题】:Check FTP delete permission without trying to delete a file在不尝试删除文件的情况下检查 FTP 删除权限
【发布时间】:2020-02-03 14:47:11
【问题描述】:

我必须检查 FTP 服务器是否允许我删除文件。不删除现有文件或发送文件并尝试删除该文件。 目前,我使用“发送文件并尝试删除它”的虚拟解决方案,但有时我没有写入权限。

我使用 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服务器是否具有删除文件权限?如果是的话,

【问题讨论】:

    标签: c# ftp ftpwebrequest ftpwebresponse


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 感谢您的回复。我将 Filezilla 服务器用于 FTP 服务器,并尝试解释权限。我只授予了删除文件权限,但我获得了文件的 ---------- 属性和文件夹的 drwxr-xr-x 属性。正如我测试的那样,删除和创建权限是不一样的。看来没有机会了。
    • FileZilla FTP 服务器为所有目录返回硬编码的权限字符串drwxr-xr-x,无论真正的权限是什么。事实上,在 FileZilla FTP 服务器中,创建和删除权限是分开的。
    猜你喜欢
    • 2018-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-11
    • 2017-03-23
    • 1970-01-01
    相关资源
    最近更新 更多