PID Namespace
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
PID (Process IDentifier) namespace, Linux çekirdeğinde, bir grup sürecin kendi benzersiz PID'lerine sahip olmasını sağlayarak süreç izolasyonu sağlayan bir özelliktir. Bu, süreç izolasyonunun güvenlik ve kaynak yönetimi için hayati olduğu konteynerleştirmede özellikle yararlıdır.
Yeni bir PID namespace oluşturulduğunda, o namespace içindeki ilk süreç PID 1 ile atanır. Bu süreç, yeni namespace'in "init" süreci haline gelir ve namespace içindeki diğer süreçleri yönetmekten sorumludur. Namespace içinde oluşturulan her bir sonraki süreç, o namespace içinde benzersiz bir PID alacak ve bu PID'ler diğer namespace'lerdeki PID'lerden bağımsız olacaktır.
Bir PID namespace içindeki bir süreç açısından, yalnızca aynı namespace içindeki diğer süreçleri görebilir. Diğer namespace'lerdeki süreçlerden haberdar değildir ve geleneksel süreç yönetim araçları (örneğin, kill
, wait
, vb.) kullanarak onlarla etkileşimde bulunamaz. Bu, süreçlerin birbirine müdahale etmesini önlemeye yardımcı olan bir izolasyon seviyesi sağlar.
Yeni bir süreç oluşturulduğunda (örneğin, clone()
sistem çağrısı kullanılarak), süreç yeni veya mevcut bir PID namespace'ine atanabilir. Yeni bir namespace oluşturulursa, süreç o namespace'in "init" süreci olur.
Çekirdek, yeni namespace'deki PID'ler ile ana namespace'deki (yani yeni namespace'in oluşturulduğu namespace) karşılık gelen PID'ler arasında bir eşleme tutar. Bu eşleme, çekirdeğin gerekli olduğunda PID'leri çevirmesine olanak tanır, örneğin farklı namespace'lerdeki süreçler arasında sinyaller gönderirken.
Bir PID namespace içindeki süreçler yalnızca aynı namespace içindeki diğer süreçleri görebilir ve onlarla etkileşimde bulunabilir. Diğer namespace'lerdeki süreçlerden haberdar değillerdir ve PID'leri kendi namespace'lerinde benzersizdir.
Bir PID namespace yok edildiğinde (örneğin, namespace'in "init" süreci çıktığında), o namespace içindeki tüm süreçler sonlandırılır. Bu, namespace ile ilişkili tüm kaynakların düzgün bir şekilde temizlenmesini sağlar.
Yeni bir /proc
dosya sisteminin örneğini --mount-proc
parametresini kullanarak monte ettiğinizde, yeni montaj ad alanının o ad alanına özgü süreç bilgilerini doğru ve izole bir şekilde görmesini sağlarsınız.
Başlangıç (varsayılan) PID ad alanındaki root kullanıcısının, yeni PID ad alanlarındaki süreçler de dahil olmak üzere tüm süreçleri görebileceğini unutmayın, bu yüzden tüm PID ad alanlarını görebiliyoruz.
PID ad alanına varsayılan ad alanından girdiğinizde, tüm süreçleri görebilirsiniz. Ve o PID ns'deki süreç, PID ns'deki yeni bash'i görebilecektir.
Ayrıca, başka bir süreç PID ad alanına yalnızca root iseniz girebilirsiniz. Ve bir tanımlayıcı olmadan başka bir ad alanına giremezsiniz (örneğin /proc/self/ns/pid
gibi).
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)