VSFTPD, 553 Nie można utworzyć pliku. - uprawnienia?

31

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?

Jeff Schaller
źródło
Sprawdź ustawienia selinux. skonfiguruj wartość logiczną allow_ftpd_full_access na ON

Odpowiedzi:

18

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 vsftpdjest skonfigurowany tak, aby nie pozwalać na przesyłanie.

W pierwszym przypadku użyj chmodi chownodpowiednio, 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_enablemusi być prawdziwe, aby umożliwić pisanie (i domyślnie jest fałszywe). Dokumentacja tego pliku konfiguracyjnego znajduje się pod adresem man 5 vsftpd.conf.

Chris Down
źródło
10
Żaden z nich nie wydaje się być problemem. Próbowałem przeskoczyć wszystko do 777 (niebezpieczne) i ustawienia write_enable = YES, ale wciąż pojawia się ten bezużyteczny komunikat o błędzie.
Cerin,
@Cerin, czy udało Ci się to naprawić? Jeśli tak, czy możesz podać szczegóły?
nieznany błąd
34

Czy możesz tego spróbować?

chown -R ftpusername /var/www/html
Tacettin Özbölük
źródło
5
chmod 757 -R / var / www / html
Hernán Eche
1
@ HernánEche dzięki za wskazówkę, polowałem od wielu godzin i to ostatecznie rozwiązało mój problem.
Tr0yJ
Czy mógłbyś rozwinąć sytuację, czy jest to na serwerze, czy lokalnie?
Édouard Lopez
1
@ HernánEche Hej, To też zadziałało dla mnie, ale czy jest bezpieczne. To nie działało z 755
viv
1
@ HernánEche powinieneś zrobić z tego osobną odpowiedź. Twoja sugestia zadziałała dla mnie tam, gdzie nic innego nie działało.
Shaul mówi, że popieram Monikę
11

Polecenie ftp put /path/to/local_filenie działa z vsftpd. Spróbuj wykonać następujące czynności:

ftp put /path/to/local_file remote_file_name 

Możesz wybrać dowolną nazwę remote_file_name, ale musisz ją podać.

Zwycięzca
źródło
2
Możesz rozważyć dodanie bardziej szczegółowych informacji do swojej odpowiedzi (na przykład, niektóre dokumenty potwierdzające ważność rozwiązania).
HalosGhost
Dzieje się tak, ponieważ (i jeśli) /path/to/nie istnieje (i / lub nie jest dostępny poprzez sesję FTP) na serwerze. To dlatego ftp put local_file robi pracę bez wyraźnego celu. (Wskazówka: sprawdź local: … remote: …linię w kliencie FTP.)
Skippy le Grand Gourou
1
To zadziałało dla mnie! :)
Paulo
3

Katalog domowy FTP (ftp_home_dir) najprawdopodobniej jest wyłączony w SeLinux. Aby zobaczyć status ftpdplików kontrolnych, wydaj: getsebool -ai 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

Jasne słońce
źródło
2

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

SELINUX=enforcing

następnie uruchom polecenia jako root lub za pomocą sudo:

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

jak już opisano powyżej w innym komentarzu.

Eduardo Cerqueira
źródło
1

Sprawdź swoje vsftpd.confustawienie:

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

Jeśli jest ustawiony na YES , spowoduje to również 553 Could not create file.

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

guest_enable Jeśli ta opcja jest włączona, wszystkie loginy są klasyfikowane jako loginy „guest”. Login gościa jest ponownie przypisywany do użytkownika określonego w ustawieniu nazwa_użytkownika guest.

Domyślnie: NIE

Henry Parra
źródło
1

Spróbuj tego

chmod 757 -R /var/www/html
Hernán Eche
źródło
0

Inna możliwość: sprawdź przydziały dysku dla użytkownika / grupy

ext:

repquota -a

xfs:

xfs_quota -x -c 'report' /mount_point
mveroone
źródło
0

Następny parametr zapewni ftpd dostęp do zapisu w dowolnym miejscu:

setsebool -P ftpd_full_acess=true 

Nie używaj, ftpd_anon_writechyba że chcesz, aby anonimowe przesyłanie było dozwolone.

Neil
źródło
0

Prawdopodobnie w nazwie pliku znajdują się nieobsługiwane znaki

Omkar Dusane
źródło
-1

W przypadku Fedory23 uruchom komendy:

setsebool -P ftpd_anon_write 1 
setsebool -P ftpd_full_access 1

To zadziałało dla mnie.

Prosenjit Paul
źródło