Jag har ställt in vsftpd
på Amazon EC2 med Amazon Linux AMI. Jag skapade en användare och kan Anslut nu framgångsrikt via ftp. Men om jag försöker ladda upp något får jag felmeddelandet
553 Could not create file.
Jag antar att detta har att göra med behörigheter, men jag gör inte ”vet inte tillräckligt om det för att kunna fixa det. Så i grund och botten, vad måste jag göra för att kunna ladda upp filer?
Kommentarer
- Kontrollera selinux-inställningarna. konfigurera boolesk allow_ftpd_full_access till PÅ
- Jag hade det här problemet eftersom det inte fanns tillräckligt med utrymme för att skriva filerna.
Svar
Det finns två troliga orsaker till att detta kan hända – du har inte skriv- och körbehörigheter för de kataloger som leder till katalogen du försöker ladda upp till, eller vsftpd
är konfigurerad så att du inte kan ladda upp.
I det tidigare fallet använder du chmod
och chown
för att se till att din användare har dessa behörigheter i varje mellanliggande katalog. Skrivbiten gör det möjligt för den drabbade användaren att skapa, byta namn på eller ta bort filer i katalogen och ändra katalogens attribut, medan läsbiten tillåter den drabbade användaren att lista filer i katalogen. Eftersom mellanliggande kataloger i sökvägen också påverkar detta måste behörigheterna ställas in på rätt sätt fram till den slutliga destinationen som du tänker ladda upp till.
I det senare fallet, titta på din vsftpd.conf
. write_enable
måste vara sant för att tillåta skrivning (och det är som standard falskt). Det finns god dokumentation på denna konfigurationsfil på man 5 vsftpd.conf
.
Kommentarer
- Ingen av dessa verkar vara problemet. Jag försökte chmoding allt till 777 (osäker) och inställningar write_enable = YES, men jag får fortfarande detta värdelösa felmeddelande.
- @Cerin kunde du åtgärda det? Om ja, kan du dela detaljerna?
Svara
Kan du prova det här
chown -R ftpusername /var/www/html
Kommentarer
- chmod 757 -R / var / www / html
- @Hern á nEche tack för tipset, jag hade jagat i timmar och detta fixade äntligen mitt problem.
- Kan du utarbeta situationen, är det här på servern eller lokalt?
- @Hern á nEche Hej, det fungerade också för mig, men är det säkert. Det fungerade inte ’ med 755
- @Hern á nEche du borde göra detta till ett separat svar. Ditt förslag fungerade för mig där inget annat gjorde.
Svar
Kommandot ftp put /path/to/local_file
fungerar inte med vsftpd
. Försök med följande:
ftp put /path/to/local_file remote_file_name
Du kan välja valfri namn du vill ha remote_file_name
, men du måste ange ett.
Kommentarer
- Du kanske vill att överväga att lägga till mer detaljer i ditt svar (till exempel viss dokumentation som stöder din lösning ’ s giltighet).
- Detta händer för att (och om)
/path/to/
existerar ’ t (och / eller finns inte ’ t tillgängligt via FTP-sessionen) på servern. Det är därför somftp put local_file
fungerar utan en uttrycklig destination. (Tips: kontrolleralocal: … remote: …
-raden FTP-klienten.) - Det fungerade för mig! 🙂
Svar
FTP-hemkatalogen (ftp_home_dir) är troligen avstängd i SeLinux. För att se status för dina ftpd
kontrollfiler, utfärda: getsebool -a
och leta reda på ftpd-avsnittet. Du kanske märker att ftp_home_dir är avstängd. Använd följande kommando för att slå på den: setsebool -P ftp_home_dir=1
Verifiera din inmatning med getsebool -a
och försök sedan ladda upp igen.
Obs! Ignorera skiljetecken
Svar
Jag hade samma problem och fixade att ändra SELinux till tillåt skrivning i den mapp jag konfigurerade för att användas av vsftp = /var/ftp/pub
.
Dessa länkar kan vara till hjälp:
- https://fedoraproject.org/wiki/SELinux/ftpd
- http://prithak.blogspot.com/2013/07/installation-and-configuration-of.html
Om du inte vill gå längre med din SELinux ska du inte ändra den, så du ser som standard /etc/selinux/config
SELINUX=enforcing
kör bara kommandona som root eller med sudo
:
sudo setsebool -P ftpd_anon_write 1 sudo setsebool -P ftpd_full_access 1
som redan beskrivits ovan i annan kommentar.
Svar
Prova detta
chmod 757 -R /var/www/html
Svar
Kontrollera din vsftpd.conf
för den här inställningen:
guest_enable=YES # set it to NO then restart the vsftpd service.
Om den är inställd på YES
kommer det också att orsaka 553 Could not create file
.
Från : http://www.vsftpd.beasts.org/vsftpd_conf.html
gäst_aktivera Om aktiverat klassas alla icke-anonyma inloggningar som ”gäst” -inloggningar. En gästinloggning omplaceras till den användare som anges i gäst_användarnamn.
Standard: NO
Svar
Nästa parameter ger ftpd åtkomst att skriva var som helst:
setsebool -P ftpd_full_acess=true
Använd inte ftpd_anon_write
om du inte vill att anonyma uppladdningar ska tillåtas.
A nswer
I mitt fall var problemet med filsystemet.
Det fanns ett mellanslag men filsystemet hade slut på inoder df -i
# df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/xvdf1 3276800 3276800 0 100% /ftp-data01
Svar
En annan möjlighet: kontrollera diskkvoter för användare / grupp
ext:
repquota -a
xfs:
xfs_quota -x -c "report" /mount_point
Svar
Det är troligt att du har tecken som inte stöds i filnamn
Svar
I mitt fall hade ftp-användaren inga behörigheter i katalogen den var i .
Jag hade precis glömt att cd till målkatalogen, som jag hade rätt behörigheter för.
Svar
I mitt fall (CentOS7 + vsftpd) ändrar katalogbehörigheter till 775 med kommando ” chmod 775 / home / u ser / ftpdir / ” hjälpte inte.
Jag kontrollerade selinux-status med kommando ” sestatus ”, det var aktiverat, jag listar ftp-relaterade alternativ: ” getsebool -a | grep ftp ”
och aktiverade det inaktiverade alternativet ftpd_full_access med kommandot ” setsebool ftpd_full_access på ”. Sedan började den skriva filen.
Svar
För Fedora23 kör du kommandona:
setsebool -P ftpd_anon_write 1 setsebool -P ftpd_full_access 1
Det fungerade för mig.