Prakteknya bukan untuk membuat satu pengguna dan grup per aplikasi, tetapi per layanan. Yaitu, program yang dijalankan oleh pengguna lokal tidak perlu diinstal sebagai pengguna selain root. Ini adalah daemon , program yang berjalan di latar belakang dan yang mengeksekusi permintaan yang datang melalui jaringan atau sarana komunikasi lainnya, yang harus dijalankan sebagai pengguna khusus.
Daemon berjalan sebagai pengguna yang berdedikasi sehingga jika ia melakukan kesalahan (karena bug, mungkin dipicu oleh penyerang) kerusakan yang dapat ia lakukan terbatas: hanya file data daemon yang terpengaruh (kecuali penyerang berhasil menemukan lubang root lokal , yang bisa terjadi). Sebagai contoh, daemon basis data mysqld
berjalan sebagai pengguna dan grup khusus mysql:mysql
dan file data dari basis data ( /var/lib/mysql/*
) menjadi milik mysql:mysql
.
Perhatikan bahwa daemon dapat dieksekusi dan data statis lainnya serta file konfigurasi yang digunakan tetapi tidak boleh dimodifikasi oleh daemon tidak boleh menjadi milik pengguna khusus; mereka harus dimiliki oleh root:root
, seperti kebanyakan file program dan konfigurasi. The mysqld
Proses tidak memiliki Timpa bisnis /usr/sbin/mysqld
atau /etc/mysql/my.cnf
, sehingga file-file ini tidak harus milik para mysql
pengguna atau dapat ditulis oleh mysql
pengguna atau mysql
kelompok. Jika beberapa file hanya dapat dibaca oleh daemon dan administrator, mereka harus dimiliki oleh root pengguna dan oleh grup khusus, dan memiliki mode 0640 ( rw-r-----
).
Kategori khusus yang dapat dieksekusi yang tidak dapat dimiliki root:root
adalah program yang dijalankan oleh pengguna tetapi perlu dijalankan dengan hak istimewa ekstra. Executable ini harus setuid root jika harus dijalankan (setidaknya sebagian) sebagai root; maka yang dapat dieksekusi harus memiliki mode 4755 ( rwsr-xr-x
). Jika program membutuhkan dengan hak istimewa ekstra tetapi tidak sebagai root, maka program tersebut harus dibuat setgid, sehingga hak istimewa tambahan datang melalui grup dan bukan melalui pengguna. Yang dapat dieksekusi kemudian memiliki mode 2755 ( rwxr-sr-x
). Alasannya ada dua:
- Yang dapat dieksekusi tidak boleh diizinkan untuk memodifikasi sendiri, sehingga jika pengguna berhasil mengeksploitasi kerentanan, mereka mungkin dapat memodifikasi file data yang digunakan oleh program tetapi tidak menyuntikkan trojan horse ke dalam executable untuk menyerang pengguna lain yang menjalankan program. .
- File data yang dapat dieksekusi milik grup. Program setuid harus beralih antara pengguna nyata (pengguna yang memanggil program) untuk berinteraksi dengan pengguna dan dengan pengguna efektif (pengguna yang menjalankan program) untuk mengakses file data pribadinya (alasan untuk itu untuk memiliki hak istimewa ekstra). Program setgid selanjutnya dapat memisahkan data per-pengguna yang hanya dapat diakses oleh grup (mis. Dengan menyimpan file yang dimiliki oleh pengguna dalam direktori yang hanya dapat diakses oleh root dan grup program).