Script uitvoeren als bepaalde user

Pagina: 1
Acties:

  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 15-01 10:55
Ik heb een script dat ik steeds onder een andere gebruik wil uit kunnen voeren.

Ik heb daarvoor een ander script gemaakt met daarin iets als "sudo -H -u $USERNAME ./anderscript $1 $2 $3"

Nu werkt dit niet erg handig, ik ga de username afleiden van andere instellingen. Eigenlijk wil ik kort na het begin van ./anderscript het script alle commando's laten uitvoeren onder een andere username. Het zetten van een hele reeks sudo commando's lijkt me niet erg handig. Is er een andere manier om alles wat na een bepaald moment komt in een script in te stellen?

Ik dacht dat ik eens zoiets had geizen als "setuid" maar ik kan het met google toch niet vinden. Het zetten van zo'n flag op het bestand is niet de bedoeling, omdat deze flag dan steeds zou moeten wijzigen, en ik dan tegen hetzelfde probleem weer aanloop.

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • Cyphax
  • Registratie: November 2000
  • Nu online

Cyphax

Moderator LNX
Nou, ik denk dat setuid je misschien wel kan helpen. De manpage van setuid zegt dit namelijk:
setuid sets the effective user ID of the current process.
If the effective userid of the caller is root, the real
and saved user ID's are also set.
http://www.rt.com/man/setuid.2.html

Saved by the buoyancy of citrus


  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 15-01 10:55
Dit lijkt een C functie te zijn, want mijn machine kent die namelijk niet. Ik zal eens kijken of het een los programma is wat ik kan ophalen.

edit:
helaas, geen package van te vinden.

[ Voor 15% gewijzigd door pierre-oord op 24-03-2005 15:49 ]

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • Cyphax
  • Registratie: November 2000
  • Nu online

Cyphax

Moderator LNX
pierre-oord schreef op donderdag 24 maart 2005 @ 15:48:
Dit lijkt een C functie te zijn, want mijn machine kent die namelijk niet. Ik zal eens kijken of het een los programma is wat ik kan ophalen.

edit:
helaas, geen package van te vinden.
Ja inderdaad, het gaat dan om chown en chmod waarmee je setuid bitjes kan zetten voor bestanden. Ik weet het eigenlijk ook niet precies dan.

Saved by the buoyancy of citrus


  • elTigro
  • Registratie: November 2000
  • Laatst online: 12-02 10:42

elTigro

Es un Gringo!

volgens mij kun je scripts (ala c-shell /bash) niet setuid maken.

ik heb zelfs iets als;
code:
1
2
3
4
5
6
     int i,strlenargs;
     int teller;
     uid_t id = 0;
 i = getuid();
 if (i == 598 || i == 599 || i == 587 || i == 531  ) {
   setuid(id);} else {printf("not allowed"); exit ;}
en vervolgens een call naar system ("commando dat moet worden gedaan (komt uit argv[1])"); zeg maar

wanneer je id nu laat wisselen, of als argument aan je programma meegeeft, kun je effectief als verschillende users een taak uitvoeren.
(oh ja, dit is in C natuurlijk, en geen scripting, maar je kunt dit programma heel goed een script laten uitvoeren natuurlijk)

Hoop dat het een beetje duidelijk verhaal is ... :z

[ Voor 84% gewijzigd door elTigro op 24-03-2005 16:14 . Reden: iets duidelijker maken.... ]

Lazlo's Chinese Relativity Axiom:No matter how great your triumphs or how tragic your defeats --approximately one billion Chinese couldn't care less.


  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 15-01 10:55
Het lijkt me zo onhandig, ik bedenk nu al dingen als het script zichzelf laten uitvoeren met sudo als het niet als sudo is uitgevoerd, zodat ik een functie 2 keer kan gebruiken. Maar dat is alles behalve duidelijk, overzichtelijk, en handig...

edit
@bk1:
Via een C programma dus een ander programma oproepen die dan de juiste uid krijgt.

Ik heb het nu opgelost met een aantal sudo regels, dat waren er uiteindelijk maar 9, en er worden er per keer maar 3 uitgevoerd, maar zou toch handiger moeten kunnen.

[ Voor 36% gewijzigd door pierre-oord op 24-03-2005 20:40 ]

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • Hmzaniac
  • Registratie: Januari 2002
  • Laatst online: 05-08-2023

Hmzaniac

Evil Admin

BK1 schreef op donderdag 24 maart 2005 @ 16:04:
volgens mij kun je scripts (ala c-shell /bash) niet setuid maken.
Nofi hoor, maar wat een onzin..

Eenieder bestand waar execute rechten op staan kan suid/sgid gemaakt worden.

chmod u+s/g+s op je bestand, en het wordt voortaan uitgevoerd als de owning user respectievelijk group.

man chmod voor meer info.

Ik heb een WOS-post!


  • Sendy
  • Registratie: September 2001
  • Niet online
Hmz >
Een script kan meestal niet setuid draaien. Dat is namelijk bijzonder onveilig. Een manier om dit op te lossen is het gebruiken van een wrapper in C (dit had de TS ook met Google kunnen vinden), maar dat is niet praktischer dan de twee scripts en wat sudo regels. Waarschijnlijk zijn de sudo regels veiliger.

Je kan in je scriptje natuurlijk een ander scriptje zetten dat je door sudo sh laat uitvoeren, maar mijn kennis van bash reikt niet zover. Daar kan ik je niet mee helpen.

  • _JGC_
  • Registratie: Juli 2000
  • Nu online
Hmzaniac schreef op vrijdag 25 maart 2005 @ 00:20:
[...]


Nofi hoor, maar wat een onzin..

Eenieder bestand waar execute rechten op staan kan suid/sgid gemaakt worden.

chmod u+s/g+s op je bestand, en het wordt voortaan uitgevoerd als de owning user respectievelijk group.

man chmod voor meer info.
Script setuid maken is een ding, script daarna met setuid uitvoeren is iets anders. De kernel negeert scripts als het om setuid scripts gaat. Voor perl bijvoorbeeld heb je en setuid perl interpreter die alleen wil uitvoeren als het uit te voeren script ook setuid is.

  • blaataaps
  • Registratie: Juli 2001
  • Niet online
Hmzaniac schreef op vrijdag 25 maart 2005 @ 00:20:
[...]


Nofi hoor, maar wat een onzin..

Eenieder bestand waar execute rechten op staan kan suid/sgid gemaakt worden.

chmod u+s/g+s op je bestand, en het wordt voortaan uitgevoerd als de owning user respectievelijk group.

man chmod voor meer info.
Alle unix-versies die niet uit de steentijd komen zullen dat bitje echter netjes negeren als het om scripts gaat, dus ja je kunt het suid/sgid maken, maar je schiet er geen donder mee op dus.
edit:
wat _JGC_ ook zegt dus

[ Voor 25% gewijzigd door blaataaps op 25-03-2005 01:14 ]

Pagina: 1