[PHP] Aangemaakte dir. chown'en

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een script dat een directory aanmaakt. Deze directory heeft dan als eigenaar: 'www:shared'.

Nu dacht ik met de volgende code om de rechten te veranderen:
PHP:
1
2
$result = mkdir("../$document_root/$posted_login", 0777);
chown("../$document_root/$posted_login", "admin");

Graag wil ik dus dat de directory de eigenaar 'admin' krijgt. Dit lukt niet met een PHP-script, wél via de SSH-console.

Als ik het met het script probeer, dan blijft de eigenaar 'www'. Wat doe ik fout?

Acties:
  • 0 Henk 'm!

  • igmar
  • Registratie: April 2000
  • Laatst online: 03-09 22:58

igmar

ISO20022

chown() is alleen te gebruiken als root, dat script werkt dus niet.

Acties:
  • 0 Henk 'm!

  • hammerhead
  • Registratie: April 2000
  • Laatst online: 01-09 08:00
Als je het via de SSH console doet, onder welke username doe je dat dan? Doe je dat als root of als de user www op dat moment?

Aviation is proof that given the will, we have the capacity to achieve the impossible.
--Eddie Rickenbacker


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Maar hoe los ik dit probleem dan op? Als ik exec("chown blabla"); probeer, wil dat wel? Met andere woorden: wordt exec() uitgevoerd op 'root'-niveau?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
hammerhead schreef op 17 July 2003 @ 16:47:
Als je het via de SSH console doet, onder welke username doe je dat dan? Doe je dat als root of als de user www op dat moment?
Als root. Daarom werkt het dan dus wel. Kan ik die server niet zo veranderen dat het wél mogelijk is onder gebruiker www? Heb namelijk zelf controle over die server. Bijkomstigheid is dat de server niet achter het internet hangt.

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 03:13
Je zou een shellscriptje kunnen schrijven die de gemaakte directories voor je aanmaakt (op basis van de argumenten), dat scriptje als eigenaar 'root' geven en de set-user-id bit op 1 zitten (chmod a+s). Uiteraard is dit een nogal lompe oplossing aangezien elke gebruiker met local access dat scriptje kan aanroepen, maar goed, misschien is het voor jouw doel toereikend.

edit:
Het gebruik van sudo, zoals saviour suggereert, is inderdaad netter (zeker als het om je eigen server gaat), dan hoef je niet handmatige dergelijke constructies te bedenken.

[ Voor 22% gewijzigd door Soultaker op 17-07-2003 17:04 ]


Acties:
  • 0 Henk 'm!

  • saviour
  • Registratie: Juli 2000
  • Niet online
Zoek op sudo :)

Acties:
  • 0 Henk 'm!

  • markjuh
  • Registratie: Juli 2000
  • Laatst online: 12-09 13:58
Ben ook wel benieuwd of exec() als root gezien wordt.

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 03:13
Markjuh schreef op 17 July 2003 @ 17:04:
Ben ook wel benieuwd of exec() als root gezien wordt.
Nee, natuurlijk niet.

Acties:
  • 0 Henk 'm!

  • markjuh
  • Registratie: Juli 2000
  • Laatst online: 12-09 13:58
Soultaker schreef op 17 July 2003 @ 17:05:
[...]

Nee, natuurlijk niet.
Oke, en wat is sudo dan, wat doet het?

Acties:
  • 0 Henk 'm!

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Markjuh schreef op 17 July 2003 @ 17:07:
Oke, en wat is sudo dan, wat doet het?
# man sudo

Acties:
  • 0 Henk 'm!

  • markjuh
  • Registratie: Juli 2000
  • Laatst online: 12-09 13:58
Heb gekeken, maar kan niet vinden hoe ik het moet benaderen vanuit een php-script.
Wordt het dan zoiets als:
PHP:
1
exec("sudo -u root [command]");

??

Acties:
  • 0 Henk 'm!

  • hammerhead
  • Registratie: April 2000
  • Laatst online: 01-09 08:00
Soultaker schreef op 17 July 2003 @ 16:53:
Je zou een shellscriptje kunnen schrijven die de gemaakte directories voor je aanmaakt (op basis van de argumenten), dat scriptje als eigenaar 'root' geven en de set-user-id bit op 1 zitten (chmod a+s). Uiteraard is dit een nogal lompe oplossing aangezien elke gebruiker met local access dat scriptje kan aanroepen, maar goed, misschien is het voor jouw doel toereikend.

edit:
Het gebruik van sudo, zoals saviour suggereert, is inderdaad netter (zeker als het om je eigen server gaat), dan hoef je niet handmatige dergelijke constructies te bedenken.
Was het overigens niet zo dat setuid bit niet voor scripts opging?

Aviation is proof that given the will, we have the capacity to achieve the impossible.
--Eddie Rickenbacker


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 03:13
hammerhead schreef op 17 July 2003 @ 17:58:
Was het overigens niet zo dat setuid bit niet voor scripts opging?
Hmm, inderdaad, je hebt gelijk! Goed dat je dat even opmerkt. Dan werkt mijn suggestie dus helemaal niet (tenzij je een C applicatie gaat schrijven, ofzo) maar is het gebruik van sudo duidelijk een beter plan.

Het gaat natuurlijk mis omdat het script weliswaar een setuid bit heeft, maar het proces dat uitgevoerd wordt (/bin/sh, bijvoorbeeld) natuurlijk niet. Het script wordt vervolgens als invoer aan sh gevoerd, maar daarvoor maakt die hele setuid-bit niet uit.
Pagina: 1