Проверьте разрешение на удаление FTP, не пытаясь удалить файл

Я должен проверить, позволяет ли 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-сервер разрешение на удаление файла или нет? Если да,


person Mohammad-R    schedule 03.02.2020    source источник


Ответы (1)


В протоколе FTP нет API для проверки разрешений.

Вы можете попытаться интерпретировать разрешения, которые вы получаете из списка каталогов FTP.

Но, например, в системах *nix листинг никогда не даст вам достаточно информации для такого решения.

Кстати, на серверах * nix у вас есть права на удаление файла, если у вас есть права на запись в его родительский каталог. Что такое те же разрешения для создания нового файла. Так что обычно, если вы можете создать файл, вы можете удалить файл. Но FTP-серверы обычно налагают другие разрешения поверх системных разрешений. И они обычно включают отдельные разрешения для создания и удаления файлов.

person Martin Prikryl    schedule 03.02.2020
comment
Спасибо за ответ. Я использовал Filezilla Server для FTP-сервера и пытался интерпретировать разрешения. Я предоставил только разрешение на удаление файлов, но я получаю атрибут ---------- для файлов и drwxr-xr-x для папок. И, как я тестировал, разрешения на удаление и создание не совпадают. Кажется, что шансов нет. - person Mohammad-R; 03.02.2020
comment
FTP-сервер FileZilla возвращает жестко заданную строку разрешений drwxr-xr-x для всех каталогов, независимо от того, каковы настоящие разрешения. И действительно, на FTP-сервере FileZilla права на создание и удаление разделены. - person Martin Prikryl; 03.02.2020
comment
См. svn.filezilla -project.org/filezilla/FileZilla%20Server/trunk/ - person Martin Prikryl; 03.02.2020