He configurado vsftpd
en Amazon EC2 con la AMI de Amazon Linux. Creé un usuario y puedo ahora me conecto con éxito a través de ftp. Sin embargo, si intento cargar algo, aparece el mensaje de error
553 Could not create file.
Supongo que esto tiene que ver con los permisos, pero no «No sé lo suficiente para poder solucionarlo. Entonces, básicamente, ¿qué tengo que hacer para poder subir archivos?
Comentarios
- Verifique la configuración de selinux. configure boolean allow_ftpd_full_access en ON
- Tuve este problema porque no había suficiente espacio para escribir los archivos.
Respuesta
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 vsftpd
está configurado para no permitirle subir.
En el primer caso, use chmod
y chown
segú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 Para afectar esto, los permisos deben configurarse de manera adecuada hasta el destino final al que desea realizar la carga.
En el último caso, consulte su vsftpd.conf
. write_enable
debe 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
.
Comentarios
- Ninguno de estos parece ser el problema. Intenté modificar todo a 777 (inseguro) y configurar write_enable = YES, pero aún obtengo este mensaje de error inútil.
- @Cerin, ¿pudiste arreglarlo? Si es así, ¿puedes compartir los detalles?
Responder
¿Podrías probar esto?
chown -R ftpusername /var/www/html
Comentarios
- chmod 757 -R / var / www / html
- @Hern á nEche, gracias por el dato, había estado buscando durante horas y esto finalmente solucionó mi problema.
- ¿Podrías explicar la situación? ¿Está esto en el servidor? o localmente?
- @Hern á nEche Oye, a mí también me funcionó, pero es seguro. No estaba ‘ t trabajando con 755
- @Hern á nEche debería hacer que esta sea una respuesta separada. Tu sugerencia funcionó para mí donde nada más funcionó.
Responder
El comando ftp put /path/to/local_file
no funciona con vsftpd
. Intente lo siguiente:
ftp put /path/to/local_file remote_file_name
Puede elegir cualquier nombre que desea para el remote_file_name
, pero debe especificar uno.
Comentarios
- 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 ‘).
- Esto sucede porque (y si)
/path/to/
no ‘ t existe (y / o no ‘ t accesible a través de la sesión FTP) en el servidor. Es por eso queftp put local_file
no funciona sin un destino explícito. (Sugerencia: verifique la línealocal: … remote: …
en el cliente FTP.) - ¡Me funcionó! 🙂
Respuesta
El directorio de inicio de FTP (ftp_home_dir) probablemente esté desactivado en SeLinux. Para ver el estado de sus archivos de control ftpd
, emita: getsebool -a
y localice la sección ftpd. Puede notar que ftp_home_dir está desactivado. Para activarlo, use el siguiente comando: setsebool -P ftp_home_dir=1
Verifique su entrada usando getsebool -a
, luego intente cargar otra vez.
Nota: Ignore los signos de puntuación
Respuesta
Tuve el mismo problema y solucioné el cambio de SELinux a Permitir escribir en la carpeta que configuré para ser utilizada por vsftp = /var/ftp/pub
.
Estos enlaces pueden ser útiles:
- https://fedoraproject.org/wiki/SELinux/ftpd
- http://prithak.blogspot.com/2013/07/installation-and-configuration-of.html
Si no quiere ir más allá con su SELinux, no lo cambie, así 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.
Respuesta
Pruebe esto
chmod 757 -R /var/www/html
Respuesta
Compruebe su vsftpd.conf
para esta configuración:
guest_enable=YES # set it to NO then restart the vsftpd service.
Si se establece en YES
, también provocará el 553 Could not create file
.
De : http://www.vsftpd.beasts.org/vsftpd_conf.html
guest_enable Si está habilitado, todos los inicios de sesión no anónimos se clasifican como inicios de sesión de «invitado». Un inicio de sesión de invitado se reasigna al usuario especificado en el Configuración de guest_username.
Predeterminado: NO
Respuesta
El siguiente parámetro le dará acceso a ftpd para escribir en cualquier lugar:
setsebool -P ftpd_full_acess=true
No utilice ftpd_anon_write
a menos que desee que se permitan cargas anónimas.
A nswer
En mi caso, el problema fue con el sistema de archivos.
Había un espacio pero el sistema de archivos se quedó sin inodos df -i
# df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/xvdf1 3276800 3276800 0 100% /ftp-data01
Responder
Otra posibilidad: verifique las cuotas de disco para usuario / grupo
ext:
repquota -a
xfs:
xfs_quota -x -c "report" /mount_point
Respuesta
Es probable que tenga caracteres no admitidos en el nombre de archivo
Respuesta
En mi caso, el usuario de ftp no tenía permisos en el directorio en el que estaba .
Acababa de olvidarme de ingresar al directorio de destino, para el cual tenía los permisos adecuados.
Respuesta
En mi caso (CentOS7 + vsftpd) cambiando los permisos del directorio a 775 mediante el comando » chmod 775 / home / u ser / ftpdir / » no ayudó.
Revisé el estado de selinux con el comando » sestatus «, estaba habilitado, enumero las opciones relacionadas con ftp: » getsebool -a | grep ftp »
y habilitó la opción deshabilitada ftpd_full_access mediante el comando » setsebool ftpd_full_access en «. Luego comenzó a escribir el archivo.
Respuesta
Para Fedora23 ejecute los comandos:
setsebool -P ftpd_anon_write 1 setsebool -P ftpd_full_access 1
Me funcionó.