Jeg har satt opp vsftpd
på Amazon EC2 med Amazon Linux AMI. Jeg opprettet en bruker og kan nå vellykket tilkobling via ftp. Hvis jeg prøver å laste opp noe, får jeg imidlertid feilmeldingen
553 Could not create file.
Jeg antar at dette har å gjøre med tillatelser, men jeg «vet ikke nok om det til å kunne fikse det. Så i grunn, hva må jeg gjøre for å kunne laste opp filer?
Kommentarer
- Sjekk selinux-innstillingene. konfigurer boolsk allow_ftpd_full_access til PÅ
- Jeg hadde dette problemet fordi det ikke var nok plass til å skrive filene.
Svar
Det er to sannsynlige årsaker til at dette kan skje – du har ikke skrivetilgang og utfører tillatelser til katalogene som fører til katalogen du prøver å laste opp til, eller vsftpd
er konfigurert til ikke å la deg laste opp.
I det første tilfellet bruker du chmod
og chown
etter behov for å forsikre deg om at brukeren har disse tillatelsene i hver mellomliggende katalog. Skrivbiten lar den berørte brukeren opprette, gi nytt navn eller slette filer i katalogen, og endre katalogens attributter, mens lesebiten lar den berørte brukeren liste opp filene i katalogen. Siden mellomliggende kataloger i banen også påvirker dette, må tillatelsene settes riktig førende til det endelige målet du har tenkt å laste opp til.
I sistnevnte tilfelle, se på vsftpd.conf
. write_enable
må være sant for å tillate skriving (og det er falskt som standard). Det er god dokumentasjon på denne konfigurasjonsfilen på man 5 vsftpd.conf
.
Kommentarer
- Ingen av disse ser ut til å være problemet. Jeg prøvde å endre alt til 777 (usikkert) og innstillinger write_enable = YES, men jeg får fortsatt denne ubrukelige feilmeldingen.
- @Cerin klarte du å fikse det? Hvis ja, kan du dele detaljene?
Svar
Kan du prøve dette
chown -R ftpusername /var/www/html
Kommentarer
- chmod 757 -R / var / www / html
- @Hern á nEche takk for tipset, jeg hadde jaktet på i timevis, og dette løste endelig problemet mitt.
- Kan du utdype situasjonen, er dette på serveren eller lokalt?
- @Hern á nEche Hei, det fungerte også for meg, men er det sikkert. Det jobbet ikke ‘ med 755
- @Hern á nEch du bør gjøre dette til et eget svar. Forslaget ditt virket for meg der ingenting annet gjorde det.
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 velge hvilken som helst navnet du ønsker for remote_file_name
, men du må angi et.
Kommentarer
- Du vil kanskje å vurdere å legge til mer detaljer i svaret ditt (for eksempel noe dokumentasjon som støtter løsningen din ‘ s gyldighet).
- Dette skjer fordi (og hvis)
/path/to/
eksisterer ikke ‘ t (og / eller er ikke ‘ t tilgjengelig gjennom FTP-sesjonen) på serveren. Dette er grunnen til atftp put local_file
fungerer uten eksplisitt mål. (Hint: sjekklocal: … remote: …
-linjen i FTP-klienten.) - Det fungerte for meg! 🙂
Svar
FTP-hjemmekatalogen (ftp_home_dir) er mest sannsynlig slått av i SeLinux. For å se status for ftpd
-kontrollfilene, utsteder du: getsebool -a
og finner ftpd-delen. Du vil kanskje legge merke til at ftp_home_dir er slått av. For å slå den på, bruk følgende kommando: setsebool -P ftp_home_dir=1
Bekreft inndataene dine ved hjelp av getsebool -a
, og prøv deretter å laste opp en gang til.
Merk: Ignorer skilletegnene
Svar
Jeg hadde samme problem og fikset å endre SELinux til tillat skriving i mappen jeg konfigurerte for å bli brukt av vsftp = /var/ftp/pub
.
Disse lenkene 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å lenger med SELinux, må du ikke endre det, så du vil se som standard /etc/selinux/config
SELINUX=enforcing
så kjør du bare kommandoene som root eller med sudo
:
sudo setsebool -P ftpd_anon_write 1 sudo setsebool -P ftpd_full_access 1
som allerede beskrevet ovenfor i annen kommentar.
Svar
Prøv dette
chmod 757 -R /var/www/html
Svar
Sjekk vsftpd.conf
for denne innstillingen:
guest_enable=YES # set it to NO then restart the vsftpd service.
Hvis det er satt til YES
, vil det også føre til at 553 Could not create file
.
Fra : http://www.vsftpd.beasts.org/vsftpd_conf.html
guest_enable Hvis aktivert, klassifiseres alle ikke-anonyme pålogginger som «gjest» -innlogginger. En gjestepålogging tilordnes til brukeren som er angitt i innstilling for gjestens brukernavn.
Standard: NO
Svar
Neste parameter vil gi ftpd tilgang til å skrive hvor som helst:
setsebool -P ftpd_full_acess=true
Ikke bruk ftpd_anon_write
med mindre du vil ha anonyme opplastninger.
A nswer
I mitt tilfelle var problemet med filsystem.
Det var et mellomrom, men filsystemet gikk tom for inoder df -i
# df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/xvdf1 3276800 3276800 0 100% /ftp-data01
Svar
En annen mulighet: sjekk diskkvoter for bruker / gruppe
ext:
repquota -a
xfs:
xfs_quota -x -c "report" /mount_point
Svar
Det er sannsynlig at du ikke har tegn som støttes i filnavnet
Svar
I mitt tilfelle hadde ftp-brukeren ingen tillatelser i katalogen den var i .
Jeg hadde nettopp glemt å cd inn i målkatalogen, som jeg hadde de rette tillatelsene for.
Svar
I mitt tilfelle (CentOS7 + vsftpd) endrer katalogtillatelser til 775 etter kommando » chmod 775 / home / u ser / ftpdir / » hjalp ikke.
Jeg sjekket selinux-status ved kommando » sestatus «, det var aktivert, jeg lister opp ftp relaterte alternativer: » getsebool -a | grep ftp »
og aktivert det deaktiverte alternativet ftpd_full_access ved kommando » setsebool ftpd_full_access på «. Så begynte det å skrive filen.
Svar
For Fedora23 kjører du kommandoene:
setsebool -P ftpd_anon_write 1 setsebool -P ftpd_full_access 1
Det fungerte for meg.