VSFTPD, 553 Datei konnte nicht erstellt werden. - Berechtigungen?

31

Ich habe VSFTPD auf Amazon EC2 mit Amazon Linux AMI eingerichtet. Ich habe einen Benutzer erstellt und kann nun erfolgreich eine Verbindung über FTP herstellen. Wenn ich jedoch versuche, etwas hochzuladen, wird die Fehlermeldung "553 Datei konnte nicht erstellt werden" angezeigt.

Ich gehe davon aus, dass dies mit Berechtigungen zu tun hat, aber ich weiß nicht genug darüber, um das Problem beheben zu können. Was muss ich also tun, um Dateien hochladen zu können?

Jeff Schaller
quelle
Überprüfen Sie die Selinux-Einstellungen. Konfigurieren Sie den booleschen Wert allow_ftpd_full_access auf ON

Antworten:

18

Dies kann aus zwei Gründen auftreten: Sie haben keine Schreib- und Ausführungsberechtigungen für die Verzeichnisse, die zu dem Verzeichnis führen, in das Sie hochladen möchten, oder vsftpdsind so konfiguriert, dass Sie keine Uploads durchführen können.

Verwenden Sie im ersten Fall chmodund chown, um sicherzustellen, dass Ihr Benutzer über diese Berechtigungen für jedes Zwischenverzeichnis verfügt. Mit dem Schreibbit kann der betroffene Benutzer Dateien im Verzeichnis erstellen, umbenennen oder löschen und die Verzeichnisattribute ändern. Mit dem Lesebit kann der betroffene Benutzer die Dateien im Verzeichnis auflisten. Da sich auch Zwischenverzeichnisse im Pfad darauf auswirken, müssen die Berechtigungen so festgelegt werden, dass sie zum endgültigen Ziel führen, zu dem Sie hochladen möchten.

Im letzteren Fall sehen Sie sich Ihre an vsftpd.conf. write_enablemuss true sein, um das Schreiben zuzulassen (und es ist standardmäßig false). Es gibt eine gute Dokumentation zu dieser Konfigurationsdatei unter man 5 vsftpd.conf.

Chris Down
quelle
10
Beides scheint nicht das Problem zu sein. Ich habe versucht, alles auf 777 (unsicher) und die Einstellungen write_enable = YES zu ändern, aber ich erhalte immer noch diese unnütze Fehlermeldung.
Cerin
@Cerin Konnten Sie das Problem beheben? Wenn ja, können Sie die Details mitteilen?
Unbekannter Fehler
34

Könntest du das versuchen?

chown -R ftpusername /var/www/html
Tacettin Özbölük
quelle
5
chmod 757 -R / var / www / html
Hernán Eche
1
@ HernánEche danke für den tipp, ich hatte stundenlang gejagt und damit endlich mein problem behoben.
Freitag,
Könnten Sie die Situation erläutern, ist dies auf dem Server oder lokal?
Édouard Lopez
1
@ HernánEche Hey, es hat auch bei mir funktioniert, ist aber sicher. Es funktionierte nicht mit 755
viv
1
@ HernánEche du solltest das separat beantworten. Ihr Vorschlag hat für mich funktioniert, wo sonst nichts getan hat.
Shaul sagt, ich unterstütze Monica
11

Der Befehl ftp put /path/to/local_filefunktioniert nicht mit vsftpd. Versuche Folgendes:

ftp put /path/to/local_file remote_file_name 

Sie können einen beliebigen Namen für den auswählen remote_file_name, müssen jedoch einen angeben.

Sieger
quelle
2
Möglicherweise möchten Sie Ihrer Antwort weitere Details hinzufügen (z. B. eine Dokumentation, die die Gültigkeit Ihrer Lösung unterstützt).
HalosGhost
Dies geschieht, weil (und wenn /path/to/) auf dem Server nicht vorhanden ist (und / oder nicht über die FTP-Sitzung zugegriffen werden kann). Dies ist der Grund, warum ftp put local_file dies ohne explizites Ziel funktioniert. (Hinweis: Überprüfen Sie die local: … remote: …Zeile im FTP-Client.)
Skippy le Grand Gourou
1
Es hat bei mir funktioniert! :)
Paulo
3

Das FTP-Basisverzeichnis (ftp_home_dir) ist in SeLinux höchstwahrscheinlich deaktiviert. Um den Status Ihrer ftpdSteuerdateien getsebool -aanzuzeigen , geben Sie Folgendes ein : und suchen Sie den Abschnitt ftpd. Möglicherweise stellen Sie fest, dass ftp_home_dir deaktiviert ist. Verwenden Sie zum Aktivieren den folgenden Befehl:setsebool -P ftp_home_dir=1

Überprüfen Sie Ihre Eingabe mit getsebool -aund wiederholen Sie den Upload.

Hinweis: Ignorieren Sie die Satzzeichen

Heller Sonnenschein
quelle
2

Ich hatte das gleiche Problem und habe das Ändern von SELinux behoben, um das Schreiben in dem Ordner zu ermöglichen, den ich für die Verwendung durch konfiguriert habe vsftp = /var/ftp/pub.

Diese Links können hilfreich sein:

Wenn Sie mit Ihrem SELinux nicht weiter gehen möchten, ändern Sie es nicht, es wird als Standard angezeigt /etc/selinux/config

SELINUX=enforcing

dann führen Sie einfach die Befehle als root oder mit sudo:

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

wie bereits oben in einem anderen Kommentar beschrieben.

Eduardo Cerqueira
quelle
1

Überprüfen Sie Ihre vsftpd.conffür diese Einstellung:

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

Wenn es auf gesetzt ist YES, verursacht es auch die 553 Could not create file.

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

guest_enable Wenn diese Option aktiviert ist, werden alle nicht anonymen Anmeldungen als "Gast" -Anmeldungen eingestuft. Ein Gast-Login wird dem in der Einstellung guest_username angegebenen Benutzer neu zugeordnet.

Voreinstellung: NEIN

Henry Parra
quelle
1

Versuche dies

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

Eine andere Möglichkeit: Überprüfen Sie die Datenträgerkontingente für den Benutzer / die Gruppe

ext:

repquota -a

xfs:

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

Der nächste Parameter gibt ftpd Zugriff, um irgendwo zu schreiben:

setsebool -P ftpd_full_acess=true 

Verwenden ftpd_anon_writeSie diese Option nur, wenn Sie anonyme Uploads zulassen möchten.

Neil
quelle
0

Der Dateiname enthält wahrscheinlich nicht unterstützte Zeichen

Omkar Dusane
quelle
-1

Führen Sie für Fedora23 die folgenden Befehle aus:

setsebool -P ftpd_anon_write 1 
setsebool -P ftpd_full_access 1

Es hat bei mir funktioniert.

Prosenjit Paul
quelle