çekirdek: Ad alanları desteği


15

Linux çekirdeğindeki “Ad Alanları desteği” özelliğinin tam olarak ne anlama geldiğini merak ediyorum. Çekirdek 3.11.1'i kullanıyorum (şu anda en yeni kararlı çekirdek).

Devre dışı bırakmaya karar verirsem, sistemimde herhangi bir değişiklik fark eder miyim?

Birisinin isim alanlarını kullanmaya karar vermesi durumunda, sadece NAMESPACES=Yçekirdeği derlemek yeterli mi yoksa kullanıcı alanı araçlarına da ihtiyacı var mı?


5
Ad alanları burada oldukça iyi açıklanmıştır: lwn.net/Articles/531114 (cevap değil, çünkü sorularınızı gerçekten cevaplamıyorum - sizi bir metin yığınına işaret ediyorum)
derobert

Yanıtlar:


21

Özetle, ad alanları daha büyük bir Linux sistemi içinde sanal bir Linux sistemi kurmak için bir yol sağlar. Bu, ayrıcalıksız bir işlem olarak çalışan bir sanal makineyi çalıştırmaktan farklıdır: sanal makine ana bilgisayarda tek bir işlem olarak görünürken, bir ad alanı içinde çalışan işlemler hala ana bilgisayar sisteminde çalışıyor.

Daha büyük bir sistemin içinde çalışan sanal sisteme konteyner denir . Bir kap fikri, kap içinde çalışan işlemlerin sistemdeki tek işlem olduğuna inanmalarıdır. Özellikle, kapsayıcı içindeki kök kullanıcının kapsayıcı dışında kök ayrıcalıkları yoktur (bunun yalnızca çekirdeğin son yeterli sürümlerinde geçerli olduğunu unutmayın).

Ad alanları aynı anda bir özelliği sanallaştırır. Ad alanı türlerine bazı örnekler:

  • Kullanıcı ad alanları - bu, işlemlerin ad alanının içinde ve dışında farklı kullanıcılar gibi davranmasını sağlar. Özellikle, ad alanında UID 0 olarak çalışan işlemler, yalnızca aynı ad alanında çalışan işlemlere göre süper kullanıcı ayrıcalıklarına sahiptir.
    Linux çekirdeği 3.8'den beri, ayrıcalıksız kullanıcılar kullanıcı ad alanları oluşturabilir. Bu, sıradan bir kullanıcının kök dizinine ayrılmış özellikleri (yönlendirme tablolarını değiştirme veya ayar yetenekleri gibi) kullanmasına olanak tanır.
  • PID ad alanları - PID ad alanı içindeki işlemler, bu ad alanının dışındaki işlemleri öldüremez veya izleyemez.
  • Ad alanlarını bağla - bu, işlemlerin dosya sistemi hakkında kendi görünümüne sahip olmasını sağlar. Bu görünüm, dizin sisteminin farklı yerlerde görünmesi için dosya sisteminin bazı parçalarının gizlenmesine ve parçaların yeniden oluşturulmasına izin veren kısmi bir görünüm olabilir. Bağlama ad alanları , işlemlerin belirli bir alt ağaçla kısıtlanmasını sağlayan geleneksel Unix özellik krootunu genelleştirir .
  • Ağ ad alanları - ağ kaynaklarının (ağ aygıtları) ayrılmasına izin verir ve böylece işlemlerin yalıtımını artırır.

Ad alanları, ad alanları arasında yalıtım sağlamak için çekirdeğe güvenir. Bu haklı olmak için oldukça karmaşıktır, bu yüzden hala etrafta güvenlik hataları olabilir. Güvenlik hataları riski, özelliğin etkinleştirilmemesinin başlıca nedeni olacaktır. Etkinleştirmemenin bir başka nedeni, gömülü bir aygıt için küçük bir çekirdek oluştururken olabilir. Tipik bir sunucuya veya iş istasyonuna kuracağınız genel amaçlı bir çekirdekte, diğer olgun çekirdek özellikleri gibi ad alanlarının etkinleştirilmesi gerekir.

Ad alanlarını kullanan hala az sayıda uygulama vardır. Burda biraz var:

Daha fazla bilgi için Michael Kerrisk'in LWN makale dizisine bakınız .


6

Linux çekirdek ad alanı, bir sistem kaynağına erişim açısından bir grup süreci diğerlerinden izole etmek için kullanılan bir kavramdır. Örneğin, iki farklı PID ad alanı özdeş PID'lere sahip ancak tamamen farklı işlem görüntüsüne sahip işlemler içerebilir. Genellikle tek bir çekirdeğin aynı anda çeşitli işletim sistemlerini çalıştırdığı OS düzeyinde sanallaştırmada kullanılırlar - hepsinin Linux tabanlı olması gerekir (çünkü çekirdeği açıkça paylaştıkları için), ancak farklı dağıtımlar ve sürümler olabilir. Bkz. Örneğin LXC .

Systemd, kapsayıcı özelliği için ad alanlarını kullanabildiğinden, örneğin systemd tabanlı sistemlerde devre dışı bırakmayı fark edebilirsiniz . Bu nedenle, birçok şey hangi dağıtımı kullandığınıza ve sistemle ne yapmak istediğinize bağlıdır.

Hemen hemen her çekirdek özelliğinde olduğu gibi, kesinlikle bir çeşit kullanıcı alanı programına ihtiyacınız vardır - özel dosyalarla çekirdekle konuşsanız bile (yapabileceğinizden emin değilim), özel araçlara güvenmek genellikle daha iyi bir fikirdir, çünkü bunlar ön dostu API sunuyoruz.


1

SELinux (MLS veya Strict) özellikli sistemlerde ad alanı kullanımına bir örnek vermek için. Ad alanı genellikle her kullanıcı için bireysel /tmpve / veya /homedizinler oluşturmak için kullanılır . Bu dizinler yalnızca kullanıcı tarafından görülebilir: kullanıcı, aynı etikete sahip kullanıcılar, çekirdek ve ayrıcalıklı erişime sahip kullanıcılar. Namespace-ed /tmpdizini, kullanıcının SELinux-MLS etiketiyle eşleşmesi için SELinux-MLS tarafından etiketlenir. Bu senaryoda, /tmpkullanıcının gördüğü dizin gerçekten /tmp( /var/user-tmp) dışında bir yere bağlanabilir . Ancak kullanıcı yalnızca /tmpkullanıcının etkinliği nedeniyle oluşturulan dosyaları görür . kullanıcı hiçbir zaman /tmpdiğer kullanıcıların ürünü olan dosyaları görmez .

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.