VSFTPD, 553 Nem sikerült létrehozni a fájlt. – engedélyek?

Beállítottam a vsftpd szolgáltatást az Amazon EC2-en az Amazon Linux AMI-vel. Hoztam létre egy felhasználót, és Mostantól sikeresen csatlakozom az ftp-n keresztül. Ha azonban megpróbálok feltölteni valamit, akkor a hibaüzenet jelenik meg

553 Could not create file. 

Feltételezem, hogy ez engedélyekkel kapcsolatos, de nem teszem lehetővé “nem tudok róla annyit, hogy kijavítsam. Tehát alapvetően mit kell tennem, hogy fájlokat tölthetek fel?

Megjegyzések

  • Ellenőrizze a selinux beállításokat. állítsa be a logikai értéket az allow_ftpd_full_access értékre BE
  • nekem ez a problémám volt, mert nem volt elég hely a fájlok megírásához.

Válasz

Ennek két valószínű oka lehet – nincs írási és végrehajtási jogosultsága azokon a könyvtárakon, amelyek a feltölteni kívánt könyvtárhoz vezetnek, vagy vsftpd úgy van beállítva, hogy ne engedélyezze a feltöltést.

Az előbbi esetben használja a chmod és a chown a megfelelő módon, hogy megbizonyosodjon arról, hogy a felhasználó rendelkezik-e ezen engedélyekkel minden köztes könyvtárban. Az írási bit lehetővé teszi az érintett felhasználó számára, hogy fájlokat hozzon létre, átnevezzen vagy töröljön a könyvtárban, és módosítsa a könyvtár attribútumait, míg az olvasási bit lehetővé teszi az érintett felhasználó számára, hogy a fájlokat felsorolja a könyvtárban. Mivel az útvonalban lévő köztes könyvtárak is befolyásolja ezt, az engedélyeket megfelelően be kell állítani a végső célig, ahová feltölteni szándékozik.

Ez utóbbi esetben nézze meg a vsftpd.conf fájlt. A write_enable -nek igaznak kell lennie az írás engedélyezéséhez (és alapértelmezés szerint hamis). A man 5 vsftpd.conf címen megfelelő dokumentáció található erről a konfigurációs fájlról. / p>

Megjegyzések

  • Úgy tűnik, hogy egyik sem a probléma. Megpróbáltam mindent módosítani 777-re (nem biztonságos) és a beállításokat write_enable = YES, de még mindig megkapom ez a haszontalan hibaüzenet.
  • @Cerin sikerült kijavítani? Ha igen, meg tudja-e osztani a részleteket?

Válasz

Kipróbálhatja ezt

chown -R ftpusername /var/www/html 

Megjegyzések

  • chmod 757 -R / var / www / html
  • @Hern á nEche köszönöm a tippet, órák óta vadásztam, és ez végül kijavította a problémámat.
  • Tudna részletezni a helyzetről, ez a szerveren van-e? vagy helyben?
  • @Hern á nEche Hé, nekem is sikerült, de biztonságos. Nem volt ‘ t a 755-össel
  • @Hern á nEche, ezt külön válaszként kell megadnia. A javaslatod nekem ott működött, ahol semmi más nem.

Válasz

A nem működik a következővel: vsftpd. Próbálja ki a következőket:

ftp put /path/to/local_file remote_file_name 

Bármelyiket választhatja kívánt név a remote_file_name számára, de meg kell adnia egyet.

Megjegyzések

  • Érdemes lehet fontolja meg, hogy további részleteket adjon a válaszához (például néhány olyan dokumentum, amely támogatja a megoldás ‘ s érvényességét).
  • Ez azért történik, mert (és ha) /path/to/ nincs ‘ nincs (és / vagy nincs ‘ hozzáférhető az FTP munkameneten keresztül) a szerver. Ezért a ftp put local_file kifejezett cél nélkül működik . (Tipp: ellenőrizze a local: … remote: … sort az FTP kliens.)
  • Nekem bevált! 🙂

Válasz

Az FTP otthoni könyvtár (ftp_home_dir) valószínűleg ki van kapcsolva a SeLinuxban. A ftpd vezérlőfájlok állapotának megtekintéséhez tegye a következőket: getsebool -a és keresse meg az ftpd szakaszt. Észreveheti, hogy az ftp_home_dir ki van kapcsolva. A bekapcsolásához használja a következő parancsot: setsebool -P ftp_home_dir=1

Ellenőrizze a bevitelt a getsebool -a gombbal, majd próbálja meg a feltöltést újra.

Megjegyzés: Hagyd figyelmen kívül az írásjeleket

Válasz

Ugyanaz a probléma merült fel és javítottam a SELinux módosítását engedélyezem az írást az általam beállított mappában, hogy vsftp = /var/ftp/pub használhassa.

Ezek a linkek hasznosak lehetnek:

Ha nem akarsz továbbmenni a SELinuxszal, akkor ne változtasd meg, így alapértelmezettként a /etc/selinux/config

SELINUX=enforcing 

akkor csak futtassa a parancsokat root vagy sudo paranccsal:

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

ahogy fentebb már leírtuk más megjegyzésekben.

Válasz

Próbálja ki ezt

chmod 757 -R /var/www/html 

Válasz

Ellenőrizze a vsftpd.conf elemet ehhez a beállításhoz:

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

Ha YES értékre van állítva, akkor a 553 Could not create file -t is okozza.

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

guest_enable Ha engedélyezve van, akkor az összes nem névtelen bejelentkezés “vendég” bejelentkezésnek minősül. A vendég bejelentkezést a vendég_felhasználónév beállítása.

Alapértelmezés: NEM

Válasz

A következő paraméter megadja az ftpd hozzáférési jogát bárhová írni:

setsebool -P ftpd_full_acess=true 

Ne használja a ftpd_anon_write parancsot, hacsak nem szeretné, hogy engedélyezzék a névtelen feltöltéseket.

A nswer

Esetemben a fájlrendszerrel volt a probléma.

Szóköz volt, de a fájlrendszerből kifogytak az inodes df -i

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

Válasz

Egy másik lehetőség: ellenőrizze a felhasználó / csoport

ext:

repquota -a 

xfs:

xfs_quota -x -c "report" /mount_point 

válasz

Valószínűleg nem támogatott karakterek vannak a fájlnévben

válasz

Az én esetemben az ftp felhasználónak nem voltak engedélyei abban a könyvtárban, amelybe a . / p>

Éppen elfelejtettem cd-t beírni a célkönyvtárba, amelyre megfelelő jogosultsággal rendelkeztem.

Válasz

Esetemben (CentOS7 + vsftpd) a címtárengedélyeket 775-re változtatom a ” chmod 775 / home / u A ser / ftpdir / ” nem segített.

A selinux állapotát a ” sestatus , engedélyezve volt, felsorolom az ftp-vel kapcsolatos opciókat: ” getsebool -a | grep ftp ”

és engedélyezte a letiltott ftpd_full_access opciót a ” setsebool ftpd_full_access paranccsal a ” paranccsal. Ezután elkezdte írni a fájlt.

Válasz

A Fedora23 esetében futtassa a következő parancsokat:

setsebool -P ftpd_anon_write 1 setsebool -P ftpd_full_access 1 

Nekem bevált.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük