Discussion:
Befehle mit rootrechten ausfuehren in sh-script?
(zu alt für eine Antwort)
Dominik Pusch
2005-01-20 21:31:40 UTC
Permalink
Hallo,
ich brauche ein sh-script, um voruebergehend eine verschluesselte
Partition zu mounten. Dazu habe ich folgendes geschrieben:


#! /bin/sh
echo Bitte Root-Passwort eingeben:
su <--
losetup /dev/loop0 /home/niki/docs/.sicher.bin
echo Bitte Sicherheitspasswort eingeben:
cryptsetup create sicher /dev/loop0
mount /dev/mapper/sicher /home/niki/docs/sicher
echo
echo Zum deaktivieren Enter druecken
read eingabe
printf "echo deaktivere Einbindung..."
umount /dev/mapper/sicher
cryptsetup remove sicher
losetup -d /dev/loop0
echo done.


Problem ist, dass er mir nach dem su und der eingabe des Passwortes
eine neue Shell startet und erst nach dem ausloggen aus dieser shell
als den urspruenglichen User die weiteren befehle ausfuehrt (was
natuerlich nicht funktioniert).
womit kann man den user waehrend der Ausfuehrung eines scriptes
aendern? Ist das ueberhaupt moeglich?
Muss ich mehrere scripte dazu schreiben? :(


zweitens: Gibt es ein befehl um eine Pause zu machen und beim druck
einer beliebigen Taste fortzufahren? Das "read eingabe" war auch nur
eine Verzweifelungsloesung von mir :(

TIA,
Dominik
DEac-
2005-01-20 22:52:55 UTC
Permalink
Post by Dominik Pusch
Hallo,
ich brauche ein sh-script, um voruebergehend eine verschluesselte
#! /bin/sh
su <--
losetup /dev/loop0 /home/niki/docs/.sicher.bin
cryptsetup create sicher /dev/loop0
mount /dev/mapper/sicher /home/niki/docs/sicher
echo
echo Zum deaktivieren Enter druecken
read eingabe
printf "echo deaktivere Einbindung..."
umount /dev/mapper/sicher
cryptsetup remove sicher
losetup -d /dev/loop0
echo done.
Problem ist, dass er mir nach dem su und der eingabe des Passwortes
eine neue Shell startet und erst nach dem ausloggen aus dieser shell
als den urspruenglichen User die weiteren befehle ausfuehrt (was
natuerlich nicht funktioniert).
womit kann man den user waehrend der Ausfuehrung eines scriptes
aendern? Ist das ueberhaupt moeglich?
Muss ich mehrere scripte dazu schreiben? :(
entweder du uebergibst su dein script, welches du dann ausfuehren willst als su,
oder einfacher waere es, wenn du ueberhaupt alles als su ausfruehrst. du kannst
mit sudo uebrigens bestimmte sachen als root aufrufen, du musst nur vorher
definieren, was alles moeglich ist mit sudo und wer es darf.

an sich ist dein script eher ungebraeuchlich. man nimmt normalerweisse mount und
umount dafuer. ist einfacher und ein script waere ueberfluessig. natuerlich ist
das mit losetup und cryptosetup so eine sache dann. da koenntest du dann
vielleicht ein script fuer schreiben, welches als root ausfuehrbar ist. und
dieses per sudo ausfuehren. waehre meine empfehlung
Post by Dominik Pusch
zweitens: Gibt es ein befehl um eine Pause zu machen und beim druck
einer beliebigen Taste fortzufahren? Das "read eingabe" war auch nur
eine Verzweifelungsloesung von mir :(
legitim, lass es dabei ruhig. man sollte es aber so schrieben, dass sowas erst
garnicht noetig ist.


---
etwas ganz anderes, nicht zu deinem script, sondern eher eine kleine info am
rande:
es gibt encfs und cryptfs. ersteres verwendet fuse, zweiteres benoetig lufs.
beide sind als user grundsaetzlich ausfuehrbar und relativ sicher, nicht nur
bezueglich der verschluesselung, sondern auch bezueglich des systems (s-bit
nicht moeglich).
unterschiede zu cryptoloop/devicemapper ist, dass kein device exisieren muss,
sondern die dateien im dateisystem einfach verschluesselt abgelegt wird.
dateinamen sind dann auch verschluesselt. zweiter unterschied ist, dass lufs
und fuse im userspace laufen und nur ein kleines modul zur komunikation noetig
sind.
su und sudo ist ueberhaupt nicht mehr noetig.

cu
deac
Juergen P. Meier
2005-01-21 05:42:21 UTC
Permalink
Post by Dominik Pusch
Problem ist, dass er mir nach dem su und der eingabe des Passwortes
eine neue Shell startet und erst nach dem ausloggen aus dieser shell
als den urspruenglichen User die weiteren befehle ausfuehrt (was
natuerlich nicht funktioniert).
womit kann man den user waehrend der Ausfuehrung eines scriptes
aendern? Ist das ueberhaupt moeglich?
Muss ich mehrere scripte dazu schreiben? :(
man su

Genauer: su Option -c (execute Command) und wenn du bash als shell
verwendest die Option --rcfile.

Du schreibst also alles nach dem su in obigem in eine seperate
Datei und su sieht dann so aus:

su -s /bin/bash -c --rcfile=cryptmount.rc -

(-s /bin/bash kannst du weglassen, wenn root als login-shell die bash hat)

Oder du legst einen eigenen root-account an (anderer name, gleiche
UID) und gibst ihm als login-shell genau dieses Script (ohne su).
In deinem eigentlichen Script machst du dann nur noch (z.B.):

su - croot

/etc/passwd enthaelt dann z.B.:
croot:x:0:0:root:/root:/usr/local/sbin/cryptomount
/etc/shadow ein duplikat des richtigen root-eintrages (gleiches
Password, du kannst aber auch ein andere setzen).

Unix Userverwaltung: du kannst mehrere Namen mit gleicher UID haben.
Post by Dominik Pusch
zweitens: Gibt es ein befehl um eine Pause zu machen und beim druck
einer beliebigen Taste fortzufahren? Das "read eingabe" war auch nur
eine Verzweifelungsloesung von mir :(
Nein, read dummy ist der kanonische Weg, genau sowas zu machen.
(wobei returnkey und nicht any key ;) Praktisch jedes mir bekannte
Shellscript, das diese Funktionalitaet braucht, macht das so.

Juergen
--
Juergen P. Meier - "This World is about to be Destroyed!"
end
If you think technology can solve your problems you don't understand
technology and you don't understand your problems. (Bruce Schneier)
Marc Schoechlin
2005-01-22 13:50:32 UTC
Permalink
Hi !
Post by Dominik Pusch
Hallo,
ich brauche ein sh-script, um voruebergehend eine verschluesselte
#! /bin/sh
Konfiguriere doch für den Befehl ein SUDO (Tool mit dem man
differenziert Root-rechte auf bestimmte Aktionen vergeben kann).

Also:
-> Sudo installieren
-> visudo
<deinusername> ALL=(ALL) NOPASSWD: /pfad/zum/tollen/skript
-> Entweder das Skript so ausführen:
sudo /pfad/zum/tollen/skript

oder statt "#! /bin/sh" folgendes einfügen
"#!/usr/bin/sudo bash"

Gruß

Marc
--
I prefer non-proprietary document-exchange.
http://sector7g.wurzel6.de/pdfcreator/
Loading...