Menghapus file yang dibuat oleh pengguna lain dengan rsync

0

Masalah

Saya memiliki skenario berikut:

  • motion membuat direktori dan file dengan pengguna: grup motion:motiondan izin755
  • sebagai tugas cron, saya ingin menyalin file-file ini secara berkala ke komputer jarak jauh dan kemudian menghapusnya . Perintah yang saya coba gunakan adalah

    sudo rsync -avz --remove-source-files /home/pi/Pictures/SecurityCamera/ username@host:/Users/username/Pictures/SecurityCamera

  • File berhasil disalin ke mesin jarak jauh , namun tanpa sudo, file lokal tidak dihapus . Dengan itu sudo, saya diharuskan memasukkan kata sandi untuk mesin jarak jauh, meskipun saya sudah mengatur otentikasi kunci publik .


Solusi yang Dicoba

Saya sudah mencoba mengubah beberapa pengaturan di sshd_config jarak jauh tetapi tidak berhasil

PermitRootLogin without-password 
StrictModes no 

Saya juga mencoba menambahkan keduanya pidan rootpengguna ke grup gerakan, tetapi melihat lebih dekat pada izin, grup tidak memiliki akses tulis ke file yang saya pindahkan.


TL; DR

Bagaimana saya bisa menggunakan sudo rsyncuntuk menghapus file lokal yang dibuat oleh pengguna lain tanpa memasukkan kata sandi untuk mesin jarak jauh?

James Webster
sumber

Jawaban:

0

Tampak bagi saya bahwa Anda melakukan ini di Raspberry Pi.

  1. Tambahkan string ini pi ALL=(ALL) NOPASSWD: ALLke/etc/sudoers
  2. Tambahkan pengguna pike grup motion:usermod -a -G motion pi
  3. Ubah izin direktori tempat motionmenyimpan file ke 775 ( chmod -R 775 /path/to/motion/dir) Anda dapat menggunakan sekarang sudo rsynctanpa memberikan kata sandi tetapi simpan kredensial tempat simpan untuk 'pi' pengguna karena hampir rootsekarang

PS Cara lain adalah untuk memungkinkan pengguna motionmenjadi pengguna normal dengan memberikan kata sandi dan shell kepadanya. sudo usermod -s /bin/sh motion; sudo passwd motion Dengan cara ini Anda dapat login untuk rsyncing sebagai gerakan pengguna

PPS Mengikuti komentar, yang sebenarnya Anda butuhkan adalah:

echo '*/5 * * * * root /usr/bin/rsync -avz --remove-source-files /home/pi/Pictures/SecurityCamera/ username@host:/Users/username/Pictures/SecurityCamera' | sudo /usr/bin/tee /etc/cron.d/saveMotionPics.task

Alex
sumber
Saya memanggil rsync sebagai tugas cron. Bukankah tugas cron selalu dijalankan sebagai root?
James Webster
Tidak juga, jika Anda menggunakan sistem cron maka Anda perlu menentukan pengguna - siapa yang akan menjalankan beberapa program, agak seperti itu di */5 * * * * motion /pat/to/the/program/to/run.shmana motionada pengguna yang benar-benar run.shPS penyebab yang dapat Anda gunakan rootalih-alih motion- dengan cara ini Anda tidak memerlukan sudo
Alex
Saya menambahkan pekerjaan cron yang tepat ke jawaban saya setelah PPS Benar seberapa sering Anda ingin rsyncing, saya atur di sana setiap 5 menit
Alex