19. januar 2009 - 22:42Der er
8 kommentarer og 1 løsning
begrænsning på opendir og mkdir
Kære Eksperter!
Jeg har de sidste 24 timer været igang med at flytte min 'portal' fra produktions serveren til en server der er en smule kraftigere og stabil! Herved kommer overgangen fra Windows til en Linux med PHP4 installeret. Og dette har ikke været smertefrit!!
Jeg oplever umiddelbart mest problemer med en funktioner hvor der bliver oprettet mapper på serveren.
Ved nedenstående fejl er der forsøgt at oprette 2 mapper- mappe 1 opretter uden problemer, imens mappe 2, som der skal oprettes inden i den første oprettede mappe fejler!
Warning: mkdir(): SAFE MODE Restriction in effect. The script whose uid/gid is 186248/186248 is not allowed to access /hsphere/local/home/domain.dk/files/groups/1/photos/test owned by uid/gid 398/398 in /hsphere/local/home/domain.dk/grupper/gruppe/album.php on line 140
Jeg har af en kammerat fået at vide fejlen kommer af rettighederne på filerne, selve scriptet som "opret-mappe-funktionen" bliver eksekveret fra, skal have samme ejer som mappen selve den ny oprettede mappe. Men dette kan jeg ikke se hvordan det er muligt at tildele?
Er linux virkelig så groft mht. ejerskab af mapper, filer?
puha.. håber der er nogle der har konstruktive inputs - håber i forstår mine problemer..
Kort sagt: Ja, Linux er virkelig så groft mht. ejerskab af mapper og filer.
Men, der er naturligvis løsninger, også på dette problem.
Som det fremgår af fejlmeddelelsen kører scriptet som bruger nummer 186248 (hvad det præcise brugernavn der passer til dette uid er, finder du ud af ved at skrive
grep 186248 /etc/passwd
i en shell. Navnet er det som står foran første kolon.
Tilsvarende finder du ud af hvilken bruger der ejer destinationsmappen med ls -l /hsphere/local/home/domain.dk/files/groups/1/photos/ (her ser du efter linjen med "test")
Reglerne på en linuxmaskine siger at en bruger kun kan skrive til mapper som enten - er skrivbare for alle. - er skrivbare for hans gruppe. - er ejet af ham, og skrivbare for ejeren.
Den enkle (og usikre) løsning er at gøre destinationsmappen skrivbar for alle. For at gøre dette, skriver du: chmod -R 777 /hsphere/local/home/domain.dk/files/ Jeg anbefaler ikke dette, men det kan være ok som en test af om scriptet virker.
Den ikke helt så enkle (men væsentlig sikrere) løsning er at tilføje din "web-bruger" (ham med uid 186248) til gruppen som ejer filmappen (gruppen med id 398), og give gruppen skriverettigheder i filmappen. Dette gøres med disse kommandoer: sudo usermod -a -G 398 <brugernavnet på din webbruger med uid 186248> chmod -R 775 /hsphere/local/home/domain.dk/files/
Nu har scriptet mulighed for at skrive til files, men ikke alle mulige andre.
chmod -R 775 /hsphere/local/home/domain.dk/files/ (giver adgang til filerne for ejeren og hans gruppe) eller chmod -R 755 /hsphere/local/home/domain.dk/files/ (giver adgang til filerne kun for ejeren)
Desværre ser man tit en opsætning, der sætteren ejeren af mapper og filer oprettet via webserveren til den unix-bruger, der kører som webserver. Det er slet ikke nødvendigt - men nemt for dem, der adminstrerer serveren.
Safe mode off er desværre ikke en mulighed, eftersom mit site er hostet i cowboy-byen, Surftown. For at være ærlig, overvejer jeg så småt at finde mig en ny platform.
En direkte chmod af samtlige filer på bekostning af en safemode funktion er jeg i tvivl om jeg vil begi mig ud i, den må jeg sove på :~)
Og tak til alle der har bidraget med konstruktive besvarelser :)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.