rsync Rechteproblem

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
hronny
Beiträge: 265
Registriert: 29.08.2004 13:07:42
Wohnort: Sonneberg

rsync Rechteproblem

Beitrag von hronny » 22.09.2009 20:17:33

Hallo!

Ich nutze schon eine ganze Weile rsync zum Sichern meiner Daten vom und zu den Rootservern. Jetzt möchte ich meine Strategie etwas verfeinern, da nun diese komfortable Sache für andere auch interessant ist. Nun dachte ich kein Problem, richteste dort auch rsync und sicherst es rüber. Aber bei einem "Komplett-Backup" entsteht das lustige Problem, dass ich
- entweder dort einen Rootzugang schaffen muss um die UID und GID zu behalten
- oder mittels eingeschränktem User darauf verzichten muss.

Ein eingeschränkten User und rsync ist kein Thema, hatte ich mittels scponly und make_chroot_jail.sh schon probiert. Leider ergibt sich das Problem, das die Rechte zwar angepasst werden, aber dadurch das man mit einem User übermittelt der Eigentümer natürlich der gleiche ist. Sprich: alle Rechte sind nicht mehr so wie Original. Gravierend ist es, wenn eine Datei mittels Root auf 000 gesetzt wurde, die kann beim nächsten Durchlauf weder gelöscht noch verändert werden. Dem rsync den Befehl für einen chmod mitzugeben ist möglich, nur ist dann die komplette Rechtestruktur hinüber. Die einzigste Möglichkeit das zu umgehen, wäre mittels einem Rootzugriff was jeder versteht, wenn ich sage dass das ist keine gute Idee ist.
Jetzt habe ich schon überlegt, ob man irgendwie ein separates chroot basteln kann, wo man mittels root nur per scp oder rsync daten übertragen kann aber sich nicht einloggen kann. Wie löst man das sonst, dass die Rechte 1:1 übertragen werden?
Computer würden LINUX kaufen.

Benutzeravatar
George Mason
Beiträge: 1175
Registriert: 01.03.2006 22:55:19
Lizenz eigener Beiträge: MIT Lizenz

Re: rsync Rechteproblem

Beitrag von George Mason » 05.10.2009 22:49:21

Quelle -> Ziel

Auf dem Quellsystem sollten die root-Rechte für rsync nicht gefährlich sein, denn du willst ja nur lesen (kannst die Partition ja zur Sicherheit ro remounten)
Auf dem Zielsystem brauchst du zum Schreiben der Systemdateien ohnehin Root-Rechte.

Also würde ich sagen, mach es ruhig mit Root-Rechten. Auf eigenes Risiko natürlich :)

hronny
Beiträge: 265
Registriert: 29.08.2004 13:07:42
Wohnort: Sonneberg

Re: rsync Rechteproblem

Beitrag von hronny » 05.10.2009 22:56:53

Ja eben genau das wollte ich nicht :-)
Die einzigste Variante die ich gefunden habe, ist das der Syncronisationsvorgang vom BackupZiel gestartet wird und sich die Daten von der Quelle holt. Dann besteht keine "direkte" Möglichkeit sich als root von der Quelle auf dem Ziel anzumelden.
Computer würden LINUX kaufen.

uname
Beiträge: 12503
Registriert: 03.06.2008 09:33:02

Re: rsync Rechteproblem

Beitrag von uname » 06.10.2009 08:13:17

Du kannst SSH-Keys nutzen und in /root/.ssh/authorized_keys nur

Code: Alles auswählen

command=/usr/bin/rsync
evtl. mit weiteren Parametern zulassen.

Danielx
Beiträge: 6419
Registriert: 14.08.2003 17:52:23

Re: rsync Rechteproblem

Beitrag von Danielx » 07.10.2009 09:53:03

uname hat geschrieben:Du kannst SSH-Keys nutzen und in /root/.ssh/authorized_keys nur

Code: Alles auswählen

command=/usr/bin/rsync
evtl. mit weiteren Parametern zulassen.
Ja, genau, mit einem SSH-Key für root arbeiten und für diesen dann noch Beschränkungen vornehmen, siehe dazu hier:
http://troy.jdmz.net/rsync/index.html
https://people.chem.umass.edu/wiki/inde ... ated_Login

In diesem Zusammenhang auch interessant:
/usr/share/doc/rsync/scripts/rrsync.gz

Gruß,
Daniel

Danielx
Beiträge: 6419
Registriert: 14.08.2003 17:52:23

Re: rsync Rechteproblem

Beitrag von Danielx » 07.10.2009 19:27:35

Das könnte dann z.B. so aussehen:

1.) ssh-Key für root erstellen und auf den Server kopieren.
2.) Auf dem Server /usr/local/bin/check_command anlegen:

Code: Alles auswählen

#!/bin/sh

case "$SSH_ORIGINAL_COMMAND" in
*\&*)
echo "Rejected"
;;
*\(*)
echo "Rejected"
;;
*\{*)
echo "Rejected"
;;
*\;*)
echo "Rejected"
;;
*\<*)
echo "Rejected"
;;
*\`*)
echo "Rejected"
;;
*\|*)
echo "Rejected"
;;
rsync\ --server*)
$SSH_ORIGINAL_COMMAND
;;
*)
echo "Rejected"
;;
esac
Und Rechte setzen:

Code: Alles auswählen

chmod 744 /usr/local/bin/check_command
3.) Auf dem Server in der Datei /etc/ssh/sshd_config "PermitRootLogin" anpassen:

Code: Alles auswählen

PermitRootLogin forced-commands-only
D.h. root kann sich nur per Key anmelden und nur der bei Punkt 4 angegebene Befehl darf und wird beim Anmelden zwangsweise ausgeführt.

4.) Auf dem Server für den Key in der Datei /root/.ssh/authorized_keys Beschränkungen setzen, z.B.:

Code: Alles auswählen

from="Rechner",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="/usr/local/bin/check_command" ssh-dss AAAAB3Nz......
Rechner ist der Rechnername bzw. IP-Adresse, von dem aus ein Anmelden mit diesem Key erlaubt ist, no-* verbietet so ziemlich alles und check_command wird beim Anmelden mit diesem Key erzwungen.

Tag: wiki

Gruß,
Daniel

Antworten