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. Dlategoftp put local_file
działa bez wyraźnego miejsca docelowego. (Wskazówka: sprawdź wierszlocal: … 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:
- https://fedoraproject.org/wiki/SELinux/ftpd
- http://prithak.blogspot.com/2013/07/installation-and-configuration-of.html
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.