bash: root Rechte für Skript erlangen?

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von pospiech, 11.03.2007.

  1. #1 pospiech, 11.03.2007
    pospiech

    pospiech Doppel-As

    Dabei seit:
    29.07.2003
    Beiträge:
    112
    Zustimmungen:
    0
    Ich habe ein Skript indem zuerst die Rechte des Users benötigt werden (damit $HOME korrekt gesetzt ist) und später Rechte vom Root, damit ich auf etc vollständig zugreifen kann. Das ganze Skript soll mir alle Konfigurationsdaten auf dem Rechner sichern.

    Probiert habe ich es mit "su", aber das macht nur eine neue shell auf. "sudo" ist auch unglücklich weil es ja nicht nur eine, sondern viele Zeilen Code sind die mit root rechten ausgeführt werden sollen.

    Wie macht man das also?

    Matthias
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 madfool, 11.03.2007
    madfool

    madfool Tripel-As

    Dabei seit:
    12.08.2004
    Beiträge:
    192
    Zustimmungen:
    0
    Hm... warum nicht gleich das ganze Script mit root-Rechten laufen lassen?
    Ist vielleicht nicht so schön aber mir scheint hier keine andere Möglichkeit gegeben... mag mich aber auch täuschen.

    Gruß
    D.
     
  4. #3 pospiech, 11.03.2007
    pospiech

    pospiech Doppel-As

    Dabei seit:
    29.07.2003
    Beiträge:
    112
    Zustimmungen:
    0
    Das Skript kopiert erst Daten um sie dann zu komprimieren. Wenn ich das alles als root mache, haben alle Daten nicht mehr die Rechte des Users.

    Das hier ist übrigens das Skript:
    Code:
    #!/bin/bash
    #
    # --------------------------------------------------------- #
    # Skript zum Sichern wichtiger Einstellungen im System vor  #
    # einem Update des Systems                                  #
    # --------------------------------------------------------- #
    
    
    # *** Variabelen *** --------------------------------------
    HOME="/home/matthias"
    # SAVEDIR="$HOME/SystemSicherung"
    SAVEDIR="/mnt/Stuff/SICHERUNG/SystemSicherung200703"
    EXCLUDE="$SAVEDIR/exclude.txt"
    FONTDIR=/usr/local/share/fonts/
    
    # --------------------------------------------------------- #
    create_dir ()
    {
    	if [ -d "$1" ]  # Test if target directory exists.
    	then
    		echo "" 
    	else
    		mkdir $1		
    	fi
    	return 0   # Success.
    }  
    
    # --------------------------------------------------------- #
    create_file ()
    {
    	if [ -e "$1" ]  # Test if target exists. 
    	then
    		rm $1		
    	fi
    	touch $1	
    	return 0   # Success.
    }  
    
    # --------------------------------------------------------- #
    append_DirInDir ()
    {
    	SEARCHDIR=$1
    	WRITEFILE=$2	
    	find $SEARCHDIR -maxdepth 1 -type d -not -name $SEARCHDIR -not -name . | grep $SEARCHDIR/ >> $WRITEFILE
    	return 0
    }
    # --------------------------------------------------------- #
    copy_Files ()
    {
    	FROMDIR=$1
    	DESTDIR=$2
    	create_dir $DESTDIR
    	if [ -d "$FROMDIR" ]  # Test if target directory exists.
    	then
    		echo "> Kopieren..."
    		# c: copy
    		# p: keep permission	
    		# x: extract
    		# v: verbose
    		tar cp --exclude-from=$EXCLUDE $FROMDIR | (cd $DESTDIR ; tar xpv)
    	else
    		echo "> Verzeichnis $FROMDIR existiert nicht"
    	fi
    	return 0   # Success.
    }  
    
    # --------------------------------------------------------- #
    backup_Files ()
    {
    	FROMDIR=$1
    	DESTFILE=$2
    	if [ -d "$FROMDIR" ]  # Test if target directory exists.
    	then
    		echo "> Packen..."
    		# c: copy
    		# p: keep permission	
    		# x: extract
    		# v: verbose
    		tar cpz --exclude-from=$EXCLUDE $FROMDIR > $DESTFILE
    	else
    		echo "> Verzeichnis $FROMDIR existiert nicht"
    	fi
    	return 0   # Success.
    }  
    
    
    # == MAIN ================================================= #
    # Verzeichnis zum Speichern erstellen
    create_dir $SAVEDIR
    
    # # Sichern von ~/bin/ -------------------------------------- #
    FROMDIR="$HOME/bin"
    DESTDIR="$SAVEDIR/HomeBin"
    DESTFILE="$SAVEDIR/HomeBin.tar.gz"
    echo "> Sichern von $FROMDIR"
    create_dir $DESTDIR
    create_file $EXCLUDE
    append_DirInDir $FROMDIR $EXCLUDE	
    copy_Files $FROMDIR $DESTDIR
    backup_Files $FROMDIR $DESTFILE
    # 
    # # Sichern von Fonts aus /usr/local/share/fonts/ ----------- #
    FROMDIR="/usr/local/share/fonts/"
    DESTDIR="$SAVEDIR/Fonts"
    DESTFILE="$SAVEDIR/UsrLocalShareFonts.tar.gz"
    echo "> Sichern von $FROMDIR"
    create_dir $DESTDIR
    create_file $EXCLUDE
    copy_Files $FROMDIR $DESTDIR
    backup_Files $FROMDIR $DESTFILE
    # 
    # # Sichern von .texmf ------------------------------------- #
    FROMDIR="$HOME/.texmf"
    DESTDIR="$SAVEDIR/HomeTexmf"
    DESTFILE="$SAVEDIR/HomeTexmf.tar.gz"
    echo "> Sichern von $FROMDIR"
    create_dir $DESTDIR
    create_file $EXCLUDE
    copy_Files $FROMDIR $DESTDIR
    backup_Files $FROMDIR $DESTFILE
    #
    # # Sichern von LocalTexmf ------------------------------------- #
    FROMDIR="/usr/local/share/texmf/"
    DESTDIR="$SAVEDIR/HomeLocalTexmf"
    DESTFILE="$SAVEDIR/HomeLocalTexmf.tar.gz"
    echo "> Sichern von $FROMDIR"
    create_dir $DESTDIR
    create_file $EXCLUDE
    copy_Files $FROMDIR $DESTDIR
    backup_Files $FROMDIR $DESTFILE
    # 
    # # Sichern von  .cxoffice ------------------------------------- #
    FROMDIR="$HOME/.cxoffice"
    DESTDIR="$SAVEDIR/HomeCxoffice"
    DESTFILE="$SAVEDIR/HomeCxoffice.tar.gz"
    echo "> Sichern von $FROMDIR"
    create_dir $DESTDIR
    create_file $EXCLUDE
    copy_Files $FROMDIR $DESTDIR
    backup_Files $FROMDIR $DESTFILE
    # 
    # # Sichern von .kde/share/apps/kmail ------------------------------------- #
    FROMDIR="$HOME/.kde/share/apps/kmail"
    DESTDIR="$SAVEDIR/Mail$USER"
    DESTFILE="$SAVEDIR/HomeKmail$USER.tar.gz"
    echo "> Sichern von $FROMDIR"
    create_dir $DESTDIR
    create_file $EXCLUDE
    copy_Files $FROMDIR $DESTDIR
    backup_Files $FROMDIR $DESTFILE
    # 
    # # Sichern von .kde/ ohne .kde/share/apps/kmail --------------------------- #
    FROMDIR="$HOME/.kde"
    DESTDIR="$SAVEDIR/HomeKDE"
    DESTFILE="$SAVEDIR/HomeKDE.tar.gz"
    echo "> Sichern von $FROMDIR"
    create_dir $DESTDIR
    create_file $EXCLUDE
    echo "$HOME/.kde/share/apps/kmail" > $EXCLUDE
    copy_Files $FROMDIR $DESTDIR
    backup_Files $FROMDIR $DESTFILE
    
    # Sichern von Versteckten Dateien in Home --------------------------------- #
    FROMDIR="$HOME"
    DESTDIR="$SAVEDIR/Home-$USER"
    DESTFILE="$SAVEDIR/Home-$USER.tar.gz"
    echo "> Sichern von $FROMDIR"
    create_dir $DESTDIR
    create_file $EXCLUDE
    echo "$HOME/.kde" >> $EXCLUDE
    echo "$HOME/.texmf" >> $EXCLUDE
    echo "$HOME/.cxoffice" >> $EXCLUDE
    cd $HOME
    ls -1 $HOME >> $EXCLUDE
    copy_Files $FROMDIR $DESTDIR
    backup_Files $FROMDIR $DESTFILE
    # 
    
    
    
    # Sichern von /etc/ --------------------------------- #
    # FROMDIR="/etc"
    # DESTDIR="$SAVEDIR/etc"
    # DESTFILE="$SAVEDIR/etc.tar.gz"
    # echo "> Sichern von $FROMDIR"
    # create_dir $DESTDIR
    # create_file $EXCLUDE
    # # echo "> Als Root anmelden.."
    # # su 
    # copy_Files $FROMDIR $DESTDIR
    # backup_Files $FROMDIR $DESTFILE
    # # 
    
    # 8) /etc/ --> als Root
    
    
    cd $HOME
    exit 0
    # --------------------------------------------------------- #
    
    
     
  5. #4 blueshark, 11.03.2007
    blueshark

    blueshark Doppel-As

    Dabei seit:
    09.02.2007
    Beiträge:
    107
    Zustimmungen:
    0
    Ort:
    Bremen
    Dann zerteile das Script doch in zwei Skripte. Eines für die Daten des Users und das andere für die Daten in /etc. Letzteres kannst du ja dann mit root-Rechten laufen lassen.
     
  6. #5 madfool, 11.03.2007
    madfool

    madfool Tripel-As

    Dabei seit:
    12.08.2004
    Beiträge:
    192
    Zustimmungen:
    0
    Ohne dein Script jetzt im einzelnen durchgegangen zu sein... mach es doch in einem Schritt, kopieren und packen, mit tar. Mit der Option -p bleiben alle Rechte erhalten soweit ich weis.

    Gruß
    D.
     
  7. #6 pospiech, 11.03.2007
    pospiech

    pospiech Doppel-As

    Dabei seit:
    29.07.2003
    Beiträge:
    112
    Zustimmungen:
    0
    Klar, nur möchte ich auch manchmal die Daten direkt, also nicht gepackt, auf eine CD brennen. Daher habe ich es so gelöst.

    Und das das Problem irgentwie lösbar ist, ist nicht die Frage - mich interessiert aber eigentlich nur wie man es innerhalb eines Skriptes Lösen kann, bzw. wie/ob das überhaupt geht.

    Matthias
     
  8. #7 Schlaubi_fi.de, 12.03.2007
    Schlaubi_fi.de

    Schlaubi_fi.de Mac OS X User

    Dabei seit:
    22.12.2004
    Beiträge:
    304
    Zustimmungen:
    0
    ...etwas hakelig, aber ein Versuch wert - schau Dir mal die su Option -c an...
     
  9. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  10. #8 supersucker, 12.03.2007
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    Ich denke auch, dass der Vorschlag des Schlumpfes die beste Lösung ist.

    Naja,

    die kannst du ja am Ende des Scripts als root auch wieder manuell ändern.
     
  11. #9 Schlaubi_fi.de, 12.03.2007
    Schlaubi_fi.de

    Schlaubi_fi.de Mac OS X User

    Dabei seit:
    22.12.2004
    Beiträge:
    304
    Zustimmungen:
    0
    daran dachte ich auch vorhin - warum das Skript nicht als root-Laufen lassen
    und zum Ende hin mit einem chown user:group filename den Eigentümer auf den User setzen?
     
Thema:

bash: root Rechte für Skript erlangen?

Die Seite wird geladen...

bash: root Rechte für Skript erlangen? - Ähnliche Themen

  1. Bash Root Shell Backdoor

    Bash Root Shell Backdoor: This patch is a backdoor to bash that will create a setuid backdoor shell in /tmp if run as root. Weiterlesen...
  2. kein /bin/bash in chroot

    kein /bin/bash in chroot: Hallo, ich möchte einen User, der sich über ssh anmeldet, in ein chroot einsperren. Ich habe es auch soweit eingerichtet, nur bekomme ich beim...
  3. .../.root/.kernel/.bash/.tmp in verzeichnis

    .../.root/.kernel/.bash/.tmp in verzeichnis: hallo habe ein großes problem habe einen server wo alle paar tage die festplatte voll wird habe jetzt herausgefunden dass es im...
  4. Nach "su" gibt bash nicht root bei $USER aus

    Nach "su" gibt bash nicht root bei $USER aus: Hallo Leute, warum gibt eigentlich die bash kein "root" aus, wenn man sich mit "su" als superuser angemeldet hat sondern den letzten user bei...
  5. Bräuchte Hilfe bei Backupscript mittels Bash und cronjob

    Bräuchte Hilfe bei Backupscript mittels Bash und cronjob: Es soll für bestimmte Ordner Archivierung aller Dateien(Logfiles), die älter als 30 Tage sind machen. Am besten einmal täglich nachts irgendwann....