Mengotomatiskan Cadangan
Saya ingin menerapkan solusi cadangan dengan menyalin data dari berbagai direktori dari server Web (WebServer) ke server cadangan lokal (BackupServer). Cadangan harus dijalankan tanpa pengawasan dan oleh karena itu saya ingin menggunakan otentikasi berbasis kunci dengan kunci pribadi tanpa kata sandi.
Rsync istimewa
Direktori yang ingin saya backup hanya dapat dibaca oleh pengguna yang memiliki hak istimewa. Saya ingin menggunakan rsync untuk menyalin file. Saya membuat pengguna cadangan khusus dan memungkinkan pengguna untuk mengeksekusi rsync dengan sudo tanpa diminta kata sandi dengan aturan visudo:
backup-user ALL = NOPASSWD: /usr/bin/rsync
Pertimbangan Keamanan
Saya ingin meningkatkan keamanan dengan membatasi perintah yang dapat dilakukan pengguna cadangan dengan menambahkan daftar perintah ke file Authorized_key dari WebServer. Saya menginstal rrsync sebagaimana disebutkan dalam posting ini .
command="/usr/bin/rrsync",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa AAAA134143NzaC1yc...
Rrsync mengharapkan subdirektori
Berbeda dengan rsync normal, rrsync mengharapkan subdirektori akan disediakan dalam file kunci resmi, seperti yang dijelaskan dalam posting blog ini
command="/usr/share/rsync/rrsync /var/backup/client1/",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa
Pembatasan ini berfungsi tetapi itu hanya memungkinkan saya untuk membuat cadangan satu direktori tertentu yaitu / var / backup / client1 /
Saya ingin memberikan direktori yang ingin saya backup dari BackupServer dalam perintah rsync. Apakah ada kemungkinan untuk menggunakan rrsync persis seperti rsync, mis:
rsync -avze ssh --rsync-path='sudo rrsync' backupuser@111.222.33.44:/media/data /backups/Server/
Klarifikasi tambahan
Saya menyadari bahwa bagian perintah = "..." di dalam otor_hosts memang membatasi perintah yang dapat dieksekusi untuk pengguna ini persis seperti yang disediakan, tetapi dengan rsync yang normal, saya dapat melakukan sesuatu seperti ini untuk menyediakan jalur yang saya ingin backup sebagai sebuah parameter:
command="/usr/bin/rsync --server --sender -vlogDtpre.is . ${SSH_ORIGINAL_COMMAND//* \//\/}"
Ini tidak berfungsi dengan rrsync.
Solusi yang Diterima
Meskipun secara teknis bukan jawaban pasti untuk pertanyaan itu, saya pikir solusi yang diposting oleh Gilles adalah pendekatan yang sangat bagus. Saya membuat folder root untuk semua tampilan direktori aktual yang ingin saya backup. Untuk alasan ini saya dapat dengan aman membatasi otentikasi hanya ke rrsync.
One time todo
sudo mkdir /mnt/Backups-Rsync-Readonly
sudo chown -R rsync-backup /mnt/Backups-Rsync-Readonly
sudo mkdir /mnt/Backups-Rsync-Readonly/VAR-WWW
sudo mkdir /mnt/Backups-Rsync-Readonly/MySQL-Backups
sudo setfacl -m u:rsync-backup:rx /mnt/Backups-Rsync-Readonly/
sudo setfacl -m u:rsync-backup:rx /mnt/Backups-Rsync-Readonly/MySQL-Backups
sudo setfacl -m u:rsync-backup:rx /mnt/Backups-Rsync-Readonly/VAR-WWW
Buat tampilan (hilang setelah reboot)
sudo bindfs -o perms=0000:u=rD,force-user=rsync-backup /var/www /mnt/Backups-Rsync-Readonly/VAR-WWW
sudo bindfs -o perms=0000:u=rD,force-user=rsync-backup /MySQL-Dumps /mnt/Backups-Rsync-Readonly/MySQL-Backups
Versi fstab
/home/stefan/Scans /mnt/Backups-Rsync-Readonly/VAR-WWW fuse.bindfs perms=0000:u=rD,force-user=rsync-backup 0 0
Kunci Resmi
command="/usr/bin/rrsync -ro /mnt/Backups-Rsync-Readonly",from="192.168.0.10",no-pty,no-agent-forwarding,no-port-forwarding,no-X11-forwarding ssh-rsa AAAAB
command=
Opsi diauthorized_keys
hanya menerima satu perintah yang dijalankan. Hanya itu saja.