Menggunakan rsync dengan sudo di mesin tujuan

Jawaban:

68

Di mesin tujuan

  1. Temukan jalur menuju rsync:which rsync
  2. Edit /etc/sudoersfile: sudo visudo(lihat juga: haruskah saya menggunakan visudo? )
  3. Tambahkan baris <username> ALL=NOPASSWD:<path to rsync>, di mana nama pengguna adalah nama login pengguna yang akan digunakan rsync untuk masuk. Pengguna itu harus dapat menggunakansudo

Kemudian, pada mesin sumber, tentukan yang sudo rsyncakan digunakan:

rsync ... --rsync-path="sudo rsync" ...

Menggunakannya tanpa NOPASSWDpada mesin tujuan akan menghasilkan pesan

sudo: tidak ada tty sekarang dan tidak ada program askpass yang ditentukan

Thomas Weller
sumber
Apa modifikasi ini yang akan memungkinkan pengguna dalam grup tertentu untuk melakukan ini? Alih-alih <username> apakah ada versi <groupname>?
Brian
3
Terima kasih, hanya saya menggunakan pki jadi saya menggunakan-e="ssh -i $PRIVATE_KEY_PATH" --rsync-path="sudo rsync"
AT
1
Tentu saja <username> sekarang dapat membaca / menulis semuanya sebagai root menggunakan rsync, secara lokal dan jarak jauh, sehingga bagian tentang tidak dapat login sebagai root karena masalah keamanan agak diperdebatkan ... karena pada dasarnya Anda melakukan itu sekarang .
hmn
1
Masih mendapatkan kesalahan "not tty present ..." setelah mengikuti petunjuk ini? Saya dulu. Memastikan baris yang saya tambahkan /etc/sudoersberada di akhir file (atau setelah aturan grup apa pun yang dapat mempengaruhi pengguna yang sama) menyelesaikan masalah bagi saya.
CPBL
1
Saya menggunakan solusi ini tetapi ingin meningkatkan keamanan dengan membatasi args yang dapat dilewati pengguna ke rsync di server tujuan. Biasanya saya akan membatasi args yang dapat digunakan dengan <username> ALL=NOPASSWD:<path to rsync> <args>tetapi saya tidak tahu apa args akan ketika dipanggil dari jarak jauh seperti ini. Ada ide?
Pete Cornell
3

Anda dapat meminta sudo jarak jauh untuk meminta kata sandi Anda melalui X-windows. Inilah cara untuk melakukan itu:

  1. Pastikan ssh-askpassdiinstal pada host jarak jauh (dan tentu saja Anda menggunakan X-windows)
  2. Pastikan ini ada di /etc/sudo.conf:
# Path to askpass helper program
Path askpass /usr/bin/ssh-askpass
  1. Tambahkan opsi ini ke rsync: -e "ssh -X" --rsync-path="sudo -A rsync"

    • ssh -X akan meneruskan informasi X-windows Anda dan port ke sesi jarak jauh Anda
    • sudo -A akan membuat sudo menggunakan ssh-askpass untuk meminta kata sandi Anda
Bill Burdick
sumber
Bekerja di Ubuntu 18; buat /etc/sudo.conf (jika belum ada) di tujuan m / c
Snidhi Sofpro
0

Solusi saya adalah menggunakan --rsync-path="sudo rsync", jika meminta kata sandi Anda dapat menggunakan solusi seperti ini:

rsync -avz --stats --rsync-path="echo <SUDOPASS> | sudo -Sv && sudo rsync"  [email protected]:/ .

Tapi ini tidak aman untuk memasukkan kata sandi di baris perintah.

Bulat
sumber