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?


Ü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.


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

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.


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


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.


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



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

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.



-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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.