VSFTPD, 553 Nu s-a putut crea fișierul. – permisiuni? (Unix, Permisiuni, Amazon Ec2, Vsftpd)

user1995 a intrebat.

Am configurat vsftpd pe Amazon EC2 cu Amazon Linux AMI. Am creat un utilizator și acum mă pot conecta cu succes prin ftp. Cu toate acestea, dacă încerc să încarc ceva, primesc mesajul de eroare

553 Could not create file.

Presupun că acest lucru are legătură cu permisiunile, dar nu știu suficient de multe despre asta pentru a putea să o rezolv. Deci, practic, ce trebuie să fac pentru a putea încărca fișiere?

Comentarii

  • Verificați setările selinux. configurați boolean allow_ftpd_full_access la ON – user125748
  • am avut această problemă deoarece nu era suficient spațiu pentru a scrie fișierele. –  > Por Niklas.
14 răspunsuri
Chris Down

Există două motive probabile pentru care s-ar putea întâmpla acest lucru — nu aveți permisiuni de scriere și de execuție pe directoarele care duc la directorul în care încercați să încărcați sau vsftpd este configurat pentru a nu vă permite să încărcați.

În primul caz, utilizați chmod și chown după caz pentru a vă asigura că utilizatorul dumneavoastră are aceste permisiuni pe fiecare director intermediar. Bitul de scriere îi permite utilizatorului afectat să creeze, să redenumească sau să șteargă fișiere din directorul respectiv și să modifice atributele directorului, în timp ce bitul de citire îi permite utilizatorului afectat să listeze fișierele din directorul respectiv. Deoarece directoarele intermediare din calea de acces afectează, de asemenea, acest lucru, permisiunile trebuie să fie setate în mod corespunzător până la destinația finală către care intenționați să încărcați.

În acest din urmă caz, consultați vsftpd.conf. write_enable trebuie să fie adevărată pentru a permite scrierea (și este falsă în mod implicit). Există o documentație bună cu privire la acest fișier de configurare la man 5 vsftpd.conf.

Comentarii

  • Niciuna dintre acestea nu pare să fie problema. Am încercat să dau chmoding la 777 (unsafe) și să setez write_enable=YES, dar tot primesc acest mesaj de eroare inutil. –  > Por Cerin.
  • @Cerin ai reușit să o rezolvi? Dacă da, poți să ne dai detalii? –  > Por unknownerror.
Tacettin Özbölük

Ați putea încerca următoarele

chown -R ftpusername /var/www/html

Comentarii

  • chmod 757 -R /var/www/html –  > Por Hernán Eche.
  • @HernánEche mulțumesc pentru pont, am vânat ore întregi și asta mi-a rezolvat în sfârșit problema. –  > Por Tr0yJ.
  • Ați putea detalia situația, este pe server sau local? –  > Por Édouard Lopez.
  • @HernánEche Hei, A funcționat și pentru mine, dar este sigur. Nu a funcționat cu 755 –  > Por viv.
  • @HernánEche ar trebui să faci din acest lucru un răspuns separat. Sugestia ta a funcționat pentru mine unde nimic altceva nu a făcut-o. –  > Por Shaul Behr.
Victor

Comanda ftp put /path/to/local_file nu funcționează cu vsftpd. Încearcă următoarele:

ftp put /path/to/local_file remote_file_name 

Puteți alege orice nume doriți pentru remote_file_name, , dar trebuie să specificați unul.

Comentarii

  • Poate doriți să luați în considerare adăugarea mai multor detalii la răspunsul dumneavoastră (de exemplu, o documentație care să susțină validitatea soluției dumneavoastră). –  > Por HalosGhost.
  • Acest lucru se întâmplă deoarece (și dacă) /path/to/ nu există (și/sau nu este accesibil prin sesiunea FTP) pe server. Acesta este motivul pentru care ftp put local_file face funcționează fără destinație explicită. (Indicație: verificați local: … remote: … linie în clientul FTP). –  > Por Skippy le Grand Gourou.
  • A funcționat pentru mine! 🙂 –  > Por Paulo.
Bright Sunshine

Directorul de domiciliu FTP (ftp_home_dir) este cel mai probabil dezactivat în SeLinux. Pentru a vedea starea ftpd fișierelor de control, emiteți: getsebool -a și localizați secțiunea ftpd. Este posibil să observați că ftp_home_dir este dezactivat. Pentru a-l activa, utilizați următoarea comandă: setsebool -P ftp_home_dir=1

Verificați datele introduse folosind getsebool -a, , apoi încercați din nou încărcarea.

Notă: Ignorați semnele de punctuație

Eduardo Cerqueira

Am avut aceeași problemă și am rezolvat schimbarea SELinux pentru a permite scrierea în folderul pe care l-am configurat pentru a fi utilizat de către vsftp = /var/ftp/pub.

Aceste linkuri pot fi de ajutor:

Dacă nu doriți să mergeți mai departe cu SELinux-ul nu-l modificați, astfel încât veți vedea ca implicit /etc/selinux/config

SELINUX=enforcing

apoi rulați comenzile ca root sau cu sudo:

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

așa cum a fost deja descris mai sus în alt comentariu.

Henry Parra

Verificați vsftpd.conf pentru această setare:

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

Dacă este setată la YES, , aceasta va cauza, de asemenea, ca 553 Could not create file.

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

guest_enable Dacă este activată, toate autentificările non-anonime sunt clasificate ca autentificări „guest”. O autentificare de tip „guest” este redirecționată către utilizatorul specificat în setarea guest_username.

Valoarea implicită: NO

Comentarii

  • în cazul în care utilizatorul este „virtual”, puteți, de asemenea, să faceți chown la directorul chroot (adică local_root) pentru a permite scrierea din guest_username (în mod implicit ftp), de exemplu: chown ftp /var/ftp/<virtual_user> –  > Por tutuDajuju.
Hernán Eche

Încercați acest lucru

chmod 757 -R /var/www/html

Neil

Următorul parametru va da acces ftpd pentru a scrie oriunde:

setsebool -P ftpd_full_acess=true 

Nu folosiți ftpd_anon_write dacă nu doriți ca încărcările anonime să fie permise.

JJ Roman

În cazul meu problema a fost cu sistemul de fișiere.

A existat un spațiu dar sistemul de fișiere a rămas fără inodesdf -i

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

mveroone

O altă posibilitate : verificați cotele de disc pentru utilizator/grup

ext:

repquota -a

xfs:

xfs_quota -x -c 'report' /mount_point

Omkar Dusane

Este posibil să aveți caractere neacceptate în numele fișierului

kintsukuroi

În cazul meu, utilizatorul ftp nu avea permisiuni în directorul în care se afla.

Am uitat să intru în directorul țintă, pe care l-am uitat. am făcut-o avea permisiunile corecte.

16851556

În cazul meu (CentOS7 + vsftpd) schimbarea permisiunilor directorului la 775 prin comanda „chmod 775 /home/user/ftpdir/” nu a ajutat.

Am verificat statusul selinux prin comanda „sestatus”, era activat, am listat opțiunile legate de ftp: „getsebool -a|grep ftp”

și am activat opțiunea dezactivată ftpd_full_access prin comanda „setsebool ftpd_full_access on”. Apoi a început să scrie fișierul.

Prosenjit Paul

Pentru Fedora23 rulați comenzile:

setsebool -P ftpd_anon_write 1 
setsebool -P ftpd_full_access 1

A funcționat pentru mine.