Kullanıcı ve hizmet hesabı arasındaki fark nedir?


17

Kullanıcı ve hizmet hesabı arasındaki farkı bilmek istiyorum.

Ben Jenkinsubuntu yüklü örneğin bir kullanıcı değil, hizmet hesabı olduğunu biliyorum .

  1. Hizmet hesabının kullanımı nedir?
  2. Onlara ihtiyacımız olduğunda?
  3. Hizmet hesabını nasıl oluşturabilirim?

Yanıtlar:


19

Kullanıcı hesapları gerçek kullanıcılar tarafından kullanılır, hizmet hesapları web sunucuları, posta aktarım aracıları, veritabanları vb. Gibi sistem hizmetleri tarafından kullanılır. . UID 0 dışında, hizmet hesaplarının özel ayrıcalıkları yoktur. Hizmet hesapları, aygıtın özel dosyalarını bile olsa belirli kaynaklara sahip olabilir ve genellikle bunlara sahip olabilir, ancak süper kullanıcı benzeri ayrıcalıklara sahip değildir.

Hizmet hesapları, normal kullanıcı hesapları gibi oluşturulabilir (örn. Kullanarak useradd). Bununla birlikte, hizmet hesapları genellikle hizmet yazılımının yüklenmesi üzerine paket yöneticisi tarafından oluşturulur ve yapılandırılır. Bu nedenle, bir yönetici olarak bile, nadiren doğrudan hizmet hesaplarının oluşturulmasıyla ilgilenmelisiniz.

İyi bir nedenden ötürü: Kullanıcı hesaplarının aksine, hizmet hesaplarında genellikle "uygun" bir oturum açma kabuğu yoktur, yani /usr/sbin/nologinoturum açma kabuğu (veya eski günlerde /bin/false) vardır. Ayrıca, servis hesapları genellikle kilitli, yani o (geleneksel için giriş mümkün değildir /etc/passwdve /etc/shadowbu gibi keyfi değerlere şifre karma ayarlayarak elde edilebilir *ya da x). Bu, hizmet hesaplarını kötüye kullanıma ( derinlemesine savunma ) karşı sertleştirmek içindir .

Her hizmet için ayrı hizmet hesaplarına sahip olmak iki ana amaca hizmet eder: Tek bir hizmetle ilgili bir olay ( bölümlendirme ) durumunda etkisini azaltmak için bir güvenlik önlemidir ve hangi hizmete hangi kaynakların ait olduğunu izlemek daha kolay hale geldiğinden yönetimi kolaylaştırır . Daha fazla ayrıntı için ilgili soruların şu veya bu yanıtlarına bakın.


5

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/shVeya /bin/bashveya /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 foogerektirir 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/passwdbaş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 /homeve 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 passwdgiriş /etc/nsswitch.confkullanıcı bilgilerinin nerede bulunacağını belirtir. /etc/passwdAğ 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 adduservs adduser --systemveya useraddvs.useradd -r


3
    1. teknik hesap, diğer bir deyişle teknik hesap, normal bir kullanıcı tarafından değil, yalnızca bir hizmet / uygulama tarafından kullanılmak üzere tasarlanmış bir hesaptır.
    1. Uygulama ve hizmet geliştiricileri, bu hesapların işlemlerini kök olarak çalıştırmak yerine ilişkili işlem haklarını ve ayrıcalıklarını kısıtlamasını ister. Tarafından başlatılmış gibi hizmetler init, systemdroot olarak çalıştırmak veya benzer, çabucak riskleri sınırlamak için hizmet hesabına düşürün. Kullanılan işletim sistemine bağlı olarak, uygulama hesaplarına normal hesaplardan daha fazla ayrıcalık tanınabilir, örneğin ayrıcalıklı bir TCP bağlantı noktasına bağlanma hakkı veya tam tersi gibi ayrıcalıklarının normal bir kullanıcıya kıyasla azaltılması, örneğin hizmet işlemlerinin reddedilmesi çağrı fork/ exec. Böyle bir durumda, hizmetlerin hizmet hesabına indirilmesine gerek yoktur, bu hesaplarla başlatılabilir.
    1. Kullanılabilir bir parola ve çalışmayan bir kabuk (örneğin /bin/false) olmadan bir hesap oluşturmanız gerekmez, ancak normal bir kullanıcı tarafından kullanılamaz, yani yerel veya uzaktan oturum açmanın bir yolu olmayacaktır (ör. aracılığıyla ssh) hesap adını kullanarak. Çoğu sınırlama gibi, kök hesabı kullanmak veya sudoüstesinden gelmek için izin verir.

1

Bir hizmet hesabının, örneğin bir kabuk kullanma yeteneği olmayabilir. Sınırlı kapsam ve ayrıcalıkla hizmetleri (arka plan programı) yürütmek için kullanılır. Benim düşünceme göre, haklara ve grup üyeliğine dikkat ederek onu normal bir kullanıcı olarak oluşturabilirsiniz. Ancak, çoğu zaman yapmazsınız çünkü programlar kurulum sırasında bunları otomatik olarak oluşturur. Bir göz atın/etc/passwd root:x:0:0:root:/root:/bin/bash

0 UID, kullanıcı alanındaki hesabın hiyerarşisini karakterize eder, kök herkesin üzerindedir, daha sonra grup üyeliğine :rootgiriş dizini /rootnihayet /bin/bashsistem tarafından 'oturum açmak' için hesap tarafından kullanılan kabuk vardır .

Sen kullanabilirsiniz /usr/sbin/nologiniçin giriş ayrıcalığını istemiyoruz bir hesap için.

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.