- 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
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?