Dienstleistungen zu m23 und OpenSource

Kurzanleitungen/Howtos

Auf dieser Seite finden Sie Kurzanleitungen/Howtos zu verschiedenen Themen.

Die folgende Anweisungen richten sich ausschließlich an fachkundige Personen.
Bei jedem Schritt kann es zum kompletten Datenverlust kommen. Alle Angaben ohne Gewähr.


Konfiguration umziehen

24.10.2018 18:47

Pinguin zieht um

Manchmal möchte man – z.B. beim Distributionswechsel – möglichst viel von der Konfiguration des alten Systems auf das neue übernehmen. Diese Kurzanleitung enthält Skripten zum exportieren der Informationen aus dem alten und import im neuen System.

1. Benutzer und Gruppen - exportUsersGroups.sh

exportUsersGroups.sh erstellt ein Skript (/tmp/restoreUsersGroups), das alle Benutzerkonten und -gruppen anlegt. Zu diesen Konten und Gruppen gehören alle, "root" und alle, die eine UID bzw. GID von 1000 und höher haben. Das generierende und generierte Skript werden jeweils als root ausgeführt:

#!/bin/bash
storeDir="/tmp"
rm $storeDir/restoreUsersGroups 2> /dev/null

# Gruppen- und Benutzerinformationen aus den Systemdateien exportieren
awk -F: '($3!=65534)' /etc/passwd > passwd.mig
awk -F: '($3!=65534)' /etc/group > group.mig
awk -F: '($3!=65534) {print $1}' /etc/passwd | tee - | egrep -f - /etc/shadow | grep '\$' > shadow.mig

# Unerwünschte Benutzer/Gruppen ausfiltern
for raus in alt wirdnichtmehr gebraucht
do
  for datei in passwd.mig group.mig shadow.mig
  do
    grep -v "$raus" $datei > "$datei.tmp"
    cat "$datei.tmp" > $datei
    rm "$datei.tmp"
  done
done

# Gruppen durchgehen
cat group.mig | while read line
do
  # Gruppenname und -nummer ermitteln
  group=$(echo $line | cut -d':' -f1)
  gid=$(echo $line | cut -d':' -f3)

  # Gruppen nicht hinzufügen, falls die GID auf keine Benutzergruppe (>= 1000) hinweist
  if [ $gid -lt 1000 ]
  then
    continue
  fi

  # Kommando zum Anlegen der Gruppe
  echo "groupadd --gid $gid $group" >> $storeDir/restoreUsersGroups
done

# Benutzer durchgehen
cat passwd.mig | while read line
do
  # Benutzername, Heimatverzeichnis, Shell, Benutzernummer, Hauptgruppennummer und verschlüsseltes Paßwort ermitteln
  user=$(echo $line | cut -d':' -f1)
  home=$(echo $line | cut -d':' -f6)
  shell=$(echo $line | cut -d':' -f7)
  uid=$(id -u $user)
  gid=$(id -g $user)
  cpass=$(grep "^$user:" shadow.mig | cut -f 2 -d ':')

  # Nur Paßwort ändern, wenn der Benutzer root ist (UID = 0)
  if [ $uid -eq 0 ]
  then
    echo "usermod -p '$cpass' root" >> $storeDir/restoreUsersGroups
    continue
  fi

  # Konto nicht hinzufügen, wenn die UID kein normaler Benutzer (>= 1000) ist
  if [ $uid -lt 1000 ]
  then
    continue
  fi

  # Kommando zum Anlegen des Benutzers
  echo "useradd -m -d '$home' -s '$shell' --uid=$uid --gid=$gid -p '$cpass' $user" >> $storeDir/restoreUsersGroups

  # Kommandos zum Aufnehmen des Benutzers in Nebengruppen
  for group in $(id -n -G $user)
  do
    echo "adduser $user $group" >> $storeDir/restoreUsersGroups
  done
done

chmod +x $storeDir/restoreUsersGroups

# Temporäre Dateien löschen
rm passwd.mig group.mig shadow.mig

Creative Commons License
Dieses Werk und dieser Inhalt sind bis auf die Bilder des m23-Partnerprogramms und fremde Logos/Inhalte unter einer Creative Commons-Lizenz lizenziert.
Die Bilder und Logos des m23-Partnerprogrammes und fremde Logos/Inhalte dürfen nicht ohne vorherige Zustimmung von goos-habermann.de bzw. den Rechteinhabern verwendet werden.
© goos-habermann.de (2005 - 2018)

Datenschutzerklärung AGB Impressum