Toon posts:

[Linux/PHP] Uitvoeren als gebruiker

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
Beste Tweakers,

Voor een projectje waarmee ik bezig ben, heb ik 2 servers. De ene server heeft het panel, de andere server heeft de gameservers. Dit werkt allemaal perfect, de ene server houdt netjes contact met de andere server via HTTP/XML.

Nou wil ik echter dat iemand op het panel aan kan klikken dat een gameserver opnieuw gestart moet worden. Ok, geen probleem, je killt de oude en start de nieuwe.

Nou lukt het killen van de oude met gemak: je zoekt in de processenlijst en killt de goede. Het starten van een nieuwe instantie is helaas wat lastiger: Hij voert 'm uit als apache, niet als de goede gebruiker.

Logisch, maar hoe los ik dit op?

Tom

  • Herko_ter_Horst
  • Registratie: November 2002
  • Niet online
Met su?

"Any sufficiently advanced technology is indistinguishable from magic."


Verwijderd

Topicstarter
en hoe moet "apache" su uitvoeren? zonder het wachtwoord te weten?

su krijg ik wel aan de praat, maar ik krijg 'm niet zover dat 'ie ook inderdaad die gameserver opstart vanuit de goede gebruiker. En daar komt dan nog bij: su werkt niet omdat de shell op /sbin/nologin staat

[ Voor 61% gewijzigd door Verwijderd op 01-03-2009 16:28 . Reden: kleine verandering ]


Verwijderd

Gebruik sudo. Daarmee kun je bepaalde gebruikers bepaalde commando's als root laten uitvoeren.

  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

setuid setten op een scriptje?

Verwijderd

Topicstarter
Verwijderd schreef op zondag 01 maart 2009 @ 16:40:
Gebruik sudo. Daarmee kun je bepaalde gebruikers bepaalde commando's als root laten uitvoeren.
dat is het probleem niet. ik kom via apache tot het root account maar vanaf daar kom ik niet verder: ik wil niet uitvoeren als root, maar als normale gebruiker.

Verwijderd

Verwijderd schreef op zondag 01 maart 2009 @ 16:42:

dat is het probleem niet. ik kom via apache tot het root account maar vanaf daar kom ik niet verder: ik wil niet uitvoeren als root, maar als normale gebruiker.
Dat kan ook, moet je even de documentatie lezen.

Verwijderd

Topicstarter
Verwijderd schreef op zondag 01 maart 2009 @ 16:43:
[...]

Dat kan ook, moet je even de documentatie lezen.
Danku!
[root@tvdw ~]# sudo -u rick whoami
rick

  • Luqq
  • Registratie: Juni 2005
  • Laatst online: 27-10 13:02
Ik heb een soortgelijk projectje op het moment, en de enige relatief veilige manier om dit op te lossen, is om de SSH2 Module voor php te gebruiken, en met public+private key in te loggen, en zo de server te starten.

Verwijderd

Topicstarter
kan niet, shell staat op /sbin/nologin

tevens weet ik ook niet alle wachtwoorden van de accounts op mijn server.

  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Dat is nou net het idee van een public key ;).

ideetje om die shell dan te fixen en dan alleen public te allowen?

Verwijderd

Topicstarter
Boudewijn schreef op zondag 01 maart 2009 @ 17:07:
Dat is nou net het idee van een public key ;).

ideetje om die shell dan te fixen en dan alleen public te allowen?
dat maakt alles weer een beetje complex terwijl het ook makkelijk kan

  • Luqq
  • Registratie: Juni 2005
  • Laatst online: 27-10 13:02
Verwijderd schreef op zondag 01 maart 2009 @ 17:09:
[...]

dat maakt alles weer een beetje complex terwijl het ook makkelijk kan
Geloof me, dit is de makkelijkste manier. Je wil dit echt niet via apache oplossen :)

  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Verwijderd schreef op zondag 01 maart 2009 @ 17:09:
[...]

dat maakt alles weer een beetje complex terwijl het ook makkelijk kan
Dit is juist makkelijk :P.

Wat jij aan het doen bent maakt de boel juist complex, ook ivm mensen die rommel via je apache uit gaan vreten.

Verwijderd

Topicstarter
nou, kijk, het idee is dus dat er later nog extra servers (fysieke) bij komen, zowel windows als linux. daarom werk ik via een php-script die alles afhandelt, deze kan dan bepalen hoe 'ie het doet, ipv alles via de panelserver te doen.

Tom

  • eghie
  • Registratie: Februari 2002
  • Niet online

eghie

Spoken words!

Dat gaat niet werken, zie ook: http://www.faqs.org/faqs/unix-faq/faq/part4/section-7.html

Kun je niet iets als dit doen?
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//Do some important stuff

//Drop privileges (inspired by the book "The Art of Software Security Assessment")

/* 1. drop group privileges */
if (setgid(getgid()!=0)) /* getgid() returns the real group id (gid of the calling user) */
{
  /* error handling: unable to lose group privileges */
}

/* 2. drop supplemental group ids */
#ifdef HAVE_SETGROUPS
if (setgroups(0,NULL)!=0)
{
  /* error handling: Unable to clean supplemental group id list */
}
#endif

/* 3. drop user privileges */
if (setuid(getuid()!=0)) /* getuid() returns the real user id (uid of the calling user) */
{
  /* error handling: Unable to drop user privileges */
}

// Do some non privileged stuff.


Zie daarvoor:
http://nl2.php.net/posix_setgid
http://nl2.php.net/posix_setuid

[ Voor 64% gewijzigd door eghie op 01-03-2009 17:49 ]


Verwijderd

Topicstarter
nee, het script voert standaard uit als apache en niet als root. geen rechten dus
Pagina: 1