Как FTP-клиент устанавливает права доступа к файлам на сервере?

2482
Scott Oliver

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

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

6
Это не имеет ничего общего с SSH. Просто доступна команда CHMOD FTP. Кроме того, большинство FTP-серверов поддерживают установку режима по умолчанию для вновь создаваемых файлов. Seth 7 лет назад 2
Точно так же, как FYI ... Обычно для обмена FTP вы просто подключаетесь к почтовому ящику сервера / FTP с клиентом, а затем загружаете его в соответствующий каталог загрузки. Если у вас есть разрешение, загрузка завершена, если нет, вам отказано в доступе и т. Д. Клиенту «обычно» не нужно устанавливать разрешения, особенно с WinSCP - по крайней мере, мне никогда не приходилось делать это с WinSCP для сотен FTP обмены, которые я поддерживаю и поддерживаю, которые автоматизированы. Как только файлы попадают на FTP-сервер, работа клиента завершена. В противном случае разрешите администраторам получателя или FTP работать с разрешениями сервера. Pimp Juice IT 7 лет назад 1
@Seth: Поскольку вы делали свой комментарий до того, как мой ответ был опубликован, я хотел бы отметить, что команда FTP «CHMOD» на самом деле не является частью протокола передачи файлов, несмотря на то, что несколько клиентских программных продуктов FTP могут показаться, что поддержать такую ​​команду. (Я обсуждаю это далее в моем ответе.) TOOGAM 7 лет назад 0
@Walmart Что это за "сотни FTP-обменов"? Сайты, обменивающиеся данными, которые распространяются публично? Я думаю, что многие люди используют FTP для загрузки содержимого HTML, а затем хотят изменить разрешения, чтобы файлы стали доступны для широкой публики. Это очень небезопасная практика, которую я не рекомендую (использование SFTP / SCP / HTTPS предпочтительнее), но я считаю, что эта практика все еще широко распространена (к сожалению). Я просто предполагаю, что могут быть разные сценарии «сценариев использования», где такие функции могут использоваться более интенсивно, чем другие сценарии. TOOGAM 7 лет назад 1
@TOOGAM спасибо за указание, ваш ответ интересно прочитать! Тем не менее, поскольку это команда SITE, это будет команда FTP (реализация зависит от программного обеспечения сервера), и SSH не будет задействован (к чему я действительно стремился). Прямо сейчас (с учетом вашей информации) я бы предположил, что FTP-сервер плохо настроен или что какой-то другой процесс мешает. Seth 7 лет назад 0
@TOOGAM Ах ... Я не думал об этом в этом контексте, но это, безусловно, имеет смысл, и, к сожалению, мне тоже пришлось настроить такую ​​конфигурацию, чтобы разрешить FTP-доступ к «тестовой» директории IIS на IIS-сервере один раз, чтобы разработчики вносят изменения в тестовый сайт на операционной системе производственного сервера (отдельные тестовые и прод-сайты в одной и той же ОС). Кроме того, сотни автоматизированных заданий не являются общедоступными по большей части из-за того, о чем я, кстати, говорил, но то, что вы добавили, проясняет и имеет смысл. +1 на ваш ответ. Pimp Juice IT 7 лет назад 0
FTP-клиент не может установить атрибуты файла на сервере. Фактически, он не может ничего сделать с сервером, кроме как запросить, чтобы сервер что-то сделал для него. (Предполагая, что это не использует ошибки на сервере.) David Richerby 7 лет назад 0
Вы на самом деле используете sftp, как отмечено? sftp - это совершенно другой протокол, чем ftp или ftps. Ответ для ftp или ftps будет отличаться от ответа для sftp. Если вы не используете sftp, тег должен быть удален. Wayne Conrad 7 лет назад 1
@WayneConrad Вопрос не совсем в моей проблеме, я ограничен в своих возможностях. Скорее, я хотел бы знать, какие механизмы доступны для FTP и т. Д., Учитывая, что я знаю по крайней мере один клиент, который может настраивать разрешения. WinSCP поддерживает SFTP и SCP, поэтому, по крайней мере, этот тег должен остаться. Scott Oliver 7 лет назад 0
Если тег должен остаться, тогда вопрос слишком широк. Отдельный вопрос должен быть задан для sftp. Wayne Conrad 7 лет назад 0

1 ответ на вопрос

8
TOOGAM

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

Сложность этой теории состоит в том, что команда «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 обычно разрабатывается таким образом, чтобы сложность зашифрованных соединений не использовалась как часть процесс.)

Многие люди, которые не слишком знакомы с протоколами, используют FTP как условное обозначение для обозначения как FTP, SFTP, так и FTPS. Учитывая, что в вопросе есть все три тега, я не исключаю, что Скотт на самом деле использует SFTP. Janus Bahs Jacquet 7 лет назад 0

Похожие вопросы