Saya mencadangkan server di server cadangan. Setiap server yang didukung memiliki akunnya sendiri di server cadangan, dan file-file tersebut disinkronisasi ulang. Adalah penting bahwa izin tetap utuh (menggunakan rsync -p) untuk menyederhanakan pemulihan.
Saya mencoba membuat skrip yang dapat membaca file dan membuat beberapa statistik. Saya tidak suka skrip itu dijalankan di bawah pengguna root, dan skrip itu tidak mungkin dijalankan untuk setiap pengguna cadangan, karena skrip harus dapat membaca semua file dari semua pengguna. Namun, ini menciptakan masalah ketika file misalnya chmodded 600. Saya tidak ingin menyentuh izin, tetapi pengguna lain kecuali untuk root dan pemilik tidak dapat membacanya.
Pengguna tertentu - bukan root - harus dapat membaca semua file dalam direktori atau partisi, terlepas dari tingkat izin (dan pemilik file tidak boleh mencegahnya). Apakah ada cara untuk mencapai ini? Saya menjalankan FreeBSD dengan volume ZFS.
sumber
Jawaban:
Gunakan
sudo
.Jika
sudoers
file Anda mencantumkan perintah yang tepat dan spesifik, maka perintah tersebut harus dipanggil persis seperti yang tercantum dalamsudoers
atau akan ditolak.Misalnya:
Dalam contoh ini pengguna
backup
dapat menjalankan perintah persis seperti yang ditunjukkan:Jika mereka memanggil
sudo rsync...
alih-alihsudo /usr/bin/rsync
perintah gagal, atau jika flag atau path berbeda, perintah gagal.Jika Anda melakukan ini dalam skrip maka Anda ingin mengaktifkan penggunaan tanpa perintah dari perintah-perintah itu:
Untuk lebih lanjut lihat
sudoers(5)
halaman manual di bawahCmnd_list
.sumber
pfexec
. Tetapi karena Anda menggunakan BSD, Andasudo
harus melakukannya.Anda dapat menulis
suid
versicat
yang hanya dapat dieksekusi oleh pengguna cadangan Anda (buat grup eksklusif untuk pengguna cadangan dan buat yang dapat dieksekusi hanya dapat dibaca oleh grup itu). Inicat
hanya akan memungkinkan Anda untuk membaca file di direktori yang Anda minati. (Anda mungkin ingin melarang tautan simbolik dan berhati-hati terhadap trik-trik seperti/dir/../otherdir/
.)Kemudian skrip Anda dapat menggunakan executable ini untuk membaca file tanpa memiliki hak root.
sumber
PERINGATAN: Seperti ditunjukkan Stephane dalam komentar di bawah, pemilik file masih dapat mencabut ACL.
Jika Anda memiliki akses root ke mesin, Anda bisa melakukan ini dengan ACL :
Ini akan memberikan penggunaan
USERNAME
akses baca ke semua file dan direktori di bawah/path/to/directory
.sumber
Bindfs adalah sistem file FUSE yang memberikan tampilan pohon direktori dengan berbagai izin dan kepemilikan. Tidak ada port untuk FreeBSD, tetapi Anda dapat mengkompilasi dari sumber.
Untuk memberikan pengguna
backupper
(dan hanya pengguna itu) tampilan di/some/files
mana semua file dapat dibaca, pasang tampilan yang dapat dibaca dunia/some/files
dalam direktori pribadibackupper
.sumber
ZFS memiliki beberapa mekanisme untuk ini.
Salah satu mekanisme masih dalam pengerjaan dan belum diimplementasikan, tetapi memungkinkan dataset untuk dipasang dengan override 'pemilik'. Dalam hal ini, Anda dapat mengkloning snapshot, memasangnya dengan pemilik yang diganti oleh pengguna cadangan, mencadangkannya, lalu menghancurkan klon tersebut. Kelemahannya adalah Anda tidak mencadangkan kepemilikan file yang sebenarnya.
Solusi terbaik mungkin adalah gaya ACFS ZFS nfsv4
sumber
Saya punya dua ide untuk bagaimana mengatasi masalah ini menggunakan teknologi khusus FreeBSD, meskipun saya belum mencoba:
Gunakan Capsicum. Ini adalah metode yang saya sukai. Juga, karena baru-baru ini porting ke Linux, seharusnya juga berfungsi di sana. Akan seperti ini:
Gunakan kontrol akses wajib. Ini tidak berfungsi pada Linux AFAIK, dan lebih canggung untuk pengaturan. Akan seperti ini:
ugidfw menambahkan subjek uid root jailid BACKUP_JAIL_ID mode rsx
sumber