Cum să montați corect cifs (ubuntu) cu acces de scriere pentru nginx

  • Serverul Ubuntu
  • Samba
  • CIFS

Am un fel de cerc vicios, nu pot să răspund naguglit pentru a doua zi.

având în vedere:
  • Există o rețea NAS pe baza unor Linux, care distribuie dosarul ca un folder partajat Windows - acces pentru toată lumea să scrie
  • Acest director de rețea este perfect vizibil și lucrează la scrierea pentru clienții Windows desktop
  • Personalizabil Ubuntu Server 14.04, care va rula sub aplicatii web Nginx + php-FPM - cele mai comune setări, rula sub utilizatorul www-date






obiectiv:
Aplicația web PHP, uneori, trebuie să creeze subfoldere și fișiere în interiorul aceluiași folder partajat de pe NAS. De exemplu, scrieți fișiere utilizând file_put_contents.
Pe de altă parte, vreau să ssh sub utilizatorul stând pe serverul ubuntu au, de asemenea, acces de scriere în dosarul comun (uneori voi rula manual orice skprity să fie acolo pentru a scrie).

Încerc să rezolv
Încercarea numărul 1:
Scriu următoarea linie în / etc / fstab:


Notă opțiunea dir_mode = 0777, file_mode = 0777 - despre ele în fiecare secundă de răspuns pe StackOverflow, merită adăugarea lor și se va lucra! (ha ha)

Montați sudo mount -a

Să verificăm cum a fost montată:


Să vedem ce drepturi au fost obținute din dosar:


Se pare că există acces la scriere pentru toți: drwxrwxrwx. Să încercăm să scriem un fișier nou:

Ce nu este, fișierul în sine a fost creat, dar este gol:


Să vedem dacă pot scrie fișiere din aplicația web? Vom scrie un script PHP care va fi rulat când vizitați pagina








Deschideți în browser 192.168.20.149/test.php (acesta este serverul meu ubuntu care rulează nginx + php-fpm, în cazul în care încercăm să montăm) și obține:


Ie din script, de asemenea, nu există acces la înregistrare :(

Dacă te uiți în consolă, vei găsi că fișierul a fost creat, doar că e gol - nu înțeleg deloc acest lucru


Încercați numărul 2:
Googled, a descoperit ce aveți nevoie când montați bilele cifs pentru a specifica uid și gid.
Să încercăm. Pentru a începe, aflați uidul și gidul meu.


Am aflat: sunt un utilizator de anunțuri și principalul meu grup de anunțuri
Mai întâi, dezactivați: $ sudo umount -l / mnt / filesfolder
Apoi schimbați fstab: $ sudo nano / etc / fstab


Montați din nou: $ sudo mount -a
Ne uităm la dosarul:


Acum proprietarul a devenit anunț / anunț (folosit pentru a fi nimeni / nogrup)

Înregistrați un fișier nou în dosarul câștigat:


Să încercăm scriptul php prin browser (ștergeți anterior vechiul test.txt cu mașina de Windows):
Deschideți browser-ul 192.168.20.149/test.php și vedeți vechiul mesaj familiar:


Sa creat fisierul test_from_php.txt:

iar acum el are proprietar din anumite motive ad / ad

Apropo, ar fi necesar să se verifice dacă Nginx meu + php-fpm de lucru ca www-date, pentru a scrie un astfel de simplu skprit php și deschideți-l în browser:


Afișează text în browser: www-data

Se pare că din consola pot scrie acum acest dosar comun, dar aplicația mea web încă nu poate.

Încercați numărul 3:
Dezactivați, schimbați fstab, indicând uid = www-data, gid = www-data, montați-l inversat, verificați:

Noi încercăm să scrie un fișier prin intermediul consolei - din nou eșec (ca într-o încercare de la numărul 1, dar eu nu înțeleg de ce, pentru că dreptul la drwxrwxrwx dosar)


Însă scriptul php prin browser nu va afișa erori și fișierul test_from_php.txt este scris cu succes!


Atenție, întrebarea:
Cum pot monta un folder astfel încât să pot scrie de la consola și de la o aplicație web care este sub www-data utilizatorului?
Și de ce în experimentele de mai sus, în general, am probleme cu scrierea în dosar, dacă arată ca drwxrwxrwx - adică Este disponibil pentru toți utilizatorii din toate grupurile?







Articole similare

Trimiteți-le prietenilor: