rsnapshot und ein Rechteproblem?

C

cyRus-tC

Mitglied
[gelöst] rsnapshot und ein Rechteproblem?

Zugegebenermaßen ich bin ziemlich neu was rsnapshot angeht (rsync kam schon früher zum Einsatz), hab deswegen auch keine Ahnung wo ich noch ansetzen könnte...

Ich versuche einen Rechner (Workstation) auf einen anderen Rechner zu sichern (Backupserver). Dazu habe ich mir einen Pubkey auf dem Backupserver angelegt, auf die Worksation kopiert und damit kann ich nun als NORMALER user ohne Passwort von dem Backupserver per SSH auf die Workstation zugreifen. Das der Zugriff nicht direkt über root erfolgt ist gewollt!

Da ich möchte das die Dateirechte, Eigentümer, usw. erhalten bleiben habe ich in die /etc/sudoers folgendes eingetragen:
Code:
backup ALL=(root) NOPASSWD:/usr/bin/rsync *

Mein User über den ich mich per SSH auf der Workstation einlogge lautet backup.

Nun habe ich noch in der authorized_keys des backup Users folgendes vor den entsprechenden Key geschrieben:
Code:
from="192.168.0.26",command="rsync --server --sender -vlogDtprz --delete-excluded --numeric-ids . /" ssh-rsa AAAA....

Auf dem Backupserver soll nun das Script rsnapshot aufgerufen werden und von der Workstation folgende Ordner (und deren Inhalt) sichern:

- etc
- root
- home
- srv

Dazu habe ich das Script folgendermaßen abgeändert:
Code:
###########################
# SNAPSHOT ROOT DIRECTORY #
###########################

# All snapshots will be stored under this root directory.
#
snapshot_root   /srv/backups/

# If no_create_root is enabled, rsnapshot will not automatically create the
# snapshot_root directory. This is particularly useful if you are backing
# up to removable media, such as a FireWire or USB drive.
#
#no_create_root 1

#################################
# EXTERNAL PROGRAM DEPENDENCIES #
#################################

# LINUX USERS:   Be sure to uncomment "cmd_cp". This gives you extra features.
# EVERYONE ELSE: Leave "cmd_cp" commented out for compatibility.
#
# See the README file or the man page for more details.
#
cmd_cp          /usr/bin/cp

# uncomment this to use the rm program instead of the built-in perl routine.
#
cmd_rm          /usr/bin/rm

# rsync must be enabled for anything to work. This is the only command that
# must be enabled.
#
cmd_rsync       /usr/bin/rsync

# Uncomment this to enable remote ssh backups over rsync.
#
cmd_ssh         /usr/bin/ssh

# Comment this out to disable syslog support.
#
cmd_logger      /usr/bin/logger

# Uncomment this to specify the path to "du" for disk usage checks.
# If you have an older version of "du", you may also want to check the
# "du_args" parameter below.
#
cmd_du          /usr/bin/du

# Uncomment this to specify the path to rsnapshot-diff.
#
cmd_rsnapshot_diff      /usr/bin/rsnapshot-diff

# Specify the path to a script (and any optional arguments) to run right
# before rsnapshot syncs files
#
#cmd_preexec    /path/to/preexec/script

# Specify the path to a script (and any optional arguments) to run right
# after rsnapshot syncs files
#
#cmd_postexec   /path/to/postexec/script

#########################################
#           BACKUP INTERVALS            #
# Must be unique and in ascending order #
# i.e. hourly, daily, weekly, etc.      #
#########################################

#interval       hourly  6
interval        daily   7
interval        weekly  4
interval        monthly 6

############################################
#              GLOBAL OPTIONS              #
# All are optional, with sensible defaults #
############################################

# Verbose level, 1 through 5.
# 1     Quiet           Print fatal errors only
# 2     Default         Print errors and warnings only
# 3     Verbose         Show equivalent shell commands being executed
# 4     Extra Verbose   Show extra verbose information
# 5     Debug mode      Everything
#
verbose         2

# Same as "verbose" above, but controls the amount of data sent to the
# logfile, if one is being used. The default is 3.
#
loglevel        3

# If you enable this, data will be written to the file you specify. The
# amount of data written is controlled by the "loglevel" parameter.
#
logfile /var/log/rsnapshot

# If enabled, rsnapshot will write a lockfile to prevent two instances
# from running simultaneously (and messing up the snapshot_root).
# If you enable this, make sure the lockfile directory is not world
# writable. Otherwise anyone can prevent the program from running.
#
lockfile        /var/run/rsnapshot.pid

# Default rsync args. All rsync commands have at least these options set.
#
rsync_short_args        -auvz
rsync_long_args --rsync-path='sudo rsync' --bwlimit=1500 --delete-excluded --delete --delete-after --numeric-ids --stats

# ssh has no args passed by default, but you can specify some here.
#
#ssh_args       -p 22

# Default arguments for the "du" program (for disk space reporting).
# The GNU version of "du" is preferred. See the man page for more details.
# If your version of "du" doesn't support the -h flag, try -k flag instead.
#
#du_args        -csh

# If this is enabled, rsync won't span filesystem partitions within a
# backup point. This essentially passes the -x option to rsync.
# The default is 0 (off).
#
#one_fs         0

# The include and exclude parameters, if enabled, simply get passed directly
# to rsync. If you have multiple include/exclude patterns, put each one on a
# separate line. Please look up the --include and --exclude options in the
# rsync man page for more details on how to specify file name patterns.
#
#include        ???
#include        ???
#exclude        ???
#exclude        ???

# The include_file and exclude_file parameters, if enabled, simply get
# passed directly to rsync. Please look up the --include-from and
# --exclude-from options in the rsync man page for more details.
#
#include_file   /path/to/include/file
#exclude_file   /path/to/exclude/file

# If your version of rsync supports --link-dest, consider enable this.
# This is the best way to support special files (FIFOs, etc) cross-platform.
# The default is 0 (off).
#
#link_dest      1

# When sync_first is enabled, it changes the default behaviour of rsnapshot.
# Normally, when rsnapshot is called with its lowest interval
# (i.e.: "rsnapshot hourly"), it will sync files AND rotate the lowest
# intervals. With sync_first enabled, "rsnapshot sync" handles the file sync,
# and all interval calls simply rotate files. See the man page for more
# details. The default is 0 (off).
#
#sync_first     0

# If enabled, rsnapshot will move the oldest directory for each interval
# to [interval_name].delete, then it will remove the lockfile and delete
# that directory just before it exits. The default is 0 (off).
#
use_lazy_deletes        1

# Number of rsync re-tries. If you experience any network problems or
# network card issues that tend to cause ssh to crap-out with
# "Corrupted MAC on input" errors, for example, set this to a non-zero
# value to have the rsync operation re-tried
#
#rsync_numtries 0

###############################
### BACKUP POINTS / SCRIPTS ###
###############################

# LOCALHOST
#backup /home/          localhost/
#backup /etc/           localhost/
#backup /usr/local/     localhost/
#backup /var/log/rsnapshot              localhost/
#backup /etc/passwd     localhost/
#backup /home/foo/My Documents/         localhost/
#backup /foo/bar/       localhost/      one_fs=1, rsync_short_args=-urltvpog
#backup_script  /usr/local/bin/backup_pgsql.sh  localhost/postgres/

# EXAMPLE.COM
#backup_script  /bin/date "+ backup of example.com started at %c"       unused1
#backup root@example.com:/home/ example.com/    +rsync_long_args=--bwlimit=16,exclude=core
#backup root@example.com:/etc/  example.com/    exclude=mtab,exclude=core
#backup_script  ssh root@example.com "mysqldump -A > /var/db/dump/mysql.sql"    unused2
#backup root@example.com:/var/db/dump/  example.com/
#backup_script  /bin/date       "+ backup of example.com ended at %c"   unused9
backup  backup@192.168.0.26:/etc/ /root/ /home/ /srv/    workstation/

# CVS.SOURCEFORGE.NET
#backup_script  /usr/local/bin/backup_rsnapshot_cvsroot.sh      rsnapshot.cvs.sourceforge.net/

# RSYNC.SAMBA.ORG
#backup rsync://rsync.samba.org/rsyncftp/       rsync.samba.org/rsyncftp/

So, und wenn ich nun rsnapshot daily aufrufe sichert er mir irgendetwas zusammen aber das auch nicht vollständig. Also für gewöhnlich sichert er bzw. probiert es das komplette / Verzeichnis der Workstation zu sichern...

Hoffe Ihr könnt mir helfen es so hinzubiegen das er nur die vier gewünschten Verzeichnisse sichert und diese auch nicht zusammenwirft sondern in der Art /workstation/etc ablegt. Bin da seit fast zwei Wochen dran und raffs einfach nicht :(
 
Zuletzt bearbeitet:
In der rsnapshot man-page habe ich kein Beispiel dafuer gefunden, dass das 'backup' Schluesselwort mehr als zwei Verzeichnisse als Argument annimmt. Ausserdem verstehe ich die Bedeutung als 'backup <von> <nach>', was bei Dir nicht so aussieht. wie waere es denn mit
Code:
backup  backup@192.168.0.26:/etc/ ./
backup  backup@192.168.0.26:/root/ ./
backup  backup@192.168.0.26:/home/ ./
backup  backup@192.168.0.26:/srv/ ./
 
Ja, das sagt die man aber eine Vielzahl stellen auch die Behauptung auf das es wie bei mir funktionieren würde...

Aber egal, beides führt zum selben Ergebnis. rsnapshot kopiert nämlich nun nicht nur diese vier Verzeichnisse sondern probiert alles was in / ist zu sichern (also auch z. B. /proc /sys)...
 
Ein erhoehter Loglevel (4) und der entsprechende Auszug aus rsnapshot(.log) koennten uns weiterhelfen beim Helfen ;-)
 
Oh ähm ja... Entschuldigung :(

[22/Oct/2012:18:07:57] /usr/bin/rsnapshot daily: started
[22/Oct/2012:18:07:57] Setting locale to POSIX "C"
[22/Oct/2012:18:07:57] echo 5677 > /var/run/rsnapshot.pid
[22/Oct/2012:18:07:57] mkdir -m 0755 -p /srv/backups/daily.0/
[22/Oct/2012:18:07:57] /usr/bin/rsync -auvze --rsync-path='sudo rsync' --bwlimit=1500 --delete-excluded --delete --delete-after --numeric-ids --stats --rsh=/usr/bin/ssh backup@192.168.0.26:/etc/ /srv/backups/daily.0/workstation/
[22/Oct/2012:18:09:14] /usr/bin/rsnapshot daily: ERROR: /usr/bin/rsync returned 255 while processing backup@192.168.0.26:/etc/
[22/Oct/2012:18:09:14] /usr/bin/rsync -auvze --rsync-path='sudo rsync' --bwlimit=1500 --delete-excluded --delete --delete-after --numeric-ids --stats --rsh=/usr/bin/ssh backup@192.168.0.26:/root/ /srv/backups/daily.0/workstation/
[22/Oct/2012:18:09:18] /usr/bin/rsnapshot daily: ERROR: /usr/bin/rsync returned 255 while processing backup@192.168.0.26:/root/
[22/Oct/2012:18:09:18] touch /srv/backups/daily.0/
[22/Oct/2012:18:09:18] rm -f /var/run/rsnapshot.pid
[22/Oct/2012:18:09:18] /usr/bin/rsnapshot daily: ERROR: /usr/bin/rsnapshot daily: completed, but with some errors

Ich habe allerdings dann mit STRG+C abgebrochen als er anfing das ganze /usr zu kopieren bzw. kopieren zu wollen...
 
...
Code:
--rsync-path='sudo rsync
Ich wuerde mal sagen, hier liegt das Problem:
man rsync schrieb:
--rsync-path=PROGRAM specify the rsync to run on remote machine
Das ist ja nicht, was Du moechtest! Loesche mal den 'rsync-path' in der rsnapshot.conf. Entweder versuchst Du es mit 'cmd_rsync' oder aenderst die sudoers auf '/usr/bin/rsnapshot *' um. Das sollte min. einen Schritt weiter fuehren.
 
Ich wuerde mal sagen, hier liegt das Problem:

Das ist ja nicht, was Du moechtest! Loesche mal den 'rsync-path' in der rsnapshot.conf. Entweder versuchst Du es mit 'cmd_rsync' oder aenderst die sudoers auf '/usr/bin/rsnapshot *' um. Das sollte min. einen Schritt weiter fuehren.

Den Hintergedanken verstehe ich jetzt nicht (die Fehlermeldungen und der Status bleiben auch nach den Änderungen gleich). Ich möchte doch das rsync auf der Workstation mit root-Rechten läuft sonst könnte er ja nicht alle Dateien lesen. Deswegen habe ich rsync auf der workstation ja auch per sudoers den Zugriff erlaubt...

Bin, das hätte ich vielleicht schon vorher erwähnen sollen nach diesem Tutorial vorgegangen:
http://www.webmasterpro.de/server/article/backups-mit-rsnapshot.html

Ich denke der "Fehler" liegt in den commands des SSH-Keys... nur weiß ich absolut nicht was ich da ändern bzw. anpassen sollte damit es geht :(
 
Code:
[22/Oct/2012:18:07:57] /usr/bin/rsync -auvze --rsync-path='sudo rsync' --bwlimit=1500 --delete-excluded --delete --delete-after --numeric-ids --stats --rsh=/usr/bin/ssh backup@192.168.0.26:/etc/ /srv/backups/daily.0/workstation/
[22/Oct/2012:18:09:14] /usr/bin/rsnapshot daily: ERROR: /usr/bin/rsync returned 255 while processing
Stimmt, 'rsync-path' macht doch Sinn. Hatte Dein Setup nicht ganz durchschaut, was wo eingetragen ist.
Fuer doch mal den Befehl der ersten Zeile auf dem Backup-Server in der Kommandozeile aus, am besten noch mit einem '-v', um Rauszufinden, weshalb rsync mit einem Fehler endet. Schau dazu auch in die Log-Dateien auf der Workstation.

Vielleicht musste Du auch --rsync-path='sudo /usr/bin/rsync' eintragen - ich bin mir nicht sicher, wie 'sudo' Befehle auf die sudoers abbildet, und dort ist ja /usr/bin/rsync (mit vollem Pfad) eingetragen.
Mich wundert, dass der Befehl, dass rsync '/usr/ kopieren wollte, nicht in der log-Datei auftaucht, aber ich wuerde erstmal obiges Problem loesen und dann den naechsten Schritt gehen.
 
Code:
[22/Oct/2012:18:07:57] /usr/bin/rsync -auvze --rsync-path='sudo rsync' --bwlimit=1500 --delete-excluded --delete --delete-after --numeric-ids --stats --rsh=/usr/bin/ssh backup@192.168.0.26:/etc/ /srv/backups/daily.0/workstation/
[22/Oct/2012:18:09:14] /usr/bin/rsnapshot daily: ERROR: /usr/bin/rsync returned 255 while processing
Stimmt, 'rsync-path' macht doch Sinn. Hatte Dein Setup nicht ganz durchschaut, was wo eingetragen ist.
Fuer doch mal den Befehl der ersten Zeile auf dem Backup-Server in der Kommandozeile aus, am besten noch mit einem '-v', um Rauszufinden, weshalb rsync mit einem Fehler endet. Schau dazu auch in die Log-Dateien auf der Workstation.

Vielleicht musste Du auch --rsync-path='sudo /usr/bin/rsync' eintragen - ich bin mir nicht sicher, wie 'sudo' Befehle auf die sudoers abbildet, und dort ist ja /usr/bin/rsync (mit vollem Pfad) eingetragen.
Mich wundert, dass der Befehl, dass rsync '/usr/ kopieren wollte, nicht in der log-Datei auftaucht, aber ich wuerde erstmal obiges Problem loesen und dann den naechsten Schritt gehen.

Also was er kopiert hängt anscheinend wirklich sehr stark hiervon ab:

Nun habe ich noch in der authorized_keys des backup Users folgendes vor den entsprechenden Key geschrieben:
Code:
from="192.168.0.26",command="rsync --server --sender -vlogDtprz --delete-excluded --numeric-ids . /" ssh-rsa AAAA....

wenn ich den Teil mit command rauslösche so kopiert er nur /etc (also wenn ich es direkt auf der Bash ausführe), das allerdings auch nicht komplett.

Allerdings finde ich keinerlei log-Datei zu rsync. Weißt du zufällig wo diese unter openSuSE hingeschrieben wird?

Habe es einmal mit sudo rsync und einmal mit sudo /usr/bin/rsync ausprobiert kommt beides aufs selbe...

EDIT: Also es liegt ganz offensichtlich nicht an rsync oder rsnapshot. Habe es gerade mal als root auf der Workstation laufen lassen da geht alles ohne Probleme... anscheinend kann er sich nicht richtig hochrooten...
 
Zuletzt bearbeitet:
Das Problem ist eigentlich so simpel das es schon wieder schwer ist... auf jedenfall ist es nun gelöst.

sudo Kommandos müssen vorher aktiviert werden um sie interaktiv über SSH nutzen zu können was man in die preexec von rsnapshot wunderbar mit aufnehmen kann. Folgender Code sollte schnell Abhilfe verschaffen:

stty -echo; ssh server.remotehost.com sudo -v; stty echo

Ansonsten nochmals vielen Dank tgruene für deine Hilfe :)
 

Ähnliche Themen

Nginx als Reverse Proxy für Nextcloud und Emby

Verschlüsseltes Backup-Script mit rsync

Zugriff Ubuntu 16.04. auf Freigabe 18.04. LTS nicht möglich

Email via script via Exchange Server (SASL)

Samba-Server mit Univention Corporate Server

Zurück
Oben