Nastavil jsem vsftpd
na Amazon EC2 s Amazon Linux AMI. Vytvořil jsem uživatele a mohu nyní se úspěšně připojte přes ftp. Pokud se však pokusím něco nahrát, zobrazí se chybová zpráva
553 Could not create file.
Předpokládám, že to má co do činění s oprávněními, ale ne „Nevím toho dost, abych to mohl opravit. Co tedy v zásadě musím udělat, abych mohl nahrávat soubory?
Komentáře
- Zkontrolujte nastavení selinuxu. nakonfigurovat boolean allow_ftpd_full_access na ZAPNUTO
- měl jsem tento problém, protože nebylo dost místa pro zápis souborů.
odpověď
Existují dva pravděpodobné důvody, proč k tomu může dojít – nemáte oprávnění k zápisu a spouštění adresářů vedoucích do adresáře, do kterého se pokoušíte nahrát, nebo vsftpd
je nakonfigurován tak, aby vám neumožňoval nahrávání.
V prvním případě použijte chmod
a chown
podle potřeby, abyste se ujistili, že váš uživatel má tato oprávnění ve všech prostředních adresářích. Bit pro zápis umožňuje postiženému uživateli vytvářet, přejmenovávat nebo mazat soubory v adresáři a upravovat atributy adresáře, zatímco bit pro čtení umožňuje postiženému uživateli vypsat soubory v adresáři. Protože mezilehlé adresáře v cestě také ovlivnit to, musí být příslušně nastavena oprávnění vedoucí až ke konečnému cíli, do kterého chcete nahrávat.
V druhém případě se podívejte na vsftpd.conf
. write_enable
musí být pravdivý, aby umožňoval zápis (a ve výchozím nastavení je falešný). K tomuto konfiguračnímu souboru je dobrá dokumentace na man 5 vsftpd.conf
.
Komentáře
- Zdá se, že ani jeden z nich není problém. Snažil jsem se vše změnit na 777 (nebezpečné) a nastavení write_enable = YES, ale stále dostávám tato zbytečná chybová zpráva.
- @Cerin jste to dokázali opravit? Pokud ano, můžete sdílet podrobnosti?
Odpovědět
Můžete to zkusit
chown -R ftpusername /var/www/html
Komentáře
- chmod 757 -R / var / www / html
- @Hern á nEche děkuji za tip, lovil jsem celé hodiny a to konečně vyřešilo můj problém.
- Mohl byste podrobněji popsat situaci, je to na serveru nebo lokálně?
- @Hern á nEche Hej, fungovalo to i pro mě, ale je to bezpečné. Nebylo to ‚ s 755
- @Hern á nEche pracovat, měli byste na to udělat samostatnou odpověď. Váš návrh pracoval pro mě tam, kde nic jiného.
Odpovědět
Příkaz ftp put /path/to/local_file
nefunguje s vsftpd
. Zkuste následující:
ftp put /path/to/local_file remote_file_name
Můžete si vybrat libovolné jméno, které si přejete pro remote_file_name
, ale musíte ho určit.
Komentáře
- Možná budete chtít zvážit přidání podrobností k vaší odpovědi (například nějaká dokumentace, která podporuje vaše řešení ‚ s platnost).
- K tomu dochází, protože (a pokud)
/path/to/
neexistuje ‚ t (a / nebo není ‚ t přístupný prostřednictvím relace FTP) na proto serverftp put local_file
funguje bez explicitního cíle. (Tip: zkontrolujte řádeklocal: … remote: …
v FTP klient.) - Pro mě to fungovalo! 🙂
Odpověď
Domovský adresář FTP (ftp_home_dir) je v SeLinuxu s největší pravděpodobností vypnutý. Chcete-li zobrazit stav svých ftpd
řídicích souborů, vydejte: getsebool -a
a vyhledejte sekci ftpd. Můžete si všimnout, že ftp_home_dir je vypnutý. Chcete-li jej zapnout, použijte následující příkaz: setsebool -P ftp_home_dir=1
Ověřte svůj vstup pomocí getsebool -a
a poté zkuste nahrát znovu.
Poznámka: Ignorujte interpunkční znaménka
Odpověď
Měl jsem stejný problém a opravil jsem změnu SELinux na povolit zápis do složky, kterou jsem nakonfiguroval pro použití vsftp = /var/ftp/pub
.
Tyto odkazy mohou být užitečné:
- https://fedoraproject.org/wiki/SELinux/ftpd
- http://prithak.blogspot.com/2013/07/installation-and-configuration-of.html
Pokud se svým SELinuxem nechcete jít dále, neměňte jej, takže se zobrazí jako výchozí /etc/selinux/config
SELINUX=enforcing
stačí spustit příkazy jako root nebo pomocí sudo
:
sudo setsebool -P ftpd_anon_write 1 sudo setsebool -P ftpd_full_access 1
jak již bylo popsáno výše v jiném komentáři.
Odpověď
Zkuste to
chmod 757 -R /var/www/html
Odpovědět
Zkontrolujte své nastavení u vsftpd.conf
:
guest_enable=YES # set it to NO then restart the vsftpd service.
Pokud je nastaven na YES
, způsobí to také 553 Could not create file
.
Od : http://www.vsftpd.beasts.org/vsftpd_conf.html
guest_enable Pokud je povoleno, všechna neanonymní přihlášení jsou klasifikována jako přihlášení „guest“. Přihlášení hosta je přemapováno na uživatele uvedeného v nastavení uživatelského jména hosta.
Výchozí: NE
Odpověď
Následující parametr poskytne ftpd přístup k zápisu kdekoli:
setsebool -P ftpd_full_acess=true
Nepoužívejte ftpd_anon_write
, pokud nechcete povolit anonymní nahrávání.
A nswer
V mém případě byl problém se souborovým systémem.
Došlo k mezeru, ale souborovému systému došlo inody df -i
# df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/xvdf1 3276800 3276800 0 100% /ftp-data01
Odpověď
Další možnost: zkontrolujte kvóty disku pro uživatel / skupina
ext:
repquota -a
xfs:
xfs_quota -x -c "report" /mount_point
Odpověď
Pravděpodobně budete mít v názvu souboru nepodporované znaky
Odpovědět
V mém případě uživatel ftp neměl oprávnění v adresáři, ve kterém byl .
Právě jsem zapomněl cd do cílového adresáře, ke kterému jsem měl správná oprávnění.
Odpověď
V mém případě (CentOS7 + vsftpd) změna oprávnění adresáře na 775 příkazem “ chmod 775 / home / u ser / ftpdir / “ nepomohlo.
Zkontroloval jsem stav selinuxu příkazem “ sestatus „, bylo povoleno, uvádím možnosti související s ftp: “ getsebool -a | grep ftp “
a povolil deaktivovanou možnost ftpd_full_access příkazem “ setsebool ftpd_full_access na „. Pak to začalo psát soubor.
Odpověď
U Fedory23 spusťte příkazy:
setsebool -P ftpd_anon_write 1 setsebool -P ftpd_full_access 1
Fungovalo to pro mě.