Jeg har oprettet vsftpd
på Amazon EC2 med Amazon Linux AMI. Jeg oprettede en bruger og kan Tilslut nu med succes via ftp. Men hvis jeg prøver at uploade noget, får jeg fejlmeddelelsen
553 Could not create file.
Jeg antager, at dette har at gøre med tilladelser, men jeg ved ikke “ved ikke nok om det til at kunne ordne det. Så dybest set, hvad skal jeg gøre for at kunne uploade filer?
Kommentarer
- Kontroller selinux-indstillingerne. konfigurer boolesk allow_ftpd_full_access til ON
- Jeg havde dette problem, fordi der ikke var nok plads til at skrive filerne.
Svar
Der er to sandsynlige grunde til, at dette kan ske – du har ikke skrive- og eksekveringstilladelser til de mapper, der fører til den mappe, du prøver at uploade til, eller vsftpd
er konfigureret til ikke at tillade dig at uploade.
I det tidligere tilfælde skal du bruge chmod
og chown
alt efter hvad der er relevant for at sikre, at din bruger har disse tilladelser i hver mellemliggende mappe. Skrivbitten giver den berørte bruger mulighed for at oprette, omdøbe eller slette filer i biblioteket og ændre katalogets attributter, mens læsebiten giver den berørte bruger mulighed for at liste filerne i biblioteket. Da mellemliggende mapper i stien også påvirker dette, skal tilladelserne indstilles korrekt op til den ultimative destination, som du agter at uploade til.
I sidstnævnte tilfælde skal du se på din vsftpd.conf
. write_enable
skal være sandt for at tillade skrivning (og det er som standard falsk). Der er god dokumentation for denne konfigurationsfil på man 5 vsftpd.conf
.
Kommentarer
- Ingen af disse ser ud til at være problemet. Jeg prøvede at ændre alt til 777 (usikker) og indstillinger write_enable = YES, men jeg får stadig denne ubrugelige fejlmeddelelse.
- @Cerin var du i stand til at rette det? Hvis ja, kan du dele detaljerne?
Svar
Kan du prøve dette
chown -R ftpusername /var/www/html
Kommentarer
- chmod 757 -R / var / www / html
- @Hern á nEche tak for tipet, jeg havde jagtet i timevis, og dette fik endelig mit problem løst.
- Kan du uddybe situationen, er dette på serveren eller lokalt?
- @Hern á nEche Hej, det fungerede også for mig, men er det sikkert. Det fungerede ‘ t med 755
- @Hern á nEche, du skal gøre dette til et separat svar. Dit forslag fungerede for mig, hvor intet andet gjorde.
Svar
Kommandoen ftp put /path/to/local_file
fungerer ikke med vsftpd
. Prøv følgende:
ftp put /path/to/local_file remote_file_name
Du kan vælge en hvilken som helst navn, du ønsker for remote_file_name
, men du skal angive et.
Kommentarer
- at overveje at tilføje flere detaljer til dit svar (for eksempel noget dokumentation, der understøtter din løsning ‘ s gyldighed).
- Dette sker fordi (og hvis)
/path/to/
findes ‘ t (og / eller er ikke ‘ t tilgængelig via FTP-sessionen) på serveren. Det er grunden til, atftp put local_file
fungerer uden eksplicit destination. (Tip: tjeklocal: … remote: …
-linjen i FTP-klienten.) - Det fungerede for mig! 🙂
Svar
FTP-hjemmemappen (ftp_home_dir) er sandsynligvis slået fra i SeLinux. For at se status for dine ftpd
kontrolfiler, skal du udstede: getsebool -a
og finde ftpd-sektionen. Du bemærker muligvis, at ftp_home_dir er slået fra. For at slå den til skal du bruge følgende kommando: setsebool -P ftp_home_dir=1
Bekræft dit input ved hjælp af getsebool -a
, og prøv derefter at uploade igen.
Bemærk: Ignorer tegnsætningstegn
Svar
Jeg havde det samme problem og fik ændret SELinux til tillad skrivning i den mappe, jeg konfigurerede til at blive brugt af vsftp = /var/ftp/pub
.
Disse links kan være nyttige:
- https://fedoraproject.org/wiki/SELinux/ftpd
- http://prithak.blogspot.com/2013/07/installation-and-configuration-of.html
Hvis du ikke vil gå længere med din SELinux, skal du ikke ændre det, så du vil se som standard /etc/selinux/config
SELINUX=enforcing
så kør bare kommandoerne som root eller med sudo
:
sudo setsebool -P ftpd_anon_write 1 sudo setsebool -P ftpd_full_access 1
som allerede beskrevet ovenfor i anden kommentar.
Svar
Prøv dette
chmod 757 -R /var/www/html
Svar
Kontroller din vsftpd.conf
for denne indstilling:
guest_enable=YES # set it to NO then restart the vsftpd service.
Hvis det er indstillet til YES
, vil det også forårsage 553 Could not create file
.
Fra : http://www.vsftpd.beasts.org/vsftpd_conf.html
guest_enable Hvis det er aktiveret, klassificeres alle ikke-anonyme login som “gæst” -logins. Et gæstelogin tilføres den bruger, der er angivet i indstilling af gæstens brugernavn.
Standard: NO
Svar
Den næste parameter giver ftpd adgang til at skrive hvor som helst:
setsebool -P ftpd_full_acess=true
Brug ikke ftpd_anon_write
, medmindre du vil have anonyme uploads.
A nswer
I mit tilfælde var problemet med filsystem.
Der var et mellemrum, men filsystemet løb tør for inoder df -i
# df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/xvdf1 3276800 3276800 0 100% /ftp-data01
Svar
En anden mulighed: Kontroller diskkvoter for bruger / gruppe
ext:
repquota -a
xfs:
xfs_quota -x -c "report" /mount_point
Svar
Du har sandsynligvis ikke-understøttede tegn i filnavn
Svar
I mit tilfælde ftp-brugeren havde ingen tilladelser i biblioteket, det var i .
Jeg havde lige glemt at cd i målmappen, som jeg havde de rigtige tilladelser til.
Svar
I mit tilfælde (CentOS7 + vsftpd) ændrer bibliotektilladelser til 775 ved kommando ” chmod 775 / home / u ser / ftpdir / ” hjalp ikke.
Jeg kontrollerede selinux status ved kommando ” sestatus “, det var aktiveret, jeg viser ftp relaterede indstillinger: ” getsebool -a | grep ftp ”
og aktiverede den deaktiverede indstilling ftpd_full_access ved kommando ” setsebool ftpd_full_access på “. Derefter begyndte det at skrive filen.
Svar
For Fedora23 skal du køre kommandoerne:
setsebool -P ftpd_anon_write 1 setsebool -P ftpd_full_access 1
Det fungerede for mig.