VSFTPD, 553 No se pudo crear el archivo. - permisos?

31

He configurado VSFTPD en Amazon EC2 con Amazon Linux AMI. Creé un usuario y ahora puedo conectarme con éxito a través de ftp. Sin embargo, si intento cargar algo, aparece el mensaje de error "553 No se pudo crear el archivo".

Supongo que esto tiene que ver con los permisos, pero no sé lo suficiente para poder solucionarlo. Básicamente, ¿qué tengo que hacer para poder cargar archivos?

Jeff Schaller
fuente
Verifique la configuración de selinux. configure boolean allow_ftpd_full_access en ON

Respuestas:

18

Hay dos razones probables por las que esto podría suceder: no tiene permisos de escritura y ejecución en los directorios que conducen al directorio al que está intentando cargar, o vsftpdestá configurado para no permitirle cargar.

En el primer caso, use chmody chownsegún corresponda para asegurarse de que su usuario tenga estos permisos en cada directorio intermedio. El bit de escritura permite al usuario afectado crear, renombrar o eliminar archivos dentro del directorio y modificar los atributos del directorio, mientras que el bit de lectura permite al usuario afectado enumerar los archivos dentro del directorio. Dado que los directorios intermedios en la ruta también afectan esto, los permisos deben establecerse de manera adecuada hasta el destino final al que desea subir.

En el último caso, mira tu vsftpd.conf. write_enabledebe ser verdadero para permitir la escritura (y es falso por defecto). Hay buena documentación sobre este archivo de configuración en man 5 vsftpd.conf.

Chris Down
fuente
10
Ninguno de estos parece ser el problema. Intenté cambiar todo a 777 (inseguro) y la configuración write_enable = YES, pero aún recibo este mensaje de error inútil.
Cerin
@Cerin, ¿pudiste arreglarlo? En caso afirmativo, ¿puedes compartir los detalles?
desconocido el
34

¿Podrías probar esto?

chown -R ftpusername /var/www/html
Tacettin Özbölük
fuente
55
chmod 757 -R / var / www / html
Hernán Eche
1
@ HernánEche gracias por el consejo, había estado buscando durante horas y esto finalmente solucionó mi problema.
Tr0yJ
¿Podría dar más detalles sobre la situación, esto está en el servidor o localmente?
Édouard Lopez
1
@ HernánEche Hola, a mí también me funcionó, pero es seguro. No estaba funcionando con 755
viv
1
@ HernánEche deberías hacer de esta una respuesta por separado. Tu sugerencia funcionó para mí donde nada más lo hizo.
Shaul dice que apoyo a Mónica el
11

El comando ftp put /path/to/local_fileno funciona con vsftpd. Intenta lo siguiente:

ftp put /path/to/local_file remote_file_name 

Puede elegir cualquier nombre que desee para el remote_file_name, pero debe especificar uno.

Víctor
fuente
2
Es posible que desee considerar agregar más detalles a su respuesta (por ejemplo, alguna documentación que respalde la validez de su solución).
HalosGhost
Esto sucede porque (y si) /path/to/no existe (y / o no es accesible a través de la sesión FTP) en el servidor. Es por esto que ftp put local_file hace el trabajo sin destino explícita. (Sugerencia: verifique la local: … remote: …línea en el cliente FTP.)
Skippy le Grand Gourou
1
¡Funcionó para mí! :)
Paulo
3

El directorio de inicio FTP (ftp_home_dir) probablemente esté desactivado en SeLinux. Para ver el estado de sus ftpdarchivos de control, emita: getsebool -ay ubique la sección ftpd. Puede notar que ftp_home_dir está desactivado. Para encenderlo, use el siguiente comando:setsebool -P ftp_home_dir=1

Verifique su entrada usando getsebool -a, luego intente cargar de nuevo.

Nota: ignore los signos de puntuación

Sol brillante
fuente
2

Tuve el mismo problema y solucioné el cambio de SELinux para permitir la escritura en la carpeta que configuré para ser utilizado vsftp = /var/ftp/pub.

Estos enlaces pueden ser útiles:

Si no desea ir más allá con su SELinux, no lo cambie, por lo que verá como predeterminado /etc/selinux/config

SELINUX=enforcing

luego simplemente ejecute los comandos como root o con sudo:

sudo setsebool -P ftpd_anon_write 1
sudo setsebool -P ftpd_full_access 1

como ya se describió anteriormente en otro comentario.

Eduardo Cerqueira
fuente
1

Compruebe su vsftpd.confpara esta configuración:

guest_enable=YES # set it to NO then restart the vsftpd service.

Si se establece en YES, también causará el 553 Could not create file.

De: http://www.vsftpd.beasts.org/vsftpd_conf.html

invitado_enable Si está habilitado, todos los inicios de sesión no anónimos se clasifican como inicios de sesión "invitados". Un inicio de sesión de invitado se reasigna al usuario especificado en la configuración guest_username.

Predeterminado: NO

Henry Parra
fuente
1

Prueba esto

chmod 757 -R /var/www/html
Hernán Eche
fuente
0

Otra posibilidad: verificar las cuotas de disco para el usuario / grupo

ext:

repquota -a

xfs:

xfs_quota -x -c 'report' /mount_point
mveroone
fuente
0

El siguiente parámetro le dará acceso a ftpd para escribir en cualquier lugar:

setsebool -P ftpd_full_acess=true 

No lo use a ftpd_anon_writemenos que desee que se permitan cargas anónimas.

Neil
fuente
0

Es probable que tenga caracteres no admitidos en el nombre del archivo

Omkar Dusane
fuente
-1

Para Fedora23 ejecute los comandos:

setsebool -P ftpd_anon_write 1 
setsebool -P ftpd_full_access 1

Funcionó para mi.

Prosenjit Paul
fuente