Ho configurato vsftpd
su Amazon EC2 con lAMI Amazon Linux. Ho creato un utente e posso ora mi connetto con successo tramite ftp. Tuttavia, se provo a caricare qualcosa ricevo il messaggio di errore
553 Could not create file.
Presumo che questo abbia a che fare con i permessi, ma non “Non ne so abbastanza per essere in grado di risolverlo. Quindi, fondamentalmente, cosa devo fare per poter caricare i file?
Commenti
- Controlla le impostazioni di selinux. configure boolean allow_ftpd_full_access su ON
- ho avuto questo problema perché non cera abbastanza spazio per scrivere i file.
Risposta
Ci sono due probabili ragioni per cui ciò potrebbe accadere: non hai i permessi di scrittura ed esecuzione sulle directory che conducono alla directory in cui stai tentando di caricare, o vsftpd
è configurato per non consentire il caricamento.
Nel primo caso, utilizza chmod
e chown
come appropriato per assicurarti che il tuo utente abbia questi permessi su ogni directory intermedia. Il bit di scrittura consente allutente interessato di creare, rinominare o eliminare file allinterno della directory e modificare gli attributi della directory, mentre il bit di lettura consente allutente interessato di elencare i file allinterno della directory. Poiché anche le directory intermedie nel percorso influiscono su questo, i permessi devono essere impostati in modo appropriato fino alla destinazione finale in cui intendi caricare.
In questultimo caso, guarda il tuo vsftpd.conf
. write_enable
deve essere vero per consentire la scrittura (ed è falso per impostazione predefinita). Cè una buona documentazione su questo file di configurazione in man 5 vsftpd.conf
.
Commenti
- Nessuno di questi sembra essere il problema. Ho provato a modificare tutto in 777 (non sicuro) e le impostazioni write_enable = YES, ma ottengo ancora questo messaggio di errore inutile.
- @Cerin sei riuscito a risolverlo? Se sì, puoi condividere i dettagli?
Risposta
Potresti provare con questo
chown -R ftpusername /var/www/html
Commenti
- chmod 757 -R / var / www / html
- @Hern á nEche grazie per il suggerimento, cercavo da ore e questo ha finalmente risolto il mio problema.
- Potresti approfondire la situazione, è sul server o localmente?
- @Hern á nEche Ehi, ha funzionato anche per me, ma è sicuro. ‘ t funzionava con 755
- @Hern á nEche dovresti rendere questa risposta separata. Il tuo suggerimento ha funzionato per me dove nientaltro ha funzionato.
Rispondi
Il comando ftp put /path/to/local_file
non funziona con vsftpd
. Prova quanto segue:
ftp put /path/to/local_file remote_file_name
Puoi scegliere qualsiasi nome che desideri per remote_file_name
, ma devi specificarne uno.
Commenti
- Potresti volere per considerare laggiunta di maggiori dettagli alla tua risposta (ad esempio, una documentazione che supporti la validità della tua soluzione ‘).
- Ciò accade perché (e se)
/path/to/
non ‘ esiste (e / o ‘ non è accessibile tramite la sessione FTP) su il server. Questo è il motivo per cuiftp put local_file
funziona senza una destinazione esplicita. (Suggerimento: controlla la rigalocal: … remote: …
il client FTP.) - Ha funzionato per me! 🙂
Risposta
La home directory FTP (ftp_home_dir) è molto probabilmente disattivata in SeLinux. Per vedere lo stato dei tuoi file di controllo ftpd
, scrivi: getsebool -a
e individua la sezione ftpd. Potresti notare che ftp_home_dir è disattivato. Per attivarlo, utilizza il seguente comando: setsebool -P ftp_home_dir=1
Verifica il tuo input utilizzando getsebool -a
, quindi prova il caricamento ancora.
Nota: ignora i segni di punteggiatura
Risposta
Ho avuto lo stesso problema e ho risolto il problema cambiando SELinux in consenti la scrittura nella cartella che ho configurato per essere utilizzata da vsftp = /var/ftp/pub
.
Questi link possono essere utili:
- https://fedoraproject.org/wiki/SELinux/ftpd
- http://prithak.blogspot.com/2013/07/installation-and-configuration-of.html
Se non vuoi andare oltre con SELinux non cambiarlo, quindi vedrai come predefinito /etc/selinux/config
SELINUX=enforcing
quindi esegui i comandi come root o con sudo
:
sudo setsebool -P ftpd_anon_write 1 sudo setsebool -P ftpd_full_access 1
come già descritto sopra in un altro commento.
Risposta
Prova questo
chmod 757 -R /var/www/html
Risposta
Controlla il tuo vsftpd.conf
per questa impostazione:
guest_enable=YES # set it to NO then restart the vsftpd service.
Se è impostato su YES
, causerà anche il 553 Could not create file
.
Da : http://www.vsftpd.beasts.org/vsftpd_conf.html
guest_enable Se abilitato, tutti gli accessi non anonimi sono classificati come accessi “guest”. Un accesso guest viene rimappato allutente specificato nel impostazione guest_username.
Predefinito: NO
Risposta
Il prossimo parametro darà accesso ftpd per scrivere ovunque:
setsebool -P ftpd_full_acess=true
Non utilizzare ftpd_anon_write
a meno che non si desideri consentire caricamenti anonimi.
A nswer
Nel mio caso il problema era con il filesystem.
Cera uno spazio ma il filesystem aveva esaurito gli inode df -i
# df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/xvdf1 3276800 3276800 0 100% /ftp-data01
Risposta
Unaltra possibilità: controllare le quote del disco per utente / gruppo
ext:
repquota -a
xfs:
xfs_quota -x -c "report" /mount_point
Risposta
È probabile che nel nome file siano presenti caratteri non supportati
Risposta
Nel mio caso, lutente ftp non aveva i permessi nella directory in cui si trovava .
Mi ero appena dimenticato di inserire cd nella directory di destinazione, per cui ho i permessi corretti.
Risposta
Nel mio caso (CentOS7 + vsftpd) cambiando le autorizzazioni della directory a 775 tramite il comando ” chmod 775 / home / u ser / ftpdir / ” non ha aiutato.
Ho controllato lo stato di selinux con il comando ” sestatus “, era abilitato, elenco le opzioni relative a ftp: ” getsebool -a | grep ftp ”
e abilitato lopzione disabilitata ftpd_full_access tramite il comando ” setsebool ftpd_full_access su “. Quindi ha iniziato a scrivere il file.
Risposta
Per Fedora23 eseguire i comandi:
setsebool -P ftpd_anon_write 1 setsebool -P ftpd_full_access 1
Ha funzionato per me.