# Rechte "speichern"

## LL0rd

Hallo,

in einem Verzeichnis arbeiten mehrere Personen gleichzeitig an unterschiedlichen Dateien und Unterverzeichnissen. Die Rechte und Besitzer sind kreuz und quer verteilt. Auf dem System muss ich jetzt eine proprietäre Software installieren, die etwas in einige Dateien reinschreibt und auch selbst neue Dateien erstellt. Hierfür muss ich dem Benutzer(namen) der Software die Rechte auf alle Dateien geben. Vorübergehend ist es auch kein Problem, nur würde ich gerne die Rechte nach der Installation wieder den jeweiligen Usern zurückgeben. Geht das irgendwie?

----------

## Falmer

Hi LL0rd,

kopiere die Verzeichnisse mit cp -p /bla/* /blub/* oder gleich über cp -a.

Geht natürlich auch mit tar -p und den entsprechenden Komprimierungen.

Nach der Installation der Software kannst Du es dann wieder zurückspielen.

Musst nur noch eine Überprüfung auf Veränderungen der Dateien einbauen.

Grüße

Falmer

----------

## LL0rd

Ja, das Problem ist wie gesagt, dass sich einige Dateien geändert haben könnten. Und da kann ich die leider nicht einfach mal eben so drüberbügeln. Und die Rechte bei den geänderten Dateien manuell zu setzen, ist auch ganz schön aufwändig.

----------

## Finswimmer

Kannst du nicht die eigentlichen Benutzer vorübergehend mit dem Benuzter der Software in eine Gruppe packen und auf alle Dateien chmod g+rwx machen?

Anschließend löscht du die Gruppe wieder?

Tobi

----------

## LL0rd

 *Finswimmer wrote:*   

> Kannst du nicht die eigentlichen Benutzer vorübergehend mit dem Benuzter der Software in eine Gruppe packen und auf alle Dateien chmod g+rwx machen?
> 
> Anschließend löscht du die Gruppe wieder?
> 
> 

 

Hallo Tobi,

müsste ich nicht dafür die Besitzer-Gruppe der Dateien ändern? Oder habe ich da gerade einen Denkfehler?

----------

## Finswimmer

 *LL0rd wrote:*   

>  *Finswimmer wrote:*   Kannst du nicht die eigentlichen Benutzer vorübergehend mit dem Benuzter der Software in eine Gruppe packen und auf alle Dateien chmod g+rwx machen?
> 
> Anschließend löscht du die Gruppe wieder?
> 
>  
> ...

 

Richtig. Man kann nur eine Gruppe haben, denke ich.

Spricht da was dagegen?

Ich weiß nicht, wie bei dir die Rechte verteilt sind.

----------

## LL0rd

 *Finswimmer wrote:*   

> 
> 
> Spricht da was dagegen?
> 
> Ich weiß nicht, wie bei dir die Rechte verteilt sind.

 

Das Problem ist, dass ich diese Frage selbst auch nicht mehr beantworten kann. Ich habe das System vor rund 4 Jahren eingerichtet und bin auch nicht der einzige Betreuer. So auf den ersten Blick gibt es auch Gruppenrechte, aber nur wenige. Könnte man zumindest per Hand wieder setzen.

Leider habe ich mich bisher um die ACL herumgedrückt, aber damit sollte man auch mehreren Usern Rechte einer Datei zuordnen können. Leider fehlt derzeit das Modul im Kernel und ich würde nur sehr ungerne an einem Produktivsystem herumexperementieren. 

Eine andere Möglichkeit wäre, dem User der Software temporär die User-ID 0 zu verpassen. Damit hätte der User root-Rechte. Ich vertraue dem Softwarehersteller zwar, aber ich weiß nicht, ob ich es tatsächlich machen sollte.

----------

## Finswimmer

 *LL0rd wrote:*   

> Eine andere Möglichkeit wäre, dem User der Software temporär die User-ID 0 zu verpassen. Damit hätte der User root-Rechte. Ich vertraue dem Softwarehersteller zwar, aber ich weiß nicht, ob ich es tatsächlich machen sollte.

 

Würde ich nicht machen!

Schau doch, ob du es über die Gruppen-Rechte lösen kannst.

Das scheint die schnellste Lösung zu sein.

----------

## Necoro

Hab hier mal schnell ein Skript zusammengeschrieben: http://dpaste.com/225048/

Das speichert die Rechte für einen Verzeichnisbaum ab -- und kann sie danach wieder setzen (momentan setzt es nur uid und gid, aber das kann man noch ausweiten, wenn gewünscht).

Die Rechte von /some/dir in /root/rechte speichern:

```
./chown.py save /some/dir /root/rechte
```

Die Rechte, welche in /root/rechte gesetzt sind, wiederherstellen:

```
./chown.py load /root/rechte
```

Das ist nur ein schneller Hack -- sollte funktionieren solange keine symlinks zum einsatz kommen  :Smile: 

----------

## zworK

Habe kürzlich vor einem ähnlichen Problem gestanden und 2 kleine Bash-Skripte geschrieben.

Das Eine sichert Benutzer, Gruppe und Rechte für Dateien und Verzeichnisse in einer CSV-Datei mittels find. 

Das Zweite geht die Datei durch, zerlegt die CSV-Datei und stellt Benutzer, Gruppe und Rechte wieder her.

Hier der Code, vielleicht kann ja jemand was damit anfangen.

Rechte sichern:

```
#!/bin/bash

SOURCE="/home/"

PERMS="$SOURCE/permissions.txt"

find $SOURCE -fprintf $PERMS "%U;%G;%#m;%P\n"
```

Rechte wiederherstellen:

```
#!/bin/bash

TARGET="/home/"

PERMS="$TARGET/permissions.txt"

IFS=$'\n'

for FILE in `cat $PERMS`;do

    #split

    IFS=";"; declare -a ARRAY=($FILE)

    FUID=${ARRAY[0]}

    FGID=${ARRAY[1]}

    FPERMS=${ARRAY[2]}

    FNAME=${ARRAY[3]}

    

    TARGETFILE="${TARGET}${FNAME}"

    

    [ -z $FNAME ] && FNAME="."

    [ ! -e $TARGETFILE ] && continue

    [ $FNAME == "$(basename $PERMS)" ] && continue

    chmod $FPERMS "$TARGETFILE"

    chown $FUID:$FGID "$TARGETFILE"

done
```

----------

