6

В настоящее время мне нужно использовать очень ограниченный FTP-клиент / адаптер для загрузки некоторых файлов на удаленный сервер. Я говорю «ограниченный», потому что полученные файлы в конечном итоге попадают на удаленный сервер с разрешениями 000, и, похоже, нет способа настроить, какими должны быть разрешения, в отличие от некоторых других клиентов. (Я знаю, что WinSCP может это сделать.)

Коллега сказал мне, что FTP полностью независим от прав доступа к файлам и просто передает данные файла. Предполагая, что это правильно, как клиент, такой как WinSCP, устанавливает права доступа к файлу на удаленном сервере? Мне было предложено, что клиент, вероятно, выполняет chmod через SSH, т.е. устанавливает разрешения после факта.

1 ответ1

8

Ваш коллега прав, в том смысле, что RFC 959 за октябрь 1985 года, похоже, не предоставляет команду, специально предназначенную для изменения разрешений. RFC 959 предоставляет спецификации команд для загрузки файлов (на странице 30 RFC 95 есть команда "STOR" для хранения файлов), загрузки файлов (на странице 30 есть команда "RETR" для извлечения файлов) и дополнительные расширения, такие как MKD (make directory) и RMD (удалить каталог). В RFC отмечается:«Это является прерогативой процесса FTP-сервера для вызова доступа», "контроля". (Тем не менее, из моего прочтения RFC я считаю, что упомянутые "средства управления доступом" больше относятся к поддержке возможности входа в систему с именем пользователя и не намерены ссылаться на идею использования FTP для изменения разрешений файлы.)

На странице 47 RFC 959 содержится список команд, встроенных в спецификацию FTP RFC 959. Какое-то время мне было интересно создать FTP-сервер для конкретной платформы, и я прочитал каждую из этих команд. Я также просмотрел реестр IANA «Команды и расширения FTP», на который ссылается RFC 5797 за март 2010 года. Я не помню ни одной из этих команд, предоставляющих способ изменения разрешений, кроме одной:

RFC 959 стр.33 имеет команду «САЙТ». (Некоторые FTP-клиенты имеют локальную команду «QUOT» или «quote», которая в итоге отправляет команду SITE на FTP-сервер.) По сути, стандарт команды SITE заключается в том, что текст отправляется на FTP-сервер, и FTP-сервер решает, что с ним делать. Использование этой команды может привести к изменению прав доступа к файлам, поиску файлов на сайте или перезагрузке FTP-сервера. Теоретически, отправка команды «HELP SITE» покажет детали некоторых функций, предоставляемых командой site. RFC 959 стр. 33 даже указывает это:

«Характер этих услуг и
уточнение их синтаксиса может быть указано в ответе
команда ПОМОЩЬ САЙТА. »

Сложность этой теории состоит в том, что команда «HELP SITE» на самом деле приводит к отображению текста с FTP-сервера, а неполная документация может фактически не документировать каждую доступную возможность.

Основываясь на ответе Джонатана Леффлера на вопрос knoti99 о «синтаксисе chmod в FTP», мы видим, что классическая программа «ncftp» действительно использовала команду «SITE CHMOD» для реализации команды «chmod» ncftp, и что эта функция не поддерживалась все FTP серверы.

Еще одна дополнительная заметка, когда я заканчиваю часть этого ответа по FTP: FTP очень сниффин. По сути, я имею в виду, что FTP выполняет действия с использованием "открытого текста". Если вы используете программное обеспечение "перехвата пакетов" ("перехват пакетов"), такое как tcpdump или Wireshark, вы можете увидеть, что происходит с FTP. Если вы попытаетесь передать файл, который представляет собой небольшой текстовый файл, и посмотрите, что происходит с сетевым трафиком, результаты, вероятно, будут довольно легко понять. Используя такой подход, вы можете изменить разрешения и посмотреть, какие команды на самом деле использует программное обеспечение. Я знаю, что это может занять немного больше времени для настройки, поэтому этот ответ предоставил много более простых для получения деталей, но знание об этом процессе может быть полезным, если вы начинаете удивляться любым другим деталям о том, что происходит во время FTP коммуникации.

(Я отредактировал этот ответ, чтобы добавить ответ к другой части вопроса.)

Мне было предложено, что клиент, вероятно, выполняет chmod через SSH, т.е. устанавливает разрешения после факта.

Я думаю, что это хорошее предположение, хотя я не думаю, что это верно, когда дело доходит до FTP. На самом деле, это предположение, вероятно, точно описывает точный процесс, который используется всякий раз, когда используются протоколы SFTP и SCP. Поскольку оба этих протокола основаны на SSH, команда "chmod" может отправляться с использованием того же соединения SSH, которое используется в качестве остальной части зашифрованного соединения. Из моего прочтения этих протоколов я считаю, что именно так обычно устанавливаются разрешения для файлов при использовании SFTP (и SCP, если это также поддерживает установку разрешений для файлов).

Однако способ, которым это обычно обрабатывается с помощью протокола FTP, это совсем другая история, как я только что описал ранее. Если вы используете протокол FTP, который является открытым текстом, то технически возможно, но довольно маловероятно, что SSH используется для отслеживания. (Если программное обеспечение достаточно способно поддерживать SSH, то оно обычно также поддерживает SFTP или SCP или оба. В результате поддержка старого протокола FTP обычно разрабатывается таким образом, чтобы сложность зашифрованных соединений не использовалась как часть процесса.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .