¿Cómo establece un cliente FTP los permisos de archivos en el servidor?

¿Cómo establece un cliente FTP los permisos de archivos en el servidor?

Actualmente tengo que usar un cliente/adaptador FTP muy limitado para cargar algunos archivos a un servidor remoto. Digo limitado, porque los archivos resultantes terminan en el servidor remoto con permisos 000 y parece que no hay forma de configurar cuáles deberían ser los permisos, a diferencia de otros clientes. (Sé que WinSCP puede hacer esto).

Un colega me dijo que FTP era completamente independiente con respecto a los permisos de los archivos y simplemente transfería los datos del archivo. Suponiendo que esto sea correcto, ¿cómo establece un cliente como WinSCP los permisos del archivo en el servidor remoto? Me sugirieron que es probable que el cliente esté ejecutando un chmod a través de SSH, es decir, configurando los permisos después del hecho.

Respuesta1

Su colega tiene razón, en el sentido de que el mes de octubre de 1985RFC 959no parece proporcionar un comando diseñado específicamente para cambios de permisos. RFC 959 proporciona especificaciones de comandos para cargar archivos (RFC 959 página 30tiene el comando “STOR” para almacenar archivos), descargar archivos (la página 30 tiene el comando “RETR” para recuperar archivos) y extensiones opcionales como MKD (crear directorio) y RMD (eliminar directorio). El RFC señala: "Es prerrogativa de un proceso de servidor FTP invocar controles de acceso". (Sin embargo, según mi lectura del RFC, creo que los "controles de acceso" a los que se hace referencia tienen más que ver con admitir la capacidad de iniciar sesión con un nombre de usuario y no con la intención de referirse a la idea de usar FTP para cambiar los permisos de archivos.)

RFC 959 página 47contiene una lista de los comandos integrados en la especificación FTP de RFC 959. Durante un tiempo, me pregunté cómo crear un servidor FTP para una plataforma específica y he leído cada uno de esos comandos. También he echado un vistazoRegistro de “Extensiones y comandos FTP” de la IANA, al que se hace referencia en marzo de 2010RFC 5797. No recuerdo ninguno de esos comandos que proporcionen una forma de cambiar los permisos, excepto uno:

RFC 959 página 33tiene el comando “SITIO”. (Algunos clientes FTP tienen un comando local llamado “QUOT” o “quote”, que termina enviando un comando SITE al servidor FTP). Básicamente, el estándar del comando SITE es que el texto se envía al servidor FTP y el El servidor FTP decide qué hacer con él. El uso de este comando puede hacer cosas como cambiar los permisos de los archivos, buscar archivos en un sitio o reiniciar el servidor FTP. En teoría, enviar el comando "AYUDA AL SITIO" mostrará detalles de algunas funciones proporcionadas a través del comando del sitio. RFC 959 página 33 incluso especifica esto:

"La naturaleza de estos servicios y la
especificación de su sintaxis se pueden indicar en una respuesta al
comando HELP SITE".

El desafío a esta teoría es simplemente que el comando "SITIO DE AYUDA" en realidad muestra texto del servidor FTP, y es posible que una documentación incompleta no documente todas las posibilidades disponibles.

Residencia enLa respuesta de Jonathan Leffler a la pregunta de nudo99 sobre la "sintaxis chmod en FTP", podemos ver que el programa clásico "ncftp" usó el comando "SITE CHMOD" para implementar el comando "chmod" de ncftp, y que esta característica no era compatible con todos los servidores FTP.

Una nota al margen más mientras completo la parte FTP de esta respuesta: FTP es muy fácil de detectar. Básicamente, lo que quiero decir con esto es que FTP realiza acciones utilizando "texto sin cifrar". Si utiliza software de "detección de paquetes" ("captura de paquetes") como tcpdump o Wireshark, podrá ver lo que sucede con FTP. Si intenta transferir un archivo que es un archivo de texto pequeño y ve qué tráfico de red ocurre, los resultados probablemente serán bastante fáciles de comprender. Con este enfoque, puede cambiar los permisos y ver qué comandos utiliza realmente el software. Sé que la configuración puede llevar un poco más de tiempo, por lo que esta respuesta proporcionó muchos detalles más fáciles de obtener, pero conocer este proceso podría ser útil si comienza a preguntarse otros detalles sobre lo que sucede durante FTP. comunicaciones.

(He editado esta respuesta para agregar una respuesta a otra parte de la pregunta).

Me sugirieron que es probable que el cliente esté ejecutando un chmod a través de SSH, es decir, configurando los permisos después del hecho.

Creo que es una buena suposición, aunque no creo que sea exacta cuando se trata de FTP. En realidad, esa suposición probablemente describe con precisión el proceso preciso que se utiliza cada vez que se utilizan los protocolos SFTP y SCP. Dado que ambos protocolos se basan en SSH, el comando "chmod" puede enviarse utilizando la misma conexión SSH que se utiliza como el resto de la conexión cifrada. Según mi lectura de esos protocolos, creo que así es exactamente como normalmente se configuran los permisos de archivos cuando se usa SFTP (y SCP si eso también admite la configuración de permisos de archivos).

Sin embargo, la forma en que esto se maneja típicamente con el protocolo FTP es una historia bastante diferente, como acabo de describir anteriormente. Si está utilizando el protocolo FTP, que es texto sin formato, entonces es técnicamente posible, aunque poco probable, que se utilice SSH para el seguimiento. (Si el software es lo suficientemente capaz de admitir SSH, generalmente también admite SFTP o SCP o ambos. Como resultado, el soporte del antiguo protocolo FTP generalmente está diseñado para que la complejidad de las comunicaciones cifradas no se utilice como parte del proceso). proceso.)

información relacionada