Проверьте разрешение на удаление FTP, не пытаясь удалить файл - PullRequest
1 голос
/ 03 февраля 2020

Я должен проверить, позволяет ли FTP-сервер мне удалять файл или нет. Без удаления существующего файла или отправки файла и попытки удаления этого файла. На данный момент я использую фиктивное решение «Отправить файл и попытаться удалить его», но иногда у меня нет разрешения на запись.

Я пробовал приведенный ниже код с использованием библиотеки Chilkat, но, как я знаю, там являются только атрибутами «Чтение», «Запись» и «Выполнение», а атрибут «Удалить» не существует.

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

1 Ответ

0 голосов
/ 03 февраля 2020

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

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

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

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

...