Categories: Linux

Linux – Benutzerrechte von Ordner zu Ordner transferieren

Es kann vorkommen dass man einen PC neu aufsetzt und anschließend ein Backup der Konfigurationsdateien einspielen möchte.

Dabei kann es zu dem Prolbem kommen dass am alten System die UID’s der Benutzer andere Nummern hatten als am neuen System.

In meinem Beispiel wollte ich das /etc Verzeichnis von einem Backup auf einem frisch installierten Server einspielen, aber z.B. /etc/bind hatte auf dem alten System eine andere UID.

Fertiges Tool ist mir keines bekannt gewesen und bei rsync kann man zwar genau wie bei cp die Berechtigungen mit übernehmen, allerdings habe ich keinen Schalter gefunden der lediglich die Berechtigungen übernimmt.

Also musste die Bash wieder mal herhalten 🙂

Das copy_permission.sh Script sieht wie folgt aus:

#!/bin/bash

if [ ! „$1“ ]; then
 echo „Bitte Original-Verzeichnis angeben“
 exit
else
 if [ ! -d „$1“ ]; then
  echo „Original-Verzeichnis existiert nicht!“
  exit
 fi
 DIRVON=$1
fi

if [ ! „$2“ ]; then
 echo „Bitte Ziel-Verzeichnis angeben“
 exit
else
 if [ ! -d „$2“ ]; then
  echo „Ziel-Verzeichnis existiert nicht!“
  exit
 fi
 DIRNACH=$2
fi

cd $DIRVON

for F in $(find . -print); do

 OCT=$(stat „$F“|sed  -n -e 4p|cut -f2 -d“ „|cut -b 2-5)
 BENUTZER=$(stat „$F“|sed  -n -e 4p|cut -b40-47|sed -e „s/ //g“)
 GRUPPE=$(stat „$F“|sed  -n -e 4p|cut -b64-71|sed -e „s/ //g“)

 chmod $OCT „$DIRNACH/$F“
 chown $BENUTZER:$GRUPPE „$DIRNACH/$F“

done

Ein einfacher Aufruf von „copy_permission.sh /etc /tmp/etc“ übernimmt alle Benutzer und Berechtigungen aus dem /etc Verzeichnis und überträgt sie nach /tmp/etc.

Das Ding ist sicher nicht perfekt, für mich hat’s aber funktioniert – quick and dirty also 🙂

Manfred

Recent Posts

Postsible: Warum ich meinen eigenen Mail-Server gebaut habe

Ein Mail-Server-Setup das nicht nervt — weil alle anderen Lösungen nervig waren "Wie schwer kann…

3 Wochen ago

M$ & Office 365 haben mir gerade wieder Lebenszeit gekostet – Error 0-2048 (0)

<Sarkasmus>Die besten Softwareentwickler arbeiten bei Microsoft!</Sarkasmus> Als Endanwender würde ich mir Fehlermeldungen erwarten die aussagekräftig…

4 Wochen ago

ESET ohne Web Access Protection Modul installieren

Auf einem Linux Server braucht man eventuell das WAP Modul von ESET nicht, der Weg…

5 Monaten ago

Veeam Agent for Linux ignoriert .vdi Files

Auf einem Linux System mit installiertem Veeam Agent wird auf File-Level Basis eine Sicherung des…

1 Jahr ago

Fujitsu RX300 S7 – RAID 5 mit amCLI reparieren

Ich habe schon länger nicht mehr hier im Blog geschrieben, was nicht daran liegt dass…

1 Jahr ago

VM – ZFS Partition online vergrößern

Man macht es nicht jeden Tag, darum schadet es nicht sich's kurz zu notieren... Hier…

3 Jahren ago