Just nu i M3-nätverket
Gå till innehåll

Apache & PHP rättigheter


Cariad

Rekommendera Poster

Hej,

Jag har lite problem med rättigheter för PHP skript.

Om jag i httpd.conf anger att PHP ska köra i safe-mode, så borde man ju också kunna ange som vilken användare PHP ska operera? Jag har testat med kommandona 'user' och 'group' i htppd.conf, men utan väntat resultat. Påpekas bör kanske också att jag vill att PHP ska köras som olika användare på olika virtualhosts.

Någon som har några förslag?

 

//Joel

Länk till kommentar
Dela på andra webbplatser

PHP körs som samma användare som Apache (normalt nobody), eftersom Apache startar processerna (CGI) eller PHP körs i Apachen som modul.

 

Tror inte man kan köra som egen användare, men rätta mig om jag har fel...

 

 

 

 

Länk till kommentar
Dela på andra webbplatser

Nja, jag är lite osäker på det, jag tror att man kan köra setuid om man kompilerar php som en cgi modul istället för som en inbyggd modul i apache. Men jag är långt ifrån säker och har aldrig testat själv.

 

I vissa fall har jag oxå velat kunna köra setuid med php men inte gjort det för att jag hellre kör php som en inbyggd modul till apache. I de fallen jag verkligen måste köra setuid så har jag istället gjort ett enkelt C program och exekverat det som en cgi.

 

Du bör alltså (osäker men du kan ju alltid pröva) kunna kompilera php som cgi modul och sedan göra scripten setuid till den användare du vill ska äga processen (man chmod).

 

Tänk dock på säkerheten då du gör en sån här sak, trippelkolla alltid dina script så att du är helt säker på att det inte går att göra fula saker med det eftersom du ger scriptet mer rättigheter än apache då du kör setuid.

 

En annan sak man oxå bör tänka på är att en del *NIX kernels inte tillåter setuid på script som default pga säkerhetsriskerna med öppen kod och setuid.

 

Länk till kommentar
Dela på andra webbplatser

Du kan köra "setuid" om du kompilerar php som cgi men det har inget med setuid-biten att göra. Man skall definitivt inte sätta setuid på php-skripten.

 

Det är php-cgi som skall execveras som en annan användare inte skriptet som sådant även om det följer med automatiskt. Det går att göra antingen genom SuExec som ingår i apache eller via annat likvärdigt program t ex cgiwrap eller sbox. Med dessa kan man köra php-cgi i en chroot vilket kraftigt minskar vad som kan skadas om skriptet blir hackat. Fast en chroot är aldrig säkrare en implementören gör den.

 

På vilket sätt får ett setuidskript mer rättigheter än apache. Det finns sätt att få ett setuid att stanna som root och liknande men annars har det inte mer rättigheter än användaren och kör man inte som root så skulle jag vilja påstå att apache-usern och den vanliga usern har nästan lika rättigheter minus t ex skal och loginmöjligheter.

 

Länk till kommentar
Dela på andra webbplatser

Vad bra du visste mer om att köra ett script som en annan användare, som jag tidigare skrev så har jag själv aldrig gjort det men kunde inte tänka mig att det inte skulle gå på något sätt.

 

Att ett setuid script har mer rättigheter än Apache är ju sant eftersom om nånting då går snett så kan scriptet paja alla ägarens filer i hans egen home. Hade scriptet körts av apache så hade det inte kunnat hända. Men det var faktiskt inte därför jag skrev att han skulle se upp, det gjorde jag för att jag av nån konstig anledning tog för givet att han ville köra scripten som root vilket är fel då jag läser igenom hans meddelande igen.

 

Länk till kommentar
Dela på andra webbplatser

Tack för alla svar.

 

Att köra PHP som CGI är tyvärr inte aktuellt, då jag, liksom Björn, föredrar modul-läget.

Lösningen jag har kommit fram till är att de filer i home katalogen som ska kunna redigeras via PHP helt enkelt får bli skrivbara av alla, samt att jag lägger systemändringar som ett cron-job.

 

Tack igen för hjälpen.

 

//Joel

 

Länk till kommentar
Dela på andra webbplatser

glömde att tänka ur filsynpunkt tänkte bara ur systemsynpunkt.

 

Här är en intressant länk som innehåller två sätt som förenklar cgi-wrapping för php. Dels mod_phpcgiwrap och en patch till apache för att göra samma sak. http://steven.haryan.to/index.cgi?section=hacking

 

Har aldrig gjort så här med php men väl med cgi.

Ovanstående länk plus denna kan nog ge tillräckligt kött på benen. http://www.faqts.com/knowledge_base/view.phtml/aid/2897/fid/35

 

Missade cariads sista inlägg(komm en minut innan första inlägget av detta msg) men detta kanske hjälpa någon annan.

[inlägget ändrat 2002-02-05 11:01:55 av slaugther]

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...