26. januar 2004 - 14:50Der er
16 kommentarer og 1 løsning
hvordan mkdir i andres mapper
hej alle, jeg har en lækker stabil debianbox som jeg bruger til at hoste et par domæner. jeg bruger apache 1.3.29 og php 4.3.3, proftpd og courier til mail. alt er godt og virker suverænt.. (aner ikk hvorfor jeg nogensinde har spildt tid på windoze)
Proftpd og courier bruger begge en MySQL db til at validere brugere. (har hver deres tabel) nu vil jeg gerne lave noget PHP der tilføjer, sletter og redigerer brugere i de respektive tabeller. -Den funtionalitet jeg er ude efter er noget lign. brugere selv kan oprettete mailadresser og FTP-konti. PHP'en er i sig selv ikk så vanskelig, har næsten lavet det færdigt. -men jeg mangler lidt hælp til at få min PHP (uid/gid) www-data/www-data til at skrive "mkdir" kommandoen i couriers mailspool. Dem er jer der kender courier vil vide at man skal skrive en sti på formen /mailspool/domænenavn.tld/emailadresse/Maildir Det er dette der volder lidt problemer, for at man kan det skal www-data jo have skriverettigheder til /mailspool/ diret. jeg har løst problemet ved at implementere mit root login i en SQL streng og eksekverer så mkdir med en shellkommando, men sikkerheden er jo ikk ligefrem i top der.
Er der nogen der kan fortælle mig lidt om hvordan jeg kan få PHP, sikkerhedsmæssigt forsvarligt, til at skrive i /mailspool/ og bagefter chowne diret til 888? jeg forestiller mig noget ala' at oprette en gruppe og gøre ftp, mail og apache medlem af den, derefter chmodde så group kan skrive, -men mangler lige lidt hjælp til at komme over den hurdle.
er der nogen som kender en fornuftig løsning?
200 point for et svar/løsning på dette meget specifikke problem.
jeg har to ideer til måder du evt kan løse problemet på. Dit grundlæggende problem er at du i virkeligheden vil oprette et katalog i en anden brugers navn og det er kun root der kan ændre rettighederne. Den ene måde - som jeg ikke helt kan genenmskue om vil virke - er at bruge sudo-kommandoen.
Den anden måde som jeg tror er nemmere at implementere er at lave en "kø" via en tabel i mysql, hvor du så kan sætte de kataloger ind som du vil have oprettet og derefter lave et cron-script (lavet i perl f.eks) som løber tabellen igennem og opretter katalogerne for dig (skal køres som root). Jeg forestiller mig noget ala
id sti status 1 /mailspool/per 0 2 /mailspool/bo 1 3 /mailspool/ib 5
hvor 0=oprettet (altså skal processeres) 1= oprettet og 5= slettet.
perlscriptet skal ikke udføre crontab - det skal bare kaldes fra crontab og ligne et standard perl-script ... jeg skal gerne prøve at brygge et sammen i aften.
jeg kan godt lave et cronjob som chowner -R i /mailspool hvert minut fx. men jeg synes jo det er lidt spild af resourcer og en lidet elegant løsning...
ja - det er jo derfor der skal være en database som du kan sætte de kataloger ind som du vil have chmod'et, så skal den blot tjekke for om der er kommet nye kataloger og evt køre en chmod på de nye
det er ikke så stort et prob at checke om der er kommet nye kataloger, jeg forestiller mig scriptet bliver implementeret sammen med resten af interfacet, så når jeg har oprettet mapperne, kører scriptet til sidst og chowner -R mappen til 888:888.. det er faktisk det eneste den skal gøre.. så det eneste jeg mangler at vide er faktisk hvordan man kan kalde et crontab gennem fx. php...
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.