VSFTPD, 553 Impossibile creare il file. - permessi?


31

Ho installato VSFTPD su Amazon EC2 con Amazon Linux AMI. Ho creato un utente e ora riesco a connettermi con successo tramite ftp. Tuttavia, se provo a caricare qualcosa ottengo il messaggio di errore "553 Impossibile creare il file".

Presumo che ciò abbia a che fare con le autorizzazioni, ma non ne so abbastanza per poterlo riparare. Quindi, in sostanza, cosa devo fare per poter caricare i file?


Controlla le impostazioni di selinux. configura booleano allow_ftpd_full_access su ON

Risposte:


18

Ci sono due probabili motivi per cui ciò può accadere: non si dispone delle autorizzazioni di scrittura ed esecuzione per le directory che conducono alla directory in cui si sta tentando di caricare o vsftpdè configurato per non consentire il caricamento.

Nel primo caso, utilizzare chmode, chownse del caso, assicurarsi che l'utente disponga di tali autorizzazioni su ogni directory intermedia. Il bit di scrittura consente all'utente interessato di creare, rinominare o eliminare i file all'interno della directory e modificare gli attributi della directory, mentre il bit di lettura consente all'utente interessato di elencare i file all'interno della directory. Poiché anche le directory intermedie nel percorso influiscono su questo, le autorizzazioni devono essere impostate in modo appropriato per arrivare alla destinazione finale in cui si intende caricare.

In quest'ultimo caso, guarda il tuo vsftpd.conf. write_enabledeve essere vero per consentire la scrittura (ed è falso per impostazione predefinita). C'è una buona documentazione su questo file di configurazione all'indirizzo man 5 vsftpd.conf.


10
Nessuno di questi sembra essere il problema. Ho provato a scrivere tutto su 777 (non sicuro) e le impostazioni write_enable = YES, ma ho ancora questo messaggio di errore inutile.
Cerin,

@Cerin sei riuscito a risolverlo? Se sì, puoi condividere i dettagli?
unknownerror

34

Potresti provare questo

chown -R ftpusername /var/www/html

5
chmod 757 -R / var / www / html
Hernán Eche,

1
@ HernánEche grazie per la punta, stavo cacciando da ore e questo finalmente risolto il mio problema.
Tr0yJ,

Potresti approfondire la situazione, è sul server o localmente?
Édouard Lopez,

1
@ HernánEche Ehi, ha funzionato anche per me, ma è sicuro. Non funzionava con 755
viv

1
@ HernánEche dovresti rendere questa una risposta separata. Il tuo suggerimento ha funzionato per me dove nient'altro ha funzionato.
Shaul dice che sostengo Monica il

11

Il comando ftp put /path/to/local_filenon funziona con vsftpd. Prova quanto segue:

ftp put /path/to/local_file remote_file_name 

Puoi scegliere qualsiasi nome desideri remote_file_name, ma devi specificarne uno.


2
Si consiglia di aggiungere ulteriori dettagli alla risposta (ad esempio, alcuni documenti che supportano la validità della soluzione).
HalosGhost

Ciò accade perché (e se) /path/to/non esiste (e / o non è accessibile tramite la sessione FTP) sul server. Questo è il motivo per cui ftp put local_file fa il lavoro senza meta esplicita. (Suggerimento: controlla la local: … remote: …linea nel client FTP.)
Skippy le Grand Gourou,

1
Ha funzionato per me! :)
Paulo,

3

La directory home FTP (ftp_home_dir) è molto probabilmente disattivata in SeLinux. Per visualizzare lo stato dei ftpdfile di controllo, rilasciare: getsebool -ae individuare la sezione ftpd. Potresti notare che ftp_home_dir è disattivato. Per accenderlo, utilizzare il seguente comando:setsebool -P ftp_home_dir=1

Verifica l'immissione utilizzando getsebool -a, quindi riprova a caricare.

Nota: ignorare i segni di punteggiatura


2

Ho avuto lo stesso problema e risolto cambiando SELinux per consentire la scrittura nella cartella che ho configurato per essere utilizzato da vsftp = /var/ftp/pub.

Questi link possono essere utili:

Se non vuoi andare oltre con SELinux, non modificarlo, 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 altri commenti.


1

Controlla la tua vsftpd.confper 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 vengono classificati come accessi "guest". Un login ospite viene rimappato all'utente specificato nell'impostazione guest_username.

Impostazione predefinita: NO



0

Un'altra possibilità: controllare le quote del disco per l'utente / gruppo

ext:

repquota -a

XFS:

xfs_quota -x -c 'report' /mount_point

0

Il prossimo parametro darà a ftpd l'accesso per scrivere ovunque:

setsebool -P ftpd_full_acess=true 

Non utilizzare ftpd_anon_writese non si desidera consentire i caricamenti anonimi.



-1

Per Fedora23 esegui i comandi:

setsebool -P ftpd_anon_write 1 
setsebool -P ftpd_full_access 1

Ha funzionato per me.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.