Hallo! Ich versuche gerade ein Script zu schreiben das mir etwas als root ausführt. Leider führt das Script die weiteren Befehle nach su nicht aus, da es in der shell/login von root "hängenbleibt." Wenn ich nun aus diesem login mit exit aussteige wird mein Script fortgeführt, was mir auch alles als logisch erscheint. Aber wie reslisiere ich es nun das er die Befehle unter su auch als root ausführt, mit su -c kann ich nur einzelen Befehle ausführen. #!/bin/sh name=`whoami` su echo "Mounting the drives...." echo "" mount yxz mount 123 mount CDF --SNIP-- exit 0 Gruß Mario
Mario Ohnewald wrote:
Aber wie reslisiere ich es nun das er die Befehle unter su auch als root ausführt, mit su -c kann ich nur einzelen Befehle ausführen.
su -c "mount yxz; mount 123; mount CDF" su macht eine neue Shell auf. wenn du dort "exit" eingibst, wird der Rest ausgefuehrt. Peter
Hi, da mein Script aber etwas länger ist und ich bei su -c es in eine Zeile schreiben müsste wäre das ein bisschen unschön, oder? Mehr wie einmal möchte ich eigenlich das root passwd nicht eingeben müssen. #!/bin/sh name=`whoami` su -c echo "Mounting the Network...." echo "" echo "Please enter your Passwort for Home Directory." mount -t smbfs -o username=$name,uid=$name,gid=users //pdserver/home /mnt/home/ echo "Please enter your Passwort for Mail Directory." mount -t smbfs -o username=$name,uid=$name,gid=users //pdserver/wgpo0000$ /mnt/wgpo0000/ echo "Please enter your Passwort for Puffer Directory." mount -t smbfs -o username=$name,uid=$name,gid=users //pdserver/puffer /mnt/puffer/ echo "Please enter your Passwort for Server Directory." mount -t smbfs -o username=$name,uid=$name,gid=users //pdserver/ARADEX /mnt/server echo "Done mounting, have phun!" exit 0
From: Peter Wiersig [mailto:wiersig-ml@dns.glamus.de]
Mario Ohnewald wrote:
Aber wie reslisiere ich es nun das er die Befehle unter su
auch als root
ausführt, mit su -c kann ich nur einzelen Befehle ausführen.
su -c "mount yxz; mount 123; mount CDF"
su macht eine neue Shell auf. wenn du dort "exit" eingibst, wird der Rest ausgefuehrt.
Peter
Gruß Mario
Mario Ohnewald wrote:
da mein Script aber etwas länger ist und ich bei su -c es in eine Zeile schreiben müsste wäre das ein bisschen unschön, oder?
Zwei Skripte schreiben: Skript1: #!/bin/bash su -c Skript2.sh und in Skript2 alle Kommandos wie root sie ausfuehren soll. smbshares kann man auch als User mounten, wenn ein entspr. fstab-entry besteht und "smbmnt" suid root ist. ^^^^^^ Und schau dir mal das "credentials" in "man smbmount" an. Peter
Hallo!
From: Peter Wiersig [mailto:wiersig-ml@dns.glamus.de]
Mario Ohnewald wrote:
da mein Script aber etwas länger ist und ich bei su -c es in eine Zeile schreiben müsste wäre das ein bisschen unschön, oder?
Zwei Skripte schreiben: Skript1: #!/bin/bash su -c Skript2.sh
und in Skript2 alle Kommandos wie root sie ausfuehren soll.
smbshares kann man auch als User mounten, wenn ein entspr. fstab-entry besteht und "smbmnt" suid root ist. Idee gefällt mir sehr gut!
visudo: -------------------------------------- mohnewald ALL=NOPASSWD:/usr/bin/smbmnt ##im Prinzip sollte das hier reichen mohnewald ALL=NOPASSWD:/usr/bin/mount mohnewald ALL=NOPASSWD:/usr/bin/smbmountdie $# mount /mnt/puffer/ 2091: session request to 192.168.10.1 failed (Called name not present) 2091: session request to 192 failed (Called name not present) Password: smbmnt must be installed suid root for direct user mounts (501,501) smbmnt failed: 1 /etc/fstab: //192.168.10.1/puffer /mnt/puffer smbfs username=user5,ro,noauto,user,exec,unhide 0 0
Und schau dir mal das "credentials" in "man smbmount" an.
Spitze, das ist auch ne super Idee! Was hab ich falsch gemacht? Gruß Mario
Hallo Mario, hallo Peter, hallo Leute, Am Dienstag, 10. September 2002 16:28 schrieb Mario Ohnewald:
From: Peter Wiersig [mailto:wiersig-ml@dns.glamus.de]
smbshares kann man auch als User mounten, wenn ein entspr. fstab-entry besteht und "smbmnt" suid root ist.
Idee gefällt mir sehr gut!
visudo: -------------------------------------- mohnewald ALL=NOPASSWD:/usr/bin/smbmnt ##im Prinzip sollte das hier reichen mohnewald ALL=NOPASSWD:/usr/bin/mount mohnewald ALL=NOPASSWD:/usr/bin/smbmountdie
(vi)sudo != suid-root Die drei Zeilen kannst Du gleich wieder aus der sudo-Konfiguration löschen ;-)
$# mount /mnt/puffer/ 2091: session request to 192.168.10.1 failed (Called name not present) 2091: session request to 192 failed (Called name not present) Password: smbmnt must be installed suid root for direct user mounts (501,501) smbmnt failed: 1
Woher soll mount wissen, dass es jetzt plötzlich "sudo smbmnt" und nicht wie bisher smbm(ou)nt aufrufen soll?
Was hab ich falsch gemacht?
Ganz einfach: Du hast nicht das suid-bit von smbmnt gesetzt, sondern smbmnt zur Ausführung mit sudo freigegeben. Also: chmod 4711 smbmnt Gruß Christian Boltz -- Registrierter Linux-Nutzer #239431 Linux - life is too short for reboots.
On 10 Sep 2002 at 12:54, Mario Ohnewald wrote:
Hi, da mein Script aber etwas länger ist und ich bei su -c es in eine Zeile schreiben müsste wäre das ein bisschen unschön, oder? Mehr wie einmal möchte ich eigenlich das root passwd nicht eingeben müssen.
Und? wo ist das Problem: akyek@pc105396:~> more do.sh echo "Dies ist die 1. Zeile" echo "Dies ist die 2. Zeile" echo "Dies ist die 3. Zeile" akyek@pc105396:~> su - -c "/home/akyek/do.sh" Password: Dies ist die 1. Zeile Dies ist die 2. Zeile Dies ist die 3. Zeile akyek@pc105396:~> Geht hier einwandfrei auch mit einem Skript. Andreas
su kann nicht in einem Shellscript (oder here document) verwendet werden, wenn es nach Passwort fragt. Die Passwortabfrage erfolgt direkt ueber das entsprechende device (for obvious reason). Du must dazu z.B. ein expect script schreiben. Achim
Mario Ohnewald wrote:
Ich versuche gerade ein Script zu schreiben das mir etwas als root ausführt. Leider führt das Script die weiteren Befehle nach su nicht aus, da es in der shell/login von root "hängenbleibt."
Ist logisch. Dein Skript wartet mit der Abarbeitung, bis der su-Befehl erfolgreich beendet wurde. Du befindest Dich ja damit in einer anderen Shell. Dann werden die nachfol- genden Zeilen ausgefuehrt.
[...] Aber wie reslisiere ich es nun das er die Befehle unter su auch als root ausführt, mit su -c kann ich nur einzelen Befehle ausführen.
Wer behauptet das? ;-) $> su -c 'echo 1; echo 2; echo 3' Password: 1 2 3 $> Passt, oder? Gruesse, Thomson -- Thomas Hertweck, Geophysicist Geophysical Institute, Karlsruhe University (TH)
Hallo, On Tuesday 10 September 2002 12:37, Mario Ohnewald wrote:
Hallo! Ich versuche gerade ein Script zu schreiben das mir etwas als root ausführt. Leider führt das Script die weiteren Befehle nach su nicht aus, da es in der shell/login von root "hängenbleibt." Wenn ich nun aus diesem login mit exit aussteige wird mein Script fortgeführt, was mir auch alles als logisch erscheint. Aber wie reslisiere ich es nun das er die Befehle unter su auch als root ausführt, mit su -c kann ich nur einzelen Befehle ausführen.
dafür gibt es sudo. Du könntest den Teil, der von root ausgeführt werden soll, in ein extra Skript packen und mit sudo (man sudo, man sudoers) aufrufen. Oder Du startest das ganze Skript mit sudo, was sinnvoller ist, hängt von den Randbedingungen ab. Schöne Grüße, Stephan -- /* Stephan Hakuli -=-=-=- http://www.hakuli.de/stephan Encryption with GnuPG/GPG is strongly encouraged, my public key is available on my website or on common public keyservers. # find /usr/src/linux-2.2.20 -name "*.[hc]"|xargs grep "can grep" */
participants (7)
-
Achim Hoffmann
-
Andreas Kyek
-
Christian Boltz
-
Mario Ohnewald
-
Peter Wiersig
-
Stephan Hakuli
-
Thomas Hertweck