Skonfigurowałem VSFTPD na Amazon EC2 z Amazon Linux AMI. Utworzyłem użytkownika i mogę teraz pomyślnie łączyć się przez ftp. Jeśli jednak spróbuję coś przesłać, pojawia się komunikat o błędzie „553 Nie można utworzyć pliku”.
Zakładam, że ma to związek z uprawnieniami, ale nie wiem wystarczająco dużo, aby to naprawić. Więc w zasadzie, co muszę zrobić, aby móc przesyłać pliki?
permissions
ftp
vsftpd
amazon-ec2
Jeff Schaller
źródło
źródło
Odpowiedzi:
Istnieją dwa prawdopodobne powody, dla których może się to zdarzyć - nie masz uprawnień do zapisu i wykonywania w katalogach prowadzących do katalogu, do którego próbujesz przesłać, lub
vsftpd
jest skonfigurowany tak, aby nie pozwalać na przesyłanie.W pierwszym przypadku użyj
chmod
ichown
odpowiednio, aby upewnić się, że użytkownik ma te uprawnienia w każdym katalogu pośrednim. Bit zapisu pozwala użytkownikowi, którego to dotyczy, na tworzenie, zmianę nazwy lub usuwanie plików w katalogu oraz modyfikowanie atrybutów katalogu, podczas gdy bit odczytu pozwala dotkniętemu użytkownikowi listę plików w katalogu. Ponieważ pośrednie katalogi na ścieżce również wpływają na to, uprawnienia muszą być odpowiednio ustawione, prowadząc do ostatecznego miejsca docelowego, do którego zamierzasz przesłać.W drugim przypadku spójrz na swoje
vsftpd.conf
.write_enable
musi być prawdziwe, aby umożliwić pisanie (i domyślnie jest fałszywe). Dokumentacja tego pliku konfiguracyjnego znajduje się pod adresemman 5 vsftpd.conf
.źródło
Czy możesz tego spróbować?
źródło
Polecenie
ftp put /path/to/local_file
nie działa zvsftpd
. Spróbuj wykonać następujące czynności:Możesz wybrać dowolną nazwę
remote_file_name
, ale musisz ją podać.źródło
/path/to/
nie istnieje (i / lub nie jest dostępny poprzez sesję FTP) na serwerze. To dlategoftp put local_file
robi pracę bez wyraźnego celu. (Wskazówka: sprawdźlocal: … remote: …
linię w kliencie FTP.)Katalog domowy FTP (ftp_home_dir) najprawdopodobniej jest wyłączony w SeLinux. Aby zobaczyć status
ftpd
plików kontrolnych, wydaj:getsebool -a
i zlokalizuj sekcję ftpd. Możesz zauważyć, że ftp_home_dir jest wyłączony. Aby go włączyć, użyj następującego polecenia:setsebool -P ftp_home_dir=1
Sprawdź dane wejściowe za pomocą
getsebool -a
, a następnie Spróbuj ponownie przesłać.Uwaga: zignoruj znaki interpunkcyjne
źródło
Miałem ten sam problem i naprawiłem zmianę SELinuksa, aby umożliwić pisanie w folderze, w którym skonfigurowałem używanie
vsftp = /var/ftp/pub
.Te linki mogą być pomocne:
Jeśli nie chcesz iść dalej z SELinuksem, nie zmieniaj go, więc zobaczysz jako domyślny
/etc/selinux/config
następnie uruchom polecenia jako root lub za pomocą
sudo
:jak już opisano powyżej w innym komentarzu.
źródło
Sprawdź swoje
vsftpd.conf
ustawienie:Jeśli jest ustawiony na
YES
, spowoduje to również553 Could not create file
.Od: http://www.vsftpd.beasts.org/vsftpd_conf.html
źródło
Spróbuj tego
źródło
Inna możliwość: sprawdź przydziały dysku dla użytkownika / grupy
ext:
xfs:
źródło
Następny parametr zapewni ftpd dostęp do zapisu w dowolnym miejscu:
Nie używaj,
ftpd_anon_write
chyba że chcesz, aby anonimowe przesyłanie było dozwolone.źródło
Prawdopodobnie w nazwie pliku znajdują się nieobsługiwane znaki
źródło
W przypadku Fedory23 uruchom komendy:
To zadziałało dla mnie.
źródło