UID <500 ile normal kullanıcı oluşturmanın tehlikeleri nelerdir?


14

UID <500 ile normal kullanıcı oluşturmanın tehlikeleri nelerdir? UID'lerin mevcut UID'lerin kopyası olmadığı varsayılarak, yanlış giden ne olabilir?

Bu yapmak istediğim bir şey değil, gördüğüm ve neden yapılmaması gerektiğini bilmek istediğim bir şey. Bu örnekte, RHEL5 üzerindedir.


2
Debian kaynaklı sistemler normal UID'leri 500 değil 1000'de başlatıyor gibi görünüyor.
Keith Thompson

Yanıtlar:


16

Herhangi bir içsel risk olduğuna inanmıyorum, bu sadece sistem hesapları ile kullanıcı hesapları arasında ayrım yapmak için yapılan bir şey. Deneyimlerime göre 500'ün altındaki sayıları kullanma pratiği bir Redhat-ism'dir ve gerçekten bundan başka bir şey değildir.

Solaris'te, 100'den başlayan kullanıcılara da numaralar verildiğini gördüm, ancak yıllar sonra, 2 küçük departmanın sistemini bir araya getirirken aynı UID'ye sahip 2 departmanda birden fazla kullanıcı olduğu için bir tür kabusa neden olduğunu keşfetti. / GID atandı.

Bu, UID'leri atarken gerçekten ana risk / baş ağrısıdır. UID, kullanıcının verdiği dosyalar / dizinler için nihayetinde inode'a yazılan şey findolduğu için, UID 1234'e ait dosyaları aramak ve bunları 5678 olarak değiştirmek zorunda kalmak için devasa bir performans sergilemek zorunda değilsiniz. .

Bu yüzden, yöneticiler UID'lerin seçimine biraz düşünerek, yoldaki baş ağrısından kaçınabilir.

500 ve üzeri sürümlerin kullanılması, Redhat (ve diğer Unix'ler) tarafından, yaratılması gereken sistem hesaplarının kullanıcılara atanan UID'lerle karıştırılmayacak kadar arabellek verme girişimidir.

/etc/login.defs

Bu arada, 500 sayısı yapılandırma dosyasındaki bu ayar tarafından yönlendirilir /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

useradd/ İle varsayılan davranışı geçersiz kılmak istiyorsanız bunu istediğiniz herhangi bir şeyle değiştirebilirsiniz.adduser Command komutuyla .

Kullanım kılavuzu sayfası

useraddMan sayfasına bakarsanız, GID için varsayılan değeri tartışan bu kısmı fark edeceksiniz, ancak bu yorum UID'ler için de geçerlidir:

alıntı

-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.

Sistem hesapları

useraddMan sayfasında dikkat edilmesi gereken bir diğer şey , sistem hesabı oluşturmada bu bit.

alıntı

-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.

Bu yöntem ( useradd -r ...), bir paket yüklenirken RPM gibi çeşitli paket yöneticilerine dahil edilen komut dosyası tarafından sıklıkla kullanılır. Bu şekilde komut dosyası yazmak, sistemin, sistem kullanıcılarına önceden atanmış UID / GID'lere basma riski olmadan belirli bir sistemdeki bir sonraki kullanılabilir UID / GID'yi otomatik olarak seçmesine olanak tanır.


1
FWIW, bence bu sadece Red Hat-ism değil, genel bir GNU / Linux-ism. Bunu kullandığım tüm sistemlerde gördüm ve hiç Red Hat kullanmadım.
Strugee

@strugee - teşekkürler, ifadeyi aşırı geniş yapmak ve beni ısırmak için geri gelmesini istemedim.
slm

2

Çekirdeğin bakış açısından sadece bir özel kullanıcı vardır: UID 0. İdari nedenlerle UID aralıklarının bölünmesi hayatınızı kolaylaştırır. Ortak aralıklar satıcı, sistem, yerel, küreseldir.

Satıcı kullanıcıları, sistemin ilk kurulumu sırasında kurulur ve satıcı tarafından statik olarak yönetilir. hangi paketlerin kurulu olduğuna bağlı olarak makine kullanıcıları sistem başına kurulur. çoğu kullanıcı ekleme / silme yardımcı programı bunları ayrı ayrı ele almak için bir aralık sınırına sahiptir. yerel kullanıcılar normal kullanıcılardır ve makine başına atanır. genel kullanıcılar merkezi bir veritabanı tarafından atanır, ancak normal kullanıcılardır. UID aralıklarının kullanılması bu farklı gruplar arasındaki çakışmaları önler. bu kesiklerin değişebileceği yerlerde genellikle yapılandırılabilir.


1

Bunu yapmanın doğasında var olan bir tehlike yoktur. UID 499 ile bir kullanıcı oluşturursanız, ekstra özel hakları olmayacaktır. Önerilmemesinin nedeni, UID'lerin genellikle sistem kullanıcıları için ayrılmasıdır. Böyle bir UID oluştururken karşılaşılabilecek sorun, bazı sistem hizmetlerinin UID'nin kullanılabilir olmasını beklemesidir. Bu, iyi bilinen bir bağlantı noktasında çalışan yeni bir hizmet oluşturmak gibidir - bununla ilgili bir sorun yoktur, ancak iyi bir uygulama değildir ve sshd, ftpd vb.

Bununla birlikte, kullanıcıların sorunsuz bir şekilde UID <500 ile oluşturulduğu birçok sistem gördüm. Ancak, kullanıcı tabanı büyüdükçe ve şimdi binlerce kullanıcı olduğundan, kullanıcı hesapları ile sistem hesapları arasında ayrım yapmak zorlaşabilir. Hiçbir UID <500 kuralına göre, çok kolaydır. Yani, hesapları düzenlemenin de güzel bir yoludur.


1

Gerçek bir tehlike yok. Çekirdek, 0 dışında kullanıcı kimliği değerlerini umursamaz. Çoğu yönetim aracı da umursamaz - sistemin çok az kısmı sistem kullanıcıları ve insan kullanıcılar arasında fark yaratır.

Sistem kullanıcıları özel gruplara sahip olma eğilimindedir, bu nedenle bu grupların olması gerekenden daha fazla gruba ait hesaplar oluşturması olası değildir.

Bazı dağıtımlar, özel bir kullanıcı gerektiren bir sistem hizmeti içeren bir paket yüklerken ayrılan kullanıcılar da dahil olmak üzere sistem kullanıcıları için 1–499 (Red Hat ve akrabalar) veya 1–999 (Debian ve akrabalar) aralığını saklar. Debian'ın kuralı, 1-99 aralığının statik olarak tahsis edilmesidir (bu nedenle, bu aralıkta bir insan kullanıcı oluşturmak, sistem kullanıcısıyla çakışabileceği için çok kötü bir fikirdir), 100-999 aralığı dinamik olarak tahsis edilir (böylece bir insan kullanıcı oluşturmak herhangi bir yeni sistem kullanıcısı ücretsiz bir kullanıcı kimliği seçeceğinden, bu aralıkta zararsızdır).

Görüntü yöneticileri, kullanıcılarına listelerindeki eşiğin altında UID sunmayan küçük rahatsızlıklarla karşılaşabilirsiniz.

Yalıtılmış bir makine için ana tehlike, sistem yöneticilerinizi karıştırmanızdır. Ağdaki kullanıcı kimliklerinin paylaşıldığı bir makine için, bu kullanıcıların sistem kullanıcısıyla aynı kullanıcı kimliğine sahip olduğu diğer makinelerle çakışabilirsiniz. Paylaşılan kullanıcı kimliğine sahip ağlarda, insan kullanıcıları için 1000-65533 hatta 10000-65533 aralığına bağlı kalmak en iyisidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.