Apa bahaya membuat pengguna normal dengan UID <500?

14

Apa bahaya membuat pengguna normal dengan UID <500? Dengan asumsi UID bukan duplikat dari UID yang ada, apa yang salah?

Ini bukan sesuatu yang ingin saya lakukan, tetapi sesuatu yang telah saya lihat dan ingin tahu mengapa itu tidak boleh dilakukan. Dalam contoh ini, ada di RHEL5.

Jeff
sumber
2
Sistem yang diturunkan dari Debian tampaknya memulai UID normal pada 1000, bukan 500.
Keith Thompson

Jawaban:

16

Saya tidak percaya ada risiko yang melekat, ini adalah sesuatu yang dilakukan hanya untuk membuat pemisahan antara apa yang dianggap akun sistem dan akun pengguna. Praktek menggunakan angka di bawah 500, dari pengalaman saya adalah Redhat-isme, dan benar-benar tidak lebih dari itu.

Pada Solaris saya telah melihat pengguna diberi nomor mulai dari 100 juga, hanya beberapa tahun kemudian menemukan bahwa ketika menggabungkan 2 sistem departemen yang lebih kecil bersama-sama menyebabkan mimpi buruk, karena ada banyak pengguna di 2 departemen yang memiliki UID yang sama / GID ditugaskan.

Ini benar-benar risiko utama / sakit kepala saat menetapkan UID. Karena UID adalah apa yang pada akhirnya ditulis ke inode untuk file / direktori yang diberikan pengguna, Anda tidak ingin mereka harus findmencari file yang dimiliki oleh UID 1234 dan harus mengubahnya menjadi 5678. .

Jadi dengan menaruh beberapa pemikiran dalam pemilihan UID, administrator dapat menghindari sakit kepala di jalan.

Penggunaan 500 dan di atasnya hanya merupakan upaya Redhat (dan Unix lainnya) untuk memberikan buffer yang cukup sehingga setiap akun sistem yang mungkin perlu dibuat tidak akan dicampur dengan UID yang ditugaskan untuk pengguna.

/etc/login.defs

Kebetulan, angka 500 didorong oleh pengaturan ini di file konfigurasi /etc/login.defs,.

#
# Min/max values for automatic uid selection in useradd
#
UID_MIN           500
UID_MAX         60000

#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN           500
GID_MAX         60000

Anda dapat mengubah ini menjadi apa pun yang Anda inginkan, jika Anda ingin mengesampingkan perilaku default oleh useradd/ adduserperintah.

Halaman manual useradd

Jika Anda melihat useraddhalaman manual Anda akan melihat bagian ini yang membahas nilai default untuk GID, tetapi komentar ini juga berlaku untuk UID:

kutipan

-g, --gid GROUP
    The group name or number of the user´s initial login group. The group name 
    must exist. A group number must refer to an already existing group.

    If not specified, the behavior of useradd will depend on the USERGROUPS_ENAB 
    variable in /etc/login.defs. If this variable is set to yes 
    (or -U/--user-group is specified on the command line), a group will be 
    created for the user, with the same name as her loginname. If the variable 
    is set to no (or -N/--no-user-group is specified on the command line), 
    useradd will set the primary group of the new user to the value specified by 
    the GROUP variable in /etc/default/useradd, or 100 by default.

Akun sistem

Satu hal lain yang perlu diperhatikan di useraddhalaman manual adalah bagian ini tentang pembuatan akun sistem.

kutipan

-r, --system
    Create a system account.

    System users will be created with no aging information in /etc/shadow, 
    and their numeric identifiers are choosen in the SYS_UID_MIN-SYS_UID_MAX 
    range, defined in /etc/login.defs, instead of UID_MIN-UID_MAX (and their 
    GID counterparts for the creation of groups).

    Note that useradd will not create a home directory for such an user, 
    regardless of the default setting in /etc/login.defs (CREATE_HOME). You 
    have to specify the -m options if you want a home directory for a system 
    account to be created.

Ini metode ini ( useradd -r ...) yang sering kali digunakan oleh skrip yang dimasukkan ke dalam berbagai paket paket, seperti RPM, ketika sebuah paket sedang diinstal. Dengan scripting seperti ini memungkinkan sistem untuk secara otomatis memilih UID / GID berikutnya yang tersedia pada sistem yang diberikan tanpa risiko menginjak UID / GID yang sudah ditetapkan untuk pengguna sistem.

slm
sumber
1
FWIW, saya pikir ini adalah GNU / Linux-isme umum, bukan hanya Red Hat-isme. Saya telah melihat ini pada semua sistem yang saya gunakan, dan saya tidak pernah menggunakan Red Hat.
strugee
@ Strugee - terima kasih saya tidak ingin membuat pernyataan yang terlalu luas dan kembali menggigit saya.
slm
2

Dari perspektif kernel, hanya ada satu pengguna khusus: UID 0. Membagi rentang UID karena alasan administratif membuat hidup Anda lebih sederhana. Rentang umum adalah vendor, sistem, lokal, global.

Pengguna vendor diinstal selama instalasi awal sistem dan dikelola secara statis oleh vendor. pengguna sistem diinstal per mesin tergantung pada paket apa yang diinstal. sebagian besar pengguna menambah / menghapus penggunaan memiliki batas jangkauan untuk menangani ini secara terpisah. pengguna lokal adalah pengguna reguler dan ditugaskan per mesin. pengguna global ditugaskan oleh basis data pusat, tetapi merupakan pengguna reguler. menggunakan rentang UID mencegah konflik antara kelompok berbeda ini. di mana cutoff ini dapat bervariasi tetapi biasanya dapat dikonfigurasi.

Hildred
sumber
1

Tidak ada bahaya yang melekat dalam melakukan ini. Jika Anda membuat pengguna dengan UID 499, mereka tidak akan memiliki privasi tambahan. Alasan yang disarankan untuk tidak hanya karena UID biasanya dicadangkan untuk pengguna sistem. Masalah yang mungkin dihadapi seseorang dalam menciptakan UID adalah ketika beberapa layanan sistem mengharapkan UID tersedia. Ini seperti membuat layanan baru yang berjalan di pelabuhan yang terkenal - tidak ada masalah dengan itu, tapi itu bukan praktik yang baik dan dapat menyebabkan masalah lebih jauh ketika Anda mengatur sshd, ftpd, dll.

Yang mengatakan, saya telah melihat banyak sistem di mana pengguna dibuat dengan UID <500 tanpa masalah. Namun, seiring bertambahnya basis pengguna dan sekarang ada ribuan pengguna, sulit untuk membedakan antara akun pengguna dan akun sistem. Mengikuti aturan no UID <500, ini sangat mudah. Jadi, ini adalah cara yang bagus untuk mengatur akun juga.

Franz Kafka
sumber
1

Tidak ada bahaya nyata. Kernel tidak peduli dengan nilai ID pengguna kecuali 0. Sebagian besar alat administrasi juga tidak peduli - sangat sedikit bagian sistem yang membuat perbedaan antara pengguna sistem dan pengguna manusia.

Pengguna sistem cenderung memiliki grup khusus, jadi ini kemungkinan tidak akan membuat akun milik lebih banyak grup daripada yang seharusnya.

Beberapa distribusi mencadangkan kisaran 1-499 (Red Hat dan kerabat) atau 1-999 (Debian dan kerabat) untuk pengguna sistem, termasuk pengguna yang dialokasikan saat memasang paket yang berisi layanan sistem yang membutuhkan pengguna khusus. Konvensi Debian adalah bahwa kisaran 1–99 dialokasikan secara statis (sehingga menciptakan pengguna manusia dalam kisaran itu adalah ide yang sangat buruk karena dapat berbenturan dengan pengguna sistem) sementara kisaran 100–999 dialokasikan secara dinamis (sehingga menciptakan pengguna manusia) dalam kisaran itu tidak berbahaya, karena setiap pengguna sistem baru akan memilih ID pengguna gratis).

Anda dapat mengalami ketidaknyamanan kecil, seperti manajer tampilan yang tidak menawarkan pengguna dengan UID di bawah ambang batas dalam daftar mereka.

Bahaya utama untuk mesin yang terisolasi adalah Anda cenderung membingungkan rekan administrator sistem Anda. Untuk mesin di jaringan tempat ID pengguna dibagikan, Anda dapat mengalami konflik dengan mesin lain di mana pengguna ini memiliki ID pengguna yang sama dengan pengguna sistem. Dalam jaringan dengan ID pengguna bersama, yang terbaik adalah tetap pada kisaran 1000-65533 atau bahkan 10000-65533 untuk pengguna manusia.

Gilles 'SANGAT berhenti menjadi jahat'
sumber