su im Skript??

D

D.Cent

Foren As
Hallo,

Ich habe ein Skript zum Uhren stellen geschrieben. Einmal als root ausführen und nach 5 Sekunden ist die Uhrzeit richtig. Jetzt wollte ich mein Skript erweitern:

Und zwar, wenn ich dieses Skript nicht als root ausführe, dass ich dann darauf hingewiesen werde, und mein root-password eigeben muss. Doch wenn ich es ausführe, passiert folgendes:

Bitte als root einloggen, um Uhr zu stellen.
Passwort:
linux:/home/philipp/cprogs/sh-skripte #
linux:/home/philipp/cprogs/sh-skripte # exit
exit
ANMELDUNG FEHLGESCHLAGEN!

Das Problem ist also, dass die Befehle nicht als root ausgeführt werden.

Das Programm gibt es unten.

Kann mir jemand helfen?
 

Anhänge

  • uhr_stellen.sh.gz
    427 Bytes · Aufrufe: 8
Vielleicht alles was su ausführen soll in "" oder so.
 
So funktioniert es nicht. Momentan ist der Ablauf deines Scriptes folgender:
  • Script wird gestartet
  • echo "Bitte als root ..."
  • su
  • und hier kommt der Knackpunkt -> das Script läuft erst weiter, wenn du den SU-Mode [ich nenn das jetzt mal so] wieder verläßt.

Wenn du dein Script als normaler User ausführen willst, dann kommt sudo (oder ähnliche Tools) in Frage.
Eine andere Möglichkeit gibt es mit SU.
Code:
      1 #!/bin/bash -x
      2 # ich bin ein kleines Test-Script und gebe den Namen des ausführenden Users aus
      3 whoami
Dann kannst du in der Console eingeben:
Code:
grey@mod-001:~$ su -c ./test.sh
Password:
+ whoami
root
grey@mod-001:~$
Versuch es mal, vielleicht hilft dir das weiter.
 
naja vielleicht in script

su -c "alle möglichen befehle"

aber ich glaub das geht nicht.
ich würds mit sudo machen
 
ja man müsste quasi alle Befehle in "su -c" legen, falls kein root aktiv.

Aber einfach das Script "als root weiterlaufen lassen" geht nicht.

Ich persönlich würds folgendermaßen machen:
Bei user ($UID > 0) -> Meldung: "Script needs to run as root", Script beendet sich.
Deutlich weniger Aufwand. ;)
 
würds nicht auch gehen, bei User ID > 0
einfach das script nochmal ausführen mit su
 
Dann haste das Teil aber quasi in zwei Instanzen laufen... Erstens nicht grad sauber und zweitens unnötig kompliziert (was passiert, wenn die root-Instanz beendet ist)
 
Ich würds ja auch nicht so machen.

(naja dann beendet sich das script :) )
 
Ich würde entweder sudo oder einfach das Skript als root ausführen. Z.B. kannst du ja mit <Strg>+<Alt>+<F2> wechseln und dich dort als root anmelden und ausführen.
 
Danke für die Antworten :D aber es gibt leider noch einen Haken an sudo:

Zum Beispiel, ich mache das hier:

dcent@linux:~> sudo netdate

dann passiert das:

root's password:
sudo: netdate: command not found

Was kann man da machen??
 
schon mal man sudo gemacht? Soviel ich weiß musst du es erst in eine Datei schreiben.
 
Hallo

mit sudoers setzt du (zumindest bei Suse) die Rechte,
wer was mit sudo ausführen darf.
man sudoers

Gruß Lumpi
 

Ähnliche Themen

Autostart von X mit google-chrome durch systemd

Shellskript - Fehler in Cron

Windows clients können nicht mehr auf lange laufendes System zugreifen

Mein erstes größeres Skript.

Anmeldeschirm laesst kein login mehr zu

Zurück
Oben