ubuntuusers.de

Bash - SubShell als anderer User starten - Variablenproblem

Status: Gelöst | Ubuntu-Version: Ubuntu
Antworten |

steelsteel

Anmeldungsdatum:
17. Oktober 2008

Beiträge: 154

Hallo!

Knobele nun schon eine ganze Weile an einem, wie ich denke "EnvironmentProblem".

Anstatt innerhalb eines RootSkriptes mittels "su -l $User -c "bash zweitesskript.sh" ein zweites Skript mit Userberechtigungen aufzurufen, welches eine Befehlsabfolge "bündelt", möchte ich alles in das RootSkript schreiben.

Mein Versuch:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
#!/bin/bash
echo "lalala"
whoami
user="notrootuser"

(
   su -l $user -c "echo "lololo"
   whoami
   echo $user
   innen=3
   echo $innen"
)

echo "back to root"
whoami

Das RootSkript wird mittels sudo bash skriptname.sh gestartet. Die aussen definierte Variable $user steht innen zur Verfügung. Nur gelingt es mir nicht, innen neue Variablen zu definieren und zu nutzen. "innen=3 und echo $innen" bleibt ohne Auswirkung in der SubShell, die SubShell kehrt einfach wieder nach aussen zurück.

Weiss da jmd Hilfe?

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Ja. 😀

Du machst die Subshell mit "(...)" ja unter dem Original-User auf und nicht unter su. Dort führst Du allein den echo-Befehl aus.

Was Du willst, ist die Subshell selber unter su aufmachen. Das musst Du dann aber auch tun:

#!/bin/bash
echo "lalala"
whoami
user="notrootuser"

su -l $user -c "(
    echo \"lololo\"
    whoami
    echo $user          # nimm Variable der äußeren Shell
    innen=3
    echo \$innen        # nimm Variable der inneren Shell
    )"

echo "back to root"
whoami

Beim "quoten" musst Du aufpassen, welche Variable von welcher Shell eingesetzt werden soll, das ist etwas tückisch.
Deshalb sind diverse Escapes "\" nötig, damit die Gänsefüßchen und $-Zeichen für die innere Shell erhalten bleiben.

LG,

track

steelsteel

(Themenstarter)

Anmeldungsdatum:
17. Oktober 2008

Beiträge: 154

Hallo Track!

Vielen lieben Dank für Deinen Hinweis, da habe ich den Wald vor lauter Baeumen nicht mehr gesehen!

Gruesse und Dankeschoen aus Nordbayern, Steel

lucid-dream

Avatar von lucid-dream

Anmeldungsdatum:
17. Juni 2010

Beiträge: 483

Wohnort: hölle

Ich hoffe dieses Beispiel lässt sich auch für chroot verwenden, wie in diesem script grub-recovery was mir noch eigentlich fehlte, variablen an root zu übergeben und auch abzurufen. Mal sehen ob ichs gebashtelt kriege.

Antworten |