Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: bash shell als root uitvoeren  (gelezen 2490 keer)

Offline arpi

  • Lid
  • Steunpunt: Nee
bash shell als root uitvoeren
« Gepost op: 2007/09/27, 15:46:00 »
Hallo, ik zou graag een simpele bash shell willen maken die ik in root zou moeten uitvoeren. Ik ben absoluut beginner, heb al heel wat gezocht (op fora en internet maar ik kom er zelf niet aan uit). Het moet nochtans waarschijnlijk niet moeilijk zijn.
 Dus de commando dat ik in root moet uitvoeren is:
echo "0x7fffffff" >/proc/sys/kernel/shmmax

Wat ik er van gemaakt heb is:

#!/bin/bash
sudo su
echo "0x7fffffff" >/proc/sys/kernel/shmmax

maar dit werkt niet.

Kan iemand me helpen? ALs je alles zou kunnen neerschrijven wat ik in dat scriptje moet zetten, zou heel vriendelijk zijn.

breukkie

  • Gast
bash shell als root uitvoeren
« Reactie #1 Gepost op: 2007/09/27, 15:53:52 »
Waarschijnlijk is er vast iemand die je hiermee kan/wil helpen.
Maar kun je ook aangeven wat het script moet gaan doen bij deze uitvoer ?

Offline Tukcedo

  • Lid
    • http://www.tukcedo.nl
  • Steunpunt: Nee
bash shell als root uitvoeren
« Reactie #2 Gepost op: 2007/09/27, 15:53:53 »
Als je het niet erg vindt om het wachtwoord in te typen elke keer als je het script draait, dan is het vrij simpel in dit geval.

In je script zet je:

#!/bin/bash
echo "0x7fffffff" >/proc/sys/kernel/shmmax

Stel, het script heet shmmax.sh en het staat in je directory,  dan maken we het eerst "uitvoerbaar" (is een eenmalige actie) met het commando:

chmod a+x shmmax.sh

En dan wordt het commando waar je het mee start:

sudo ./shmmax.sh

That's it!
Tukcedo Services - Unix en Linux Consultants
http://www.tukcedo.nl

breukkie

  • Gast
bash shell als root uitvoeren
« Reactie #3 Gepost op: 2007/09/27, 15:54:54 »
wow das wel heel snel  Tukcedo  :P

Offline Tukcedo

  • Lid
    • http://www.tukcedo.nl
  • Steunpunt: Nee
bash shell als root uitvoeren
« Reactie #4 Gepost op: 2007/09/27, 16:00:19 »
Hahaha, ach je treft me wellicht net op een goeie dag! ;-)
Tukcedo Services - Unix en Linux Consultants
http://www.tukcedo.nl

Offline arpi

  • Lid
  • Steunpunt: Nee
bash shell als root uitvoeren
« Reactie #5 Gepost op: 2007/09/27, 16:52:51 »
Bedankt voor het snelle antwoord! Maar ik ben er nog niet.
Ik werk met Cinelerra, een video editor en ik moet deze opdracht in root uitvoeren voordat ik cinelerra opstart, ik vermoed omdat ik over niet genoeg geheugen beschik.
Ik zou graag op mijn desktop gewoon op een icon willen klikken voordat ik cinelerra opstart om het simpel te houden. Dat ik mijn paswoord moet invoeren vind ik niet erg.
Tukcedo, ik weet niet of ik je goed begreep maar op grond van wat je geschreven hebt heb ik dit gedaan ( alles in die script gezet, misschien dat is fout):

sudo /home/ann/Desktop/pre-cinelerra.sh
chmod a+x pre-cinelerra.sh
#!/bin/bash
echo "0x7fffffff" >/proc/sys/kernel/shmmax

(de script noemt dus pre-cinelerra.sh en staat op mijn bureaublad)

Hij vraagt eerst mijn paswoord, dan is hij heel lang bezig en zegt zo'n 100 keer:
chmod: kan de rechten van `pre-cinelerra.sh' niet veranderen: No such file or directory

Sorry voor mijn onkunde maar verder raak ik niet.

Offline Tukcedo

  • Lid
    • http://www.tukcedo.nl
  • Steunpunt: Nee
bash shell als root uitvoeren
« Reactie #6 Gepost op: 2007/09/27, 17:04:14 »
OK, nee dat bedoelde ik niet: het chmod en sudo commando waren bedoeld voor "buiten" het script, op de command-line dus.

Maar goed, het wordt iets duidelijker nu. Kijk, in de "desktop starter" die je definieert kun je zeggen:

/home/ann/Desktop/pre-cinelerra.sh; /pad/naar/cinelerra

Die ; zorgt ervoor dat je twee (of meerdere) commando's in 1 adem kunt uitvoeren.

Vervolgens kun je de starter zo definieren (tenminste onder KDE weet ik dat dat kan en ik vermoed dus in Gnome ook) dat deze wordt uitgevoerd door "een andere gebruiker" waarbij je dus "root" invult. De starter zal dan vanzelf om je wachtwoord vragen. Zo stel ik me dus voor hoor, maar hoe het onder Gnome werkt zul je even moeten uitvogelen.

Maar kijk eerst even of die command-line commando's die ik je eerder gaf, incl. je script werken.
Tukcedo Services - Unix en Linux Consultants
http://www.tukcedo.nl

Offline arpi

  • Lid
  • Steunpunt: Nee
bash shell als root uitvoeren
« Reactie #7 Gepost op: 2007/09/27, 19:16:52 »
Joep, nu begrijp ik al in ieder geval dat ik tot nu toe nergens begrepen heb: dat ik die chmod command niet in de script moest integreren. De script en de commandolijn  zoals je ze beschreven hebt werken. Bedankt! Maar ik slaag er nog steeds niet in om de toepassingsstarter zo op te zetten dat het in root uitvoert.
ik kan de shell ook laten uitvoeren in 'terminal als root' maar dat werkt ook niet. Hij vraagt wel mijn paswoord maar hij voert de opdracht niet uit/
Ik heb het ook niet gevonden hoe ik de starter zou kunnen laten uitvoeren als root. Ik heb wel op twee plaatsen (bij de eigenschappen van het sh bestand en bij de starter) aangepast dat het zou toelaten om het bestand uit te voeren zonder resultaat.
Dus als iemand me hierin zou kunnen helpen hoe je in Gnome dat starter als root kan laten uitvoeren, zou heel fijn zijn. Merci!

Exteris

  • Gast
bash shell als root uitvoeren
« Reactie #8 Gepost op: 2007/09/27, 21:25:33 »
je kunt een panel launcher maken, dat gebruik ik ook voor mijn LAMPP server, gewoon dat commando (met sudo) invoeren (bij custom application launcher)

Offline Tukcedo

  • Lid
    • http://www.tukcedo.nl
  • Steunpunt: Nee
bash shell als root uitvoeren
« Reactie #9 Gepost op: 2007/09/28, 08:18:14 »
Zat nog ergens anders aan te denken: als dat commando

echo "0x7fffffff" >/proc/sys/kernel/shmmax

de rest van je systeem niet in de weg zit (dus: het systeem kan er altijd mee draaien) dan zou ik dat ene regeltje gewoon in het standaard systeem opstart script, /etc/rc.d/rc.local, zetten. Dat wordt namelijk als "root" uitgevoerd en dan kun je daarna een gewone starter maken voor je appje.
Tukcedo Services - Unix en Linux Consultants
http://www.tukcedo.nl

Offline arpi

  • Lid
  • Steunpunt: Nee
bash shell als root uitvoeren
« Reactie #10 Gepost op: 2007/09/28, 21:52:01 »
Oei, sorry ik vrees dat ik weer niet meer mee ben.
Exteris, wat bedoel je met custom application launcher + met sudo invoeren? ZOu je het willen utleggen, aub. Een toepassingstarter? Als dat dan snap ik niet hoe ik dat met sudo moet invoeren.

Tukcedo, ik heb onder /etc/ rc0.d of rc1.d ...rc6.d en rcS.d.  Bij welke zou ik het moeten inzetten? En ik moet dan mijn scriptje gewoon in dat map voegen? (Mijn systeem kan inderdaad gewoon draaien met dat commando dus in die zin zou dat inderdaad het meest simpele oplossing zijn.

Offline Tukcedo

  • Lid
    • http://www.tukcedo.nl
  • Steunpunt: Nee
bash shell als root uitvoeren
« Reactie #11 Gepost op: 2007/09/28, 21:59:12 »
Je zoekt het bestand dat rc.local heet, volgens mij staat-ie bij Ubuntu gewoon in /etc/

Je hoeft daar ALLEEN dat echo regeltje aan toe te voegen, that's it!
Tukcedo Services - Unix en Linux Consultants
http://www.tukcedo.nl

Offline arpi

  • Lid
  • Steunpunt: Nee
bash shell als root uitvoeren
« Reactie #12 Gepost op: 2007/09/28, 22:09:53 »
ik heb twee bestanden gevonden die zo heten
in etc/ met het inhoud:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

exit 0

EN

 in etc/init.d met inhoud als:

#! /bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin
[ -f /etc/default/rcS ] && . /etc/default/rcS
. /lib/lsb/init-functions

do_start() {
   if [ -x /etc/rc.local ]; then
      log_begin_msg "Running local boot scripts (/etc/rc.local)"
      /etc/rc.local
      log_end_msg $?
   fi
}

case "$1" in
    start)
   do_start
        ;;
    restart|reload|force-reload)
        echo "Error: argument '$1' not supported" >&2
        exit 3
        ;;
    stop)
        ;;
    *)
        echo "Usage: $0 start|stop" >&2
        exit 3
        ;;
esac

waar moet ik mijn opdracht copiëren?

Offline siegi

  • Lid
  • Steunpunt: Nee
bash shell als root uitvoeren
« Reactie #13 Gepost op: 2007/09/28, 22:20:28 »
waarom maak je niet gewoon als script


#!/bin/bash
gksudo echo "0x7fffffff" >/proc/sys/kernel/shmmax
Dan kan je op een grafische manier je wachtwoord ingeven, dan zou je in principe dat icoontje kunnen hebben dat je moet aanklikken.

Offline arpi

  • Lid
  • Steunpunt: Nee
bash shell als root uitvoeren
« Reactie #14 Gepost op: 2007/09/28, 22:50:35 »
Hij voert het niet uit voor mij. Maar die shell herkent gksudo ook niet als command want het kleurt niet automatisch blauw.
Maar als ik het met sudo probeer dan gaat hij de terminaal openen, vraagt naar mijn paswoord, gaat naar root maar hij voert niks uit. Hertzelfde gebeurt als ik de oorspronkelijke opdracht (dus zonder (gk)sudo) laat opendoen in terminaal als root.
Ik heb nochtans in de eigenschappen van het script als uitvoerbaar bestand aangeklikt en de chmod a+x ook uitgevoerd.

Offline Johan van Dijk

  • Administrator
    • johanvandijk
  • Steunpunt: Nee
bash shell als root uitvoeren
« Reactie #15 Gepost op: 2007/09/29, 00:10:23 »
Citaat van: siegi
waarom maak je niet gewoon als script


#!/bin/bash
gksudo echo "0x7fffffff" >/proc/sys/kernel/shmmax
Dan kan je op een grafische manier je wachtwoord ingeven, dan zou je in principe dat icoontje kunnen hebben dat je moet aanklikken.
Dat gksudo commando gaat niet werken. Het commando na de > (stop waarde X in bestand Y) heeft dan geen root rechten. Wat wel werkt:
#!/bin/bash
echo "0x7fffffff" | gksudo tee /proc/sys/kernel/shmmax

Offline Tukcedo

  • Lid
    • http://www.tukcedo.nl
  • Steunpunt: Nee
bash shell als root uitvoeren
« Reactie #16 Gepost op: 2007/09/29, 08:13:03 »
Je regel zet je onderaan in rc.local. Ik weet zo niet welke Ubuntu kiest, dus waarom niet gewoon in alletwee zetten? Kan geen kwaad.
Tukcedo Services - Unix en Linux Consultants
http://www.tukcedo.nl

Offline arpi

  • Lid
  • Steunpunt: Nee
bash shell als root uitvoeren
« Reactie #17 Gepost op: 2007/09/29, 11:50:31 »
Hoi, bedankt voor alle hulp, nu heb ik al twee goede oplossingen.
Tukcedo, Jouw versie werkt inderdaad.  ik heb hem gewoon in het bestand etc/rc.local gezet (vóór exit 0) en hij voert de opdracht automatisch uit bij het opstarten. Dit is het  simpelst voor mij.

Johan, jouw scriptje werkt ook hetzij met enige aanpassingen. Gedit herkent gksudo niet bij me als operator dus heb ik hem vervangen door sudo en dan werkt het perfect. Ik heb dus ook iets bijgeleerd over die scriptjes en snap nu waarom mijn vorige pogingen niet lukten, merci!