Toon posts:

[Scripts] Logged in as user, execute script as root

Pagina: 1
Acties:
  • 104 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Gegroet

Volgend probleem. Ik log in op men fedora core 3 installatie als user. Maar ik wil een aantal scripts kunnen uitvoeren als root. Nu kan ik telkens inloggen als root (su - ) pass ingeven, de scripts runnen, en weer uitloggen. Dit is me te omslachtig. Ik wil als gebruiker ingelogd zijnde die scripts kunnen uitvoeren 'als root'. Dit is noodzakelijk omdat de cmd's in de scripts gebruikt enkel voor root beschikbaar zijn.

script 1: laden van modules ivm wlan, en wlan starten
script 2: mounten van een nfs-share

beiden mogen niet altijd uitgevoerd worden, maar enkel als ik het wil, en afzonderlijk van elkaar. De bedoeling is dat ik de scripts kan aanroepen vanop men desktop bv met een dubbelklik op een snelkoppeling in men menubalk...

wie weet raad?

ik vond al wat info rond SUDO, maar dat werkt niet, aangezien ik dan voor elk cmd dat in de scripts staat een pass moet ingeven, en 5 minuten tussen de cmd's moet wachten... geen optie dus...

Verwijderd

volgens mij is dat niet echt mogelijk ;)

Verwijderd

Topicstarter
of mss moet ik een hele andere aanpak nemen...? dat mag ook, zolang het maar werkt :)

  • spacebugs504
  • Registratie: Februari 2004
  • Laatst online: 16-12-2021
Allereerst, sommige zaken wil je alleen als root gebruiker, uit oogpunt van security.
Wil je dit omzeilen, kan dit meestal wel.

Je zou ik de fstab de optie noauto en user kunnen opnemen voor je nfs share.
Hierdoor zal deze niet gemount worden tijdens het boot process, maar kun je het later
als "normale" user mounten.

Het laden van modules zou, hoewel ik dit niet echt aanraad, mischien kunnen met een suid.
Of dit uberhaupt gaat werken weet ik niet.

Nogmaals deze opties komen security niet ten goede.

Zie man 5 fstab en man chmod voor meer info

edit: chown moest natuurlijk chmod zijn :-)

[ Voor 6% gewijzigd door spacebugs504 op 09-03-2005 00:56 ]


Verwijderd

Topicstarter
security valt nogal mee. Ik denk niet dat er mensen zijn die mijn pc's (allemaal achter router) willen hacken of wat dan ook. verder denk ik dat de virussen voor linux te beperkt zijn om daar misbruik van te maken. en gezien mijn nog on-ervarenheid wat betreft linux security, zijn er vast meer en makkelijker te exploiteren veiligheidslekken in mijn systeem...

dus security is nu niet echt een punt. Ik ben best bereid wat veiligheid daarvoor op te geven...

  • spacebugs504
  • Registratie: Februari 2004
  • Laatst online: 16-12-2021
Dan zouden dit opties kunnen zijn weer je misschien wat mee kunt.
persoonlijk hou ik niet van suid, maar soms is het een uitkomst.

Als je wat open zet op een systeem, is 't goed dit van te voren te weten.
Een gewaarschuwde linux gebruiker telt voor drie :-)

De risico's zitten 'm vooral in dat je als "normale" gebruiker dingen kunt uitvoeren die bestemt zijn voor een root gebruiker, oftewel die gebruiker met een userid gelijk aan 0

Ik ken sudo niet echt goed, maar weet wel dat je er veel mee kunt.
Als ik een script maakt wat als root moet worden uitgevoerd, zo ik sudo proberen.
lukt dat niet, dan is het een kwestie van : trek de smerige truken doos maar open ....

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Je zou het als het goed is met sudo kunnen doen.
Een regel als "username ALL=(root) NOPASSWD: /usr/bin/commando" zou moeten werken volgens mij (correct me if i'm wrong, ik gebruik sudo niet zoveel)

Blog [Stackoverflow] [LinkedIn]


Verwijderd

Topicstarter
@ Wolfboy: hoe bedoel je dat juist?
voer ik dan m'n script uit met: username ALL=root) NOPASSWD: /lindata/wlan-birkoff
(/lindata/wlan-birkoff is de lokatie van men script)
of zet ik die lijn in men script, voor elke regel...?

Verwijderd

in /etc/sudoers kan je opgeven wie welk commando als root mag uitvoeren, en of je er een wachtwoord voor nodig hebt of niet. eventueel kan je nog voor bepaalde programma's setuid e/o setgid root instellen.

  • TGEN
  • Registratie: Januari 2000
  • Laatst online: 08:36

TGEN

Hmmmx_

code:
1
su -c ./naam_van_script

Zou moeten werken, en hoef je maar eenmalig een password in te tikken?

Pixilated NetphreaX
Dronkenschap is Meesterschap
DragonFly


Verwijderd

Topicstarter
vreemd... de '-c' optie blijkt hij niet te kennen?
wat wilde je ermee bereiken? dan kan ik er mss zelf ook even achter zoeken :)

  • BoAC
  • Registratie: Februari 2003
  • Laatst online: 12:40

BoAC

Memento mori

'man sudo' is je vriend:
code:
1
2
3
4
5
6
7
8
9
10
       -c  The -c (class) option causes sudo to run the specified command with
           resources limited by the specified login class.  The class argument
           can be either a class name as defined in /etc/login.conf, or a sin-
           gle '-' character.  Specifying a class of - indicates that the com-
           mand should be run restricted by the default login capabilities for
           the user the command is run as.  If the class argument specifies an
           existing user class, the command must be run as root, or the sudo
           command must be run from a shell that is already root.  This option
           is only available on systems with BSD login classes where sudo has
           been configured with the --with-logincap option.

Ik zelf gebruik em ook niet.
Maar sudo is wel je oplossing:
Bij mij bijvoorbeeld:

/etc/sudoers:
[username] ALL = NOPASSWD:/sbin/arp

Uitvoer:
code:
1
sudo /sbin/arp

Hier wordt dus geen wachtwoord gevraagd ;)
LET OP: dit is een voorbeeld!!
Het is niet aan te raden command direct als root te laten uitvoeren!!

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 12-02 15:05

Robtimus

me Robtimus no like you

Verwijderd schreef op woensdag 09 maart 2005 @ 08:50:
vreemd... de '-c' optie blijkt hij niet te kennen?
wat wilde je ermee bereiken? dan kan ik er mss zelf ook even achter zoeken :)
"su -c <commando> [-]" logt je in als root (zie "su" vs "su -" verhaal), voert het commando uit, en logt meteen weer uit.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Verwijderd schreef op woensdag 09 maart 2005 @ 01:20:
@ Wolfboy: hoe bedoel je dat juist?
voer ik dan m'n script uit met: username ALL=root) NOPASSWD: /lindata/wlan-birkoff
(/lindata/wlan-birkoff is de lokatie van men script)
of zet ik die lijn in men script, voor elke regel...?
Zoals inmiddels al een paar keer gezegd is moet dat in /etc/sudoers komen.
Daarmee kan je het allemaal netjes instellen.

Blog [Stackoverflow] [LinkedIn]


  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Wat de beste oplossing is (raar dat 'ie nog niet genoemt is?) is chownen van de scripts naar root; en vervolgens chmod o+s op de file. Dan runt het ding onder de rechten van de eigenaar :) Vergeet niet; iedereen kan dat nu; dus als je de toegang verder kan beperken moet je dat doen. Zet de scripts bijvoorbeeld in je eigen homedirectory waar niemand anders bijkan :)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Spider.007 schreef op woensdag 09 maart 2005 @ 10:15:
Vergeet niet; iedereen kan dat nu; dus als je de toegang verder kan beperken moet je dat doen. Zet de scripts bijvoorbeeld in je eigen homedirectory waar niemand anders bijkan :)
Dat is de reden dat ik die mogelijkheid niet genoemd had ;)
Met sudo kan je precies bepalen wie het commando mogen uitvoeren en dan eventueel nog het wachtwoord van de gebruiker laten invoeren om het nog iets veiliger te maken.

Blog [Stackoverflow] [LinkedIn]


  • hammerhead
  • Registratie: April 2000
  • Laatst online: 07:59
Spider.007 schreef op woensdag 09 maart 2005 @ 10:15:
Wat de beste oplossing is (raar dat 'ie nog niet genoemt is?) is chownen van de scripts naar root; en vervolgens chmod o+s op de file. Dan runt het ding onder de rechten van de eigenaar :) Vergeet niet; iedereen kan dat nu; dus als je de toegang verder kan beperken moet je dat doen. Zet de scripts bijvoorbeeld in je eigen homedirectory waar niemand anders bijkan :)
Het SUID zetten van een script werkt voor zover ik weet niet. Dit werkt alleen voor programma's.

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


Verwijderd

Topicstarter
dat werkt idd niet blijkbaar...
command not foud krijg ik nog steeds, op de cmd's in men script...
code:
1
./wlan-birknet: line 6: dhclient: command not found

  • BoAC
  • Registratie: Februari 2003
  • Laatst online: 12:40

BoAC

Memento mori

Verwijderd schreef op woensdag 09 maart 2005 @ 11:36:
dat werkt idd niet blijkbaar...
command not foud krijg ik nog steeds, op de cmd's in men script...
code:
1
./wlan-birknet: line 6: dhclient: command not found
Wat is de 'PATH' variable in je script? Waarschijnlijk komt 'sbin' daar niet in voor ;)

Verwijderd

Topicstarter
hmmm
ik voel nattigheid...
voor alle duidelijkheid, mijn script:
code:
1
2
3
4
5
6
cd /lindata/rtl8180-0.20.2
./module_load
ifconfig wlan0 up
iwconfig wlan0 essid mijn_essid
iwconfig wlan0 key mijn_wep_key
dhclient wlan0


is mijn script dan grondig fout?
het dient dus om bepaalde modules te laden mbhv een scriptje dat in de dir /lindata/rtl8180-0.20.2 staat. daarna zet ik en wlan aan, en maak ik wat instellingen. Het scipt werkt perfect als ik het als root uitvoer...

Verwijderd

setuid bitje is beveiligingstechnisch geen nette optie en moet je alleen gebruiken wanneer je zeker weet dat het niet anders kan, en wanneer je zeker weet dat je scriptje absoluut bulletproof is. Stel je voert je scriptje met teveel, te weinig of te lange parameters uit, dan is de kans dat er uiteindelijk een rootshell geopend wordt niet ondenkbaar. Elke user kan dan als root uitvreten op je systeem wat'ie maar wil.

(en da's mischien wel de reden dat je een script op Linux geen suid kunt geven)

  • BoAC
  • Registratie: Februari 2003
  • Laatst online: 12:40

BoAC

Memento mori

Kijk eens hier in dit topic rond: Het grote "handige scripts" topic
Komt wel een paar keer PATH langs ;)

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Verwijderd schreef op woensdag 09 maart 2005 @ 11:52:
hmmm
ik voel nattigheid...
voor alle duidelijkheid, mijn script:
code:
1
2
3
4
5
6
cd /lindata/rtl8180-0.20.2
./module_load
ifconfig wlan0 up
iwconfig wlan0 essid mijn_essid
iwconfig wlan0 key mijn_wep_key
dhclient wlan0


is mijn script dan grondig fout?
het dient dus om bepaalde modules te laden mbhv een scriptje dat in de dir /lindata/rtl8180-0.20.2 staat. daarna zet ik en wlan aan, en maak ik wat instellingen. Het scipt werkt perfect als ik het als root uitvoer...
Neem gewoon volledige paden op naar de binaries die je uitvoert :)
Verwijderd schreef op woensdag 09 maart 2005 @ 11:54:
setuid bitje is beveiligingstechnisch geen nette optie en moet je alleen gebruiken wanneer je zeker weet dat het niet anders kan, en wanneer je zeker weet dat je scriptje absoluut bulletproof is. Stel je voert je scriptje met teveel, te weinig of te lange parameters uit, dan is de kans dat er uiteindelijk een rootshell geopend wordt niet ondenkbaar. Elke user kan dan als root uitvreten op je systeem wat'ie maar wil.

(en da's mischien wel de reden dat je een script op Linux geen suid kunt geven)
Uiteraard; maar het script wat boven jou wordt gepost accepteert dan ook geen userinput en is dus goed geschikt om als suid te draaien. Verder is de impact van dat script ook niet zo groot dat het beschermt moet worden tegen oneigelijk gebruik. Ik vind een suid oplossing overigens netter dan een sudoers entry

[ Voor 27% gewijzigd door Spider.007 op 09-03-2005 12:44 ]

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • Nitroglycerine
  • Registratie: Januari 2002
  • Laatst online: 12-02 22:57

Nitroglycerine

Autisme: belemmering en kracht

Indien je die scripts iedere keer draait bij het opstarten, kun je ze ook automatisch opstartbaar kunnen maken voor ze in de /etc/init.d/rc3.d te zetten. Kijk even rustig naar de syntaxis van de scripts. Je hebt in principe 2 extra scriptjes nodig afgezien van het oorspronkelijke script, namelijk een start en stop script. Het stop script is niet noodzakelijk, wel mooier. Het start script moet je de volgende naam geven: S<nr><naamvhscript> en het is moet een softlink naar het script zelf zijn. Hoe hoger het nr, hoe later het uitgevoerd wordt. Bekijk zelf rustig wat voor scripts er al in staan, en beslis zelf wanneer je het wireless lan aan wilt hebben staan. (en nfs shares aankoppelen).

Let wel op dat in de scripts enkel absolute paden opgegeven worden, voor ieder commando dat je gebruikt. Dus even op de commandline als root "which <commando>" uitvoeren en het script aanpassen.

Hier kon uw advertentie staan


Verwijderd

Topicstarter
wlan moet aan als ik het wil, kan dus op eender welk moment zijn... zeer wss niet bij het booten

  • igmar
  • Registratie: April 2000
  • Laatst online: 31-01 23:50

igmar

ISO20022

Spider.007 schreef op woensdag 09 maart 2005 @ 10:15:
Wat de beste oplossing is (raar dat 'ie nog niet genoemt is?) is chownen van de scripts naar root; en vervolgens chmod o+s op de file.
Alleen zo jammer dat setuid / setgid bits op een script gewoonweg door de kernel genegeerd worden. Het werkt alleen nog in pre-oorlogse *NIX versies :)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
igmar@ouzo:~$ cat test.sh
#!/bin/sh
id -u
igmar@ouzo:~$ ./test.sh
1000
igmar@ouzo:~$ su
Password:
ouzo:/home/igmar# ./test.sh
0
ouzo:/home/igmar# chmod u+s test.sh
ouzo:/home/igmar# ls -l test.sh
-rwsr-xr-x  1 root devel 16 2005-03-10 10:45 test.sh
ouzo:/home/igmar# exit
igmar@ouzo:~$ ./test.sh
1000
igmar@ouzo:~$ ls -l test.sh
-rwsr-xr-x  1 root devel 16 2005-03-10 10:45 test.sh


Ergo : het doet inderdaad niks. Het werkt alleen files die een direct uitvoerbaar formaat zijn (elf, aout, etc).

[ Voor 41% gewijzigd door igmar op 10-03-2005 10:49 ]


Verwijderd

Topicstarter
1 probleem is al opgelost, nl het mounten van van het nfs-volume. Door toevoegen van de parameter 'noauto' in /etc/fstab , heb ik nu een 'station' bijgekregen bij 'computer' , met als naam het mountpoint van de nfs-share. Als ik deze aanklik, wordt de share automatisch gemount. Dus dat probleem is al opgelost!!

nu rest nog het verbinding kunnen maken met de wlan's waar ik op wil gaan...
ik pak het dus met scriptjes aan, maar een kant-en-klare (liefst grafische) oplossing is uiteraard ook zeer welkom!
Pagina: 1