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

Skonfigurowałem vsftpd na Amazon EC2 za pomocą Amazon Linux AMI. Utworzyłem użytkownika i mogę teraz pomyślnie łączy się przez ftp. Jeśli jednak próbuję coś przesłać, pojawia się komunikat o błędzie

553 Could not create file. 

Zakładam, że ma to związek z uprawnieniami, ale nie nie wiem wystarczająco dużo, aby móc to naprawić. Zasadniczo, co muszę zrobić, aby móc przesyłać pliki?

Komentarze

  • Sprawdź ustawienia selinux. skonfiguruj boolean allow_ftpd_full_access na ON
  • miałem ten problem, ponieważ nie było wystarczająco dużo miejsca na zapisanie plików.

Odpowiedź

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ć plik lub vsftpd jest skonfigurowany tak, aby nie zezwalać na przesyłanie.

W pierwszym przypadku użyj chmod i chown stosownie do potrzeb, aby upewnić się, że użytkownik ma te uprawnienia w każdym katalogu pośrednim. Bit zapisu umożliwia użytkownikowi, którego dotyczy problem, tworzenie, zmianę nazwy lub usuwanie plików w katalogu oraz modyfikowanie atrybutów katalogu, podczas gdy bit odczytu pozwala użytkownikowi, którego dotyczy problem, na wyświetlenie plików w katalogu. Ponieważ katalogi pośrednie w ścieżce również w tym przypadku uprawnienia muszą być ustawione odpowiednio, prowadząc do ostatecznego miejsca docelowego, do którego zamierzasz przesłać.

W tym drugim przypadku spójrz na swój vsftpd.conf. write_enable musi mieć wartość true, aby umożliwić zapis (i domyślnie jest to false). Dobra dokumentacja tego pliku konfiguracyjnego znajduje się pod adresem man 5 vsftpd.conf.

Komentarze

  • Żaden z nich nie wydaje się być problemem. Próbowałem wszystkiego do 777 (niebezpieczne) i ustawienia write_enable = YES, ale nadal otrzymuję ten bezużyteczny komunikat o błędzie.
  • @Cerin, czy udało Ci się go naprawić? Jeśli tak, czy możesz podać szczegóły?

Odpowiedź

Czy mógłbyś spróbować

chown -R ftpusername /var/www/html 

Komentarze

  • chmod 757 -R / var / www / html
  • @Hern á nEche dzięki za wskazówkę, szukałem godzinami i to w końcu rozwiązało mój problem.
  • Czy mógłbyś opisać sytuację, czy to na serwerze czy lokalnie?
  • @Hern á nEche Hej, to też zadziałało, ale czy jest bezpieczne. To nie było ' t działa z 755
  • @Hern á nEche, powinieneś uczynić to osobną odpowiedź. Twoja sugestia zadziałała tam, gdzie nic innego nie zadziałało.

Odpowiedź

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

ftp put /path/to/local_file remote_file_name 

Możesz wybrać dowolny nazwę, którą chcesz dla remote_file_name, ale musisz ją określić.

Komentarze

  • Może aby rozważyć dodanie większej liczby szczegółów do odpowiedzi (na przykład dokumentacja obsługująca poprawność rozwiązania ').
  • Dzieje się tak, ponieważ (i jeśli) /path/to/ nie ' nie istnieje (i / lub nie ' nie jest dostępny za pośrednictwem sesji FTP) na serwer. Dlatego ftp put local_file działa bez wyraźnego miejsca docelowego. (Wskazówka: sprawdź wiersz local: … remote: … w klienta FTP.)
  • U mnie zadziałało! 🙂

Odpowiedź

Katalog domowy FTP (ftp_home_dir) jest najprawdopodobniej wyłączony w SeLinux. Aby sprawdzić stan swoich ftpd plików kontrolnych, wyślij: getsebool -a i znajdź 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ź wprowadzone dane za pomocą getsebool -a, a następnie spróbuj przesłać jeszcze raz.

Uwaga: zignoruj znaki interpunkcyjne

Odpowiedź

Miałem ten sam problem i naprawiłem zmianę SELinux na zezwalaj na pisanie w folderze, który skonfigurowałem do użycia przez vsftp = /var/ftp/pub.

Te linki mogą być pomocne:

Jeśli nie chcesz iść dalej ze swoim SELinuksem, nie zmieniaj go, więc jako domyślny zobaczysz /etc/selinux/config

SELINUX=enforcing 

, a następnie po prostu uruchom polecenia jako root lub z sudo:

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

jak już opisano powyżej w innym komentarzu.

Odpowiedź

Spróbuj tego

chmod 757 -R /var/www/html 

Odpowiedź

Sprawdź vsftpd.conf pod kątem tego ustawienia:

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 opcja jest włączona, wszystkie nieanonimowe logowania są klasyfikowane jako logowania „gościa”. Login gościa jest ponownie przypisywany do użytkownika określonego w guest_username setting.

Domyślnie: NIE

Odpowiedź

Następny parametr umożliwi ftpd zapisywanie w dowolnym miejscu:

setsebool -P ftpd_full_acess=true 

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

A nswer

W moim przypadku problem dotyczył systemu plików.

Było miejsce, ale w systemie plików zabrakło i-węzłów df -i

# df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/xvdf1 3276800 3276800 0 100% /ftp-data01 

Odpowiedź

Inna możliwość: sprawdź limity dyskowe dla użytkownik / grupa

ext:

repquota -a 

xfs:

xfs_quota -x -c "report" /mount_point 

Odpowiedź

Prawdopodobnie nazwa pliku zawiera nieobsługiwane znaki

Odpowiedź

W moim przypadku użytkownik ftp nie miał uprawnień w katalogu, w którym się znajdował .

Właśnie zapomniałem przejść do katalogu docelowego, do którego mam odpowiednie uprawnienia.

Odpowiedź

W moim przypadku (CentOS7 + vsftpd) zmiana uprawnień do katalogu na 775 za pomocą polecenia ” chmod 775 / home / u ser / ftpdir / ” nie pomogło.

Sprawdziłem status selinux poleceniem ” sestatus „, było włączone, wyświetlam opcje związane z ftp: ” getsebool -a | grep ftp ”

i włączono wyłączoną opcję ftpd_full_access za pomocą polecenia ” setsebool ftpd_full_access na „. Następnie zaczął pisać plik.

Odpowiedź

W Fedorze23 uruchom polecenia:

setsebool -P ftpd_anon_write 1 setsebool -P ftpd_full_access 1 

U mnie zadziałało.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *