Dua program setuid, /usr/bin/bar
dan /usr/bin/baz
, berbagi satu file konfigurasi foo
. Mode file konfigurasi adalah 0640
, karena menyimpan informasi sensitif. Program yang satu berjalan sebagai bar:bar
(yaitu, sebagai bilah pengguna , bilah kelompok ); yang lain sebagai baz:baz
. Mengubah pengguna bukanlah suatu pilihan, dan bahkan mengubah grup tidak akan lebih disukai.
Saya ingin menautkan file konfigurasi tunggal dengan /etc/bar/foo
dan /etc/baz/foo
. Namun, ini gagal karena file harus, sejauh yang saya tahu, milik root:bar
atau milik root:baz
.
Solusi potensial: Buat grup baru barbaz
dengan anggota bar
dan baz
. Biarkan foo
milik root:barbaz
.
Itu terlihat seperti solusi yang cukup berat bagi saya. Apakah tidak ada cara yang lebih rapi dan mudah untuk berbagi file konfigurasi foo
antara kedua program?
Untuk saat ini, saya mempertahankan dua, salinan file yang identik. Ini bekerja, tetapi jelas salah. Apa yang benar?
Sebagai informasi: Saya memiliki sedikit pengalaman dengan grup Unix dan tidak ada dengan setgid (2).
ssl-cert
grup, yang merupakanbarbaz
grup Anda . Standar ini adalah untuk mengatur semua kunci pribadi yang akan dimiliki olehssl-cert
grup, dan menempatkan UID yang terkait dengan program yang perlu mengaksesnya ke dalam grup itu.ssl-cert
yang skrip postinst-nya, saat instalasi, membuat grup yang Anda gunakan. Saya tidak menyadarinyassl-cert
. Apache2 (diinstal pada host saya) merekomendasikanssl-cert
. Berbagai paket Exim dan Dovecot tidak, tetapi Postfix (tidak diinstal pada host saya) tergantung padassl-cert
. Karena Apache, host saya memang memiliki grup ssl-cert , tetapi grup ini belum memiliki anggota. Terima kasih atas sarannya.Jawaban:
Anda dapat menggunakan ACL sehingga file tersebut dapat dibaca oleh orang-orang di kedua grup.
Sekarang keduanya
bar
danbaz
grup dapat membaca file.Misalnya, inilah file yang dimiliki oleh bin: bin dengan mode 640.
The
+
berarti ada sebuah set ACL, jadi mari kita lihat itu.Kita dapat melihat baris
group:sweh:r--
: itu berarti orang-orang dalam grupsweh
dapat membacanyaHei, itu aku!
Dan ya, saya bisa membaca file.
sumber
Anda mungkin ingin mempertimbangkan kembali pernyataan-pernyataan ini:
Mengapa terlalu berat untuk membuat grup baru? Melakukannya memiliki keuntungan sebagai berikut dibandingkan ACL:
/usr/bin/bar
dan/usr/bin/baz
, relevan bahwa kedua program ini dapat berbagi file konfigurasi. Ini menunjukkan bahwa program terkait secara alami. Membuat grup baru untuk mereka tampaknya menggambarkan hubungan yang benar-benar ada dan seharusnya memicu perilaku (seperti izin untuk membaca file konfigurasi umum).Secara pribadi saya melihat ACL sebagai solusi yang berat di sini, dan dikelompokkan sebagai cara Unix tradisional yang lebih sederhana.
sumber
Saya akan berpikir ini akan menjadi penggunaan khas untuk Access Control Lists (ACL). Tambahkan kedua pengguna (atau grup) ke ACL file konfigurasi:
Anda mungkin harus menginstal paket acl terlebih dahulu.
sumber
Buat mode file
0660
(atau bahkan0440
jika menulis tidak diperlukan) dan kepemilikanbar:baz
. Kemudian satu proses dapat mengakses file berkat izin pengguna, yang lain berkat izin grup. Ini bekerja bahkan pada sistem file di mana ACL tidak.sumber
Cara "baru" "cloud" adalah membuat semua konfigurasi ditangani oleh sistem manajemen konfigurasi (seperti koki , boneka , atau yang memungkinkan ). Maka tidak masalah bahwa Anda memiliki dua file yang berbeda tetapi identik di server, karena keduanya adalah salinan dari file tunggal dari sistem manajemen konfigurasi.
Keuntungan utama melakukannya seperti ini adalah bahwa konfigurasi Anda diversi (beserta semua konfigurasi lainnya), dan menggunakan server baru yang identik atau hampir sama menjadi sangat mudah sehingga ot dapat diotomatisasi.
(Sebagai catatan, karena Anda tidak menggunakan manajemen konfigurasi, saya akan menggunakan sistem grup seperti pada jawaban @ drg).
sumber