Başlangıçta, kullanıcıların sistemi kullanarak bir insana karşılık gelmesi amaçlanmıştır, bu nedenle adı. Her işlem belirli bir kullanıcı olarak çalışır ve her dosya belirli bir kullanıcıya aittir. Kök adı verilen özel bir kullanıcı, belirli bir insan kullanıcıya, yani işletim sisteminin kendisine ait olmayan şeyler için kullanılır. Kök işletim sisteminin kendisine karşılık geldiğinden, tüm ayrıcalıklara sahiptir.
Yakında insanlar, geniş ayrıcalıklar olmadan birden fazla sistem kullanıcısı oluşturmanın uygun olduğunu buldular. Bu, bir makinede çalışan çeşitli hizmetlerin izole edilmesini sağlar, böylece birbirlerinin ayak parmaklarına basmazlar. Hizmet hesabı (veya "sistem hesabı", bu iki terim eşanlamlıdır), sistemi kullanan birine değil, sistemde çalışan bir hizmete karşılık gelir. Genellikle sistemde çalışan ve kendi ayrıcalıklarına sahip (örneğin kendi dosyaları, kendi ağ bağlantı noktaları vb.) Her görev için bir hizmet hesabınız vardır.
İnsan / sistem / hizmet hesabının resmi bir tanımı yoktur. Çekirdek umurunda değil (UID 0 olan kullanıcıya çok fazla ayrıcalık vermek dışında). Çoğu yönetim komutu da umursamaz. Bazı tipik farklılıklar şunlardır:
- İnsan bir kullanıcının “John Doe” gibi gerçek bir adı varken, bir sistem kullanıcısının “Nazal daemon” gibi tanımlayıcı bir adı vardır ya da hiçbiri yoktur.
- Bir kullanıcı gerçek bir giriş kabuğuna sahiptir (örn.
/bin/sh
Veya /bin/bash
veya /bin/csh
. Bazı sistem kullanıcılarının bir kabuğu vardır (neredeyse her zaman /bin/sh
), diğerleri, nasıl kullanıldıklarına bağlı olarak (örneğin bir kabuğa sahip olmayı su foo
gerektirir foo
) sahip değildir.
- Bir insan kullanıcının genellikle bir parolası vardır - ancak bu her zaman geçerli değildir, örneğin, yalnızca uzaktaki bir kullanıcının yalnızca SSH anahtarı olabilir. Modern birimlerde parolanın değil,
/etc/passwd
başka bir dosyada olduğunu unutmayın /etc/shadow
.
- Bir insan kullanıcının ana dizini genellikle
/home
(veya siteye özgü bir konum) altındadır , oysa bir sistem kullanıcısının ana dizini genellikle altında değildir /home
ve olmayabilir (ancak istisnalar vardır).
- Çoğu site, sistem kullanıcıları için bir dizi kullanıcı kimliği ve insan kullanıcıları için ayrık bir aralık belirler. 100–65533 veya 500–65533 veya 1000–65533 ayırmak tipiktir ve çoğu dağıtım 500 veya 1000'den gerçek kullanıcı kimlikleri ayırmaya başlamak üzere ayarlanmıştır.
Hesapların birden çok makinede paylaşıldığı sitelerde, genellikle NIS veya LDAP aracılığıyla erişilebilen kullanıcı listelerini içeren merkezi bir sunucu vardır . İçindeki passwd
giriş /etc/nsswitch.conf
kullanıcı bilgilerinin nerede bulunacağını belirtir. /etc/passwd
Ağ genelinde veritabanından yerel ve gerçek kullanıcılarda sistem kullanıcılarının bulunması yaygındır , ancak bazen ağ genelinde veritabanında sistem kullanıcıları vardır (sunucu ve veri çoğaltmasını kolaylaştıran tutarlı UID'leri zorlamak için) ve bazen de yerel dosyadaki insan kullanıcılar (ağa basılı tutulduğunda bile oturum açmalarına izin vermek için).
Sistem kullanıcısı olarak gizlenen ve insan tarafından erişilebilen bir hesabın, genellikle gerçek bir adı olmaz, ancak sistem aralığında bir kullanıcı kimliği varken bir oturum açma kabuğuna ve bir parola kümesine veya SSH anahtarına sahip olur. Aslında, kaldırılması bazı hizmetlerin çalışmasının durmasına neden olacak gerçek bir sistem hesabı kullanmak daha iyi bir gizlilik olacaktır. Ancak potansiyel saldırıları tespit etmek için zor ve hızlı kurallarınız olamaz: tanım gereği, saldırganlar kurallara uymaz.
Hizmet hesapları ve insan hesapları aynı komutlarla yönetilir ve aynı dosyalara kaydedilir. Hesap oluşturma komutları, insan ve hizmet kullanıcıları için makul varsayılanları ayarlama, örneğin uygun aralıkta bir kullanıcı kimliği seçme ve bir insan için parola isteme ve bir hizmet için parola kimlik doğrulamasını devre dışı bırakma seçeneklerine sahip olabilir. Örneğin, Linux üzerinde adduser
vs adduser --system
veya useradd
vs.useradd -r