Puncte:0

Utilizatorul www-data nu poate deschide un fișier pentru a scrie în php

drapel bj

Am un server apache care rulează ca www-data on Ubuntu 20.04.3 LTS (GNU/Linux 5.4.0-97-generic x86_64) Într-un fișier php, următoarea linie eșuează cu eroare: Permisiune refuzată

$f=fopen("detekst.txt","a+");

Privind permisiunile:

la -al detekst.txt
-rw-rw-r-- 1 L146584 leerlingen 1364 Feb 15 15:12 detekst.txt

și verificarea grupurilor

grupuri www-data 
www-data : www-data leerlingen

De asemenea, am verificat folosind exec('whoami'); că www-data rulează php.

Folosind un editor de text, un alt membru al leerlingen poate deschide fișierul pentru scriere.

Deci sunt foarte nedumerit, de ce nu poate www-data fiind membru al leerlingen să nu deschidă fișierul?

Dacă schimb permisiunile detekst.txt la 0666:

-rw-rw-rw- 1 L146584 leerlingen 1364 Feb 15 15:12 detekst.txt

codul php merge bine!!

De asemenea, când reveniți la permisiunea de fișier 664 și schimbați grupul la www-data, totul funcționează bine.

-rw-rw-r-- 1 L146584 www-data 1478 Feb 15 15:45 detekst.txt

Ce greșesc aici?

Puncte:0
drapel ru

Proprietatea grupului dvs. asupra fișierului în cauză nu este www-data când încercați pentru prima dată să utilizați fișierul, ca atare www-data utilizatorul și grupul nu au permisiuni de scriere când 644 sau 664 sunt permisiunile pe fișier. Dacă www-data nu are proprietatea utilizatorului sau a grupului asupra fișierului, se încadrează în categoria „altele” pentru permisiuni, care este doar pentru citire (4 = permisiuni numai pentru citire în limbajul chmod)

Remediați acest lucru este să schimbați calitatea de proprietar al grupului, așa cum ați văzut www-data și apoi asigurându-vă că permisiunile sunt 664 cel puțin pentru că asta adaugă permisiunea de scriere.

Ca alternativă, www-data este adăugată la alt grup, apoi reporniți serverul pentru a vă asigura că toate serviciile sunt repornite corect cu noile permisiuni. În Linux, serviciile sunt deja pornite și nu vor moșteni o nouă apartenență la un grup de permisiuni până când serviciile sunt repornite complet într-o nouă sesiune a acelui „utilizator”, indiferent dacă este un utilizator demon de sistem sau nu. Deci, o repornire va ajuta la reîmprospătarea datelor la următoarea pornire a serverului web.

John Val avatar
drapel bj
Multumesc Thomas, Dar www-data este membru al grupului leerlingen, așa că de ce nu deține proprietatea de către www-data? Alți membri ai leerlingen au permisiuni de scriere și nu vreau să-i fac pe toți membrii leerlingen membri ai grupului www-data
drapel ru
Nu ar trebui să puneți www-data în alte grupuri decât www-data, pentru că altfel i se vor acorda permisiuni pentru lucruri pe care s-ar putea să nu le doriți. Dacă ați adăugat www-data la grup, dar nu v-ați repornit serverul pentru a lăsa toate serviciile să se repornească cu noile seturi de permisiuni, acesta nu va avea acces.
John Val avatar
drapel bj
Acum am rezolvat problema folosind acl, adăugând www-data ca utilizator suplimentar la toate fișierele din arborele de directoare.
drapel ru
@JohnVal ACL are efect instantaneu, da, dar în loc de ACL, reporniți-vă serviciile cu o repornire. Acest lucru se va asigura că `www-data` moștenește permisiunile adecvate care i-au fost atribuite.
John Val avatar
drapel bj
Mulțumesc încă o dată Thomas, Poate că repornirea sau repornirea serviciului apache2 ar fi rezolvat probabil problema, dar nu am încercat asta. Directorul este partajat folosind Samba și chiar și crearea de fișiere noi îmi oferă utilizatorul suplimentar www-data folosind acl. Deci sunt o persoană fericită în acest moment. Iti doresc numai bine,
John Val avatar
drapel bj
Thomas, voi reporni :)

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.