ubuntuusers.de

Passworteingabe per skript?

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

Noahpapa

Avatar von Noahpapa

Anmeldungsdatum:
2. März 2007

Beiträge: 160

Ich will in einem skript den benutzer wechseln.
Ist es möglich das passwort für den benutzer in das skript einzubauen, damit keine passwort abfrage kommt?

Das Passwort kann in klarschrift im skript auftauchen da das skript nur der Arbeitserleichterung dient.

stylesuxx

Avatar von stylesuxx

Anmeldungsdatum:
29. November 2005

Beiträge: 2997

Wohnort: /home/stylesuxx

Verwende doch

sudo -u username


Und richte sudo richtig ein ⇒ sudo/Konfiguration
Dann brauchst du gar kein Passwort in Klartext herumliegen lassen, was ja _immer_ ein Sicherheitrisiko ist 😉

Noahpapa

(Themenstarter)
Avatar von Noahpapa

Anmeldungsdatum:
2. März 2007

Beiträge: 160

stylesuxx hat geschrieben:

Dann brauchst du gar kein Passwort in Klartext herumliegen lassen, was ja _immer_ ein Sicherheitrisiko ist 😉

Geht es mit su nicht ich hab ja gesagt es ist völlig egal wenn das passwort lesbar ist. Ich such nach einer einfachen schnellen Lösung.

Das skript soll einfach den Benutzer wechseln und dann einen Befehl ausführen.

#!/bin/sh

su user

Befehl

Fehlt nur noch die automatische Passwort eingabe.

stylesuxx

Avatar von stylesuxx

Anmeldungsdatum:
29. November 2005

Beiträge: 2997

Wohnort: /home/stylesuxx

Dann schau dir mal http://packages.ubuntu.com/hardy/expect an.
Beispiele ⇒ http://floppsie.comp.glam.ac.uk/Glamorgan/gaius/scripting/5.html

Aber wie gesagt

sudo -u Username Befehl


wäre sicher einfacher, da musst du dann nur dein /etc/sudoers so anpassen das bei dem Befehl kein Passwort abgefragt wird, und gut is.

Noahpapa

(Themenstarter)
Avatar von Noahpapa

Anmeldungsdatum:
2. März 2007

Beiträge: 160

stylesuxx hat geschrieben:

Aber wie gesagt

sudo -u Username Befehl


wäre sicher einfacher, da musst du dann nur dein /etc/sudoers so anpassen das bei dem Befehl kein Passwort abgefragt wird, und gut is.

Wie muss ich denn die /etc/sudoers genau anpassen

%users     ALL = NOPASSWD: ????????

ich will das 4 benutzer den befehl

vncserver:port

per skript ausführen ohne Passwort abfrage also:

#!/bin/sh 
sudo -u user1 vncserver:port
exit
sudo -u user2 vncserver:port
exit
usw.

stylesuxx

Avatar von stylesuxx

Anmeldungsdatum:
29. November 2005

Beiträge: 2997

Wohnort: /home/stylesuxx

Zuerst setzt du nen Alias für die Benutzer die du haben möchtest (Bitte _nur_ mittels visudo die /etc/sudoers bearbeiten), und dann erlaubst du ihnen einen Befehl ohne passwort auszuführen:

User_Alias     ERLAUBT = user1, user2, user3

ERLAUBT    ALL = NOPASSWD: /Pfad/zum/Programm

Noahpapa

(Themenstarter)
Avatar von Noahpapa

Anmeldungsdatum:
2. März 2007

Beiträge: 160

Kannst du mir mit vi helfen hab noch nie damit gearbeitet.

Wie kann ich das von die oben genannte einfügen oder besser gesagt reinschreiben. 🙄 🙄

Das hab ich jetzt hinbekommen

Lutki

Avatar von Lutki

Anmeldungsdatum:
17. Juni 2006

Beiträge: 372

Noahpapa hat geschrieben:

per skript ausführen ohne Passwort abfrage also:

#!/bin/sh 
sudo -u user1 vncserver:port
exit
sudo -u user2 vncserver:port
exit
usw.

Wenn das Skript von root oder vom System z.B. beim Booten ausgeführt wird, kannst du einfacher schreiben:

#!/bin/sh 
su user1 -c "vncserver:port"
su user2 -c "vncserver:port"
su user3 -c "vncserver:port"
su user4 -c "vncserver:port"

Ich bin mir aber nicht ganz sicher, ob du das so willst, weil mich deine exit's
jetzt etwas verwirren (obwohl die dazwischen nicht wirklich Sinn machen).
Das ganze funktioniert, weil der Superuser bei su kein Passwort eingeben muss.

MFG

stylesuxx

Avatar von stylesuxx

Anmeldungsdatum:
29. November 2005

Beiträge: 2997

Wohnort: /home/stylesuxx

Noahpapa hat geschrieben:

Kannst du mir mit vi helfen hab noch nie damit gearbeitet.

Wie kann ich das von die oben genannte einfügen oder besser gesagt reinschreiben. 🙄 🙄

Das hab ich jetzt hinbekommen

Da musst du dich schon selbst schlau machen, aber kurz:
Wenn du "i" drückst kannst du schreiben
Mit [ESC] kommst du in den Befehlsmodus und kannst dann mittels ":w" speichern, oder speichern und aussteigen ":wq"
Vim

comm_a_nder

Avatar von comm_a_nder

Anmeldungsdatum:
5. Februar 2006

Beiträge: 2533

Wohnort: Dresden

visudo heisst nicht automatisch, dass auch der vim genutzt werden muß. Durch ein

sudo update-alternatives --config editor


läßt sich zum Bleistift auch nano nutzen. Die Funktionalität, die visudo bietet, nämlich Locking und Syntaxprüfung bleibt davon unbeinflußt.

Noahpapa

(Themenstarter)
Avatar von Noahpapa

Anmeldungsdatum:
2. März 2007

Beiträge: 160

Mit foldendem Skript

#!/bin/sh
su user1 -c "vncserver:port"
su user2 -c "vncserver:port"
su user3 -c "vncserver:port"
su user4 -c "vncserver:port" 

Funktioniert es wunderbar hab es nach /etc/init.d/ kopiert und den runlevels zugeführt nun funktioniert es wunderbar.

wo muss ich diese skript

#!/bin/sh
su user1 -c "vncserver -kill :port"
su user2 -c "vncserver -kill :port"
su user3 -c "vncserver -kill :port"
su user4 -c "vncserver -kill :port" 

kopieren damit es beim herunterfahren des rechners als root ausgeführt wird?

stylesuxx

Avatar von stylesuxx

Anmeldungsdatum:
29. November 2005

Beiträge: 2997

Wohnort: /home/stylesuxx

Schau mal hier ⇒ http://forum.ubuntuusers.de/topic/82238 da werden einige Ansätze besprochen wie das zu lösen wäre 😉

Noahpapa

(Themenstarter)
Avatar von Noahpapa

Anmeldungsdatum:
2. März 2007

Beiträge: 160

Hab jetzt das Skript zum Starten mit runlevel S und 6 verknünpft
und das zum Stoppen mit runlevel 0 verknüpft.

Das funktioniert zumindest aber so wie ich das gelesen habe könnte ich aus beiden skripten ein start/stop skript erstellen.
Und dieses start/stop skript könnte man dann mit

sudo update-rc.d skript defaults

den runlevels zuweisen. Dann würde es beim starten egal mit welchem runlevel starten und beim herunterfahren wieder stoppen.
wenn das richtig ist was ich hier sage würde mich über hilfe zum erstellen eines solchen skriptes freuen. Wenn das falsch verstanden habe ist es auch egal.

Ich bedanke mich aber jetzt schon mal für eure super Hilfe.

Lutki

Avatar von Lutki

Anmeldungsdatum:
17. Juni 2006

Beiträge: 372

#!/bin/sh

case "$1" in
  start)
    su user1 -c "vncserver:port"
    su user2 -c "vncserver:port"
    su user3 -c "vncserver:port"
    su user4 -c "vncserver:port"
  ;;
  stop)
    su user1 -c "vncserver -kill :port"
    su user2 -c "vncserver -kill :port"
    su user3 -c "vncserver -kill :port"
    su user4 -c "vncserver -kill :port"
  ;;
  *)
    echo "Usage: $0 {start|stop}"
    exit 1
esac

exit 0

Eine ganz einfache Variante ...

Noahpapa

(Themenstarter)
Avatar von Noahpapa

Anmeldungsdatum:
2. März 2007

Beiträge: 160

Super Danke 😀 😀 😀 😀

Antworten |