Kapan para pengguna ini dibuat?
Dalam kasus yang Anda sebutkan, mereka dibuat pada instalasi sistem. Akun pengguna ini adalah konvensional, beberapa berasal dari dekade. Mereka juga standar. Linux Standard Base membaginya menjadi:
- yang diperlukan pengguna standar account,
root
, bin
, dan daemon
; dan
- yang opsional standar account pengguna
adm
, lp
, sync
, shutdown
, halt
, mail
, news
, uucp
, operator
, man
, dannobody
Account pengguna lain yang disebutkan di sini - pulse
, avahi
, colord
, dan Debian-exim
(untuk memilih salah satu dari file password py4on ini) - membawa kita ke pertanyaan berikutnya.
Bagaimana ini terkait dengan program baru yang diinstal?
Akun pengguna non-standar dibuat, dan dihancurkan, oleh "skrip pengelola" untuk berbagai paket, karena paket-paket itu diinstal dan dibersihkan. Akun pengguna akan dibuat oleh postinst
skrip pengelola yang disebut paket , yang berjalan getent
untuk melihat apakah akun pengguna sudah ada, dan useradd
jika tidak. Secara teori itu akan dihapus oleh postrm
skrip pengelola yang disebut paket , berjalan userdel
.
Dalam praktiknya, akun pengguna untuk paket tidak dihapus. Wiki Fedora (qv) menjelaskan bahwa ini akan penuh dengan kesulitan. Lihat Bug Debian # 646175 untuk contoh pemikiran ini dalam tindakan, di mana diputuskan untuk tidak menghapus rabbitmq
akun pengguna ketika paket dibersihkan, untuk menyelesaikan masalah dengan demon yang terus berjalan di bawah perlindungan akun itu.
Bagaimana program-program ini dimulai dengan UID yang berbeda?
Di bawah Unix dan Linux, proses yang berjalan di bawah pengawasan superuser dapat mengubah akun penggunanya menjadi sesuatu yang lain dan terus menjalankan program yang sama, tetapi kebalikannya tidak diizinkan. (Seseorang harus menggunakan mekanisme set-UID.)
Sistem manajemen demon berjalan sebagai superuser. Data konfigurasinya menentukan bahwa demon tertentu dijalankan di bawah naungan akun pengguna tertentu:
- Dengan Sistem 5
rc
skrip di /etc/init.d
menggunakan alat bantu seperti start-stop-daemon
dan --chuid
opsinya.
- Dengan manajer layanan daemontools keluarga, yang
run
panggilan naskah setuidgid
, s6-setuidgid
, chpst
, atau runuid
dengan nama akun pengguna. Ada contoh ini di /unix//a/179798/5132 yang mengatur nagios
akun pengguna.
- Dengan pemula ada
setuid
stanza dalam file pekerjaan, yang menentukan akun pengguna. Ini tidak terlalu berbutir halus, dan kadang-kadang orang ingin apa yang dijelaskan di /superuser//a/723333/38062 .
- Dengan systemd ada
User=
pengaturan dalam file unit layanan, yang menentukan akun pengguna.
Ketika sistem manajemen demon memunculkan proses menjadi demon, mekanisme ini menjatuhkan hak pengguna super sehingga proses demon terus berjalan di bawah naungan akun pengguna yang tidak memiliki hak pribadi.
Ada penjelasan yang cukup panjang mengapa manajemen demon yang baik dilakukan dengan cara ini. Tetapi Anda tidak bertanya mengapa; hanya kapan, bagaimana, dan dari mana. ☺ Précis yang sangat singkat, oleh karena itu:
Sistem operasi Unix dan Linux melindungi proses yang berjalan di bawah naungan akun pengguna yang berbeda satu sama lain. Secara historis, jika seseorang dapat mengambil alih demon yang berlari sebagai superuser, seseorang dapat melakukan apa saja yang dia sukai. Di sisi lain, demon yang berjalan di bawah naungan akun yang tidak memiliki hak pribadi hanya dapat mengakses file, direktori, perangkat, dan proses yang dapat dilakukan oleh akun yang tidak memiliki hak tersebut. Sebuah sistem program demon yang tidak saling dipercaya semua berjalan di bawah naungan akun pengguna yang berbeda dan tidak dapat mengakses / mengontrol file / direktori / proses / perangkat satu sama lain (internal, tepercaya), sehingga jauh lebih sulit untuk di-crack.
Bacaan lebih lanjut