---
title: 'Ad Alanları'
source: 'https://academia.sh/tr/kurslar/cekirdek-arayuzleri/ad-alanlari'
course: 'Çekirdek Arayüzleri ve İzolasyon'
language: tr
updated: '2026-08-17T18:09:58+00:00'
license: 'CC BY-SA 4.0'
---

# Ad Alanları

Bir sürecin 24 gözlenebilir olgusu dokuz eksene dağılıyor; beş ad alanı bunların dokuzunu kapatıyor, 15'ini açık bırakıyor ve dokuz eksenden yalnız ikisini tam kapatabiliyor.

Linux Ağ Yönetimi ve Sorun Giderme kursu son dersinde bir söz bıraktı: orada bir makinenin
tek bir ağ yığını vardı, burada aynı makinede birden çok yığın kurulacak ve her arayüz, her
yönlendirme tablosu, her kural zinciri çoğalacaktı. Sistem Yönetimi kursu da iki ayrı yerde
aynı adrese işaret etmişti. Servis yöneticisi dersinde birim, yöneticinin defterindeki bir
kayıttı ve süreçlerin birbirinden yalıtılması açıkça bu kursa bırakılmıştı; kaynak
sınırları dersinde ise süreç başına konan kısıt ölçüldü ve bir süreç öbeğinin **toplamına**
konan kısıt yine buraya havale edildi. İki borç da aynı iki adı taşıyor: **ad alanı** ve
**denetim grubu**. Bu ders birincisini öder, sonraki ders ikincisini.

Ödeme biçimi alışıldık olmayacak. Önceki kurslar bir aracın ne göremediğini ve bir sınamanın
kaç adayı elediğini saydı; bu kurs bir **izolasyonun ne kadarını kapatamadığını** sayar.
Kuralı şudur: bir izolasyonun sayısı **kapattığı yüzey değil, açık bıraktığı yüzeydir**;
**neyin hâlâ görüldüğü yazılmayan izolasyon ölçülmemiş sayılır.**

## Kursun Ölçüsü ve Güvenlik Sınırı

Ölçüm üç sayıyı yan yana koyar. **Kâhin**, bir sürecin bütün gözlenebilir olgularıdır; kurguyu
biz yazdığımız için tamamı biliniyor. **İzolasyon**, düzeneklerin kapattığı olgu sayısıdır.
**Açık kalan yüzey** ise geriye kalan, sürecin hâlâ görebildiği olgulardır. Üçüncü sayı bu
kursun asıl konusudur ve hiçbir derste atlanmaz.

Bu bir **savunma ölçümüdür** ve sınırı baştan yazılır. Kurs boyunca kaçış, yetki yükseltme,
atlatma ya da sömürü yordamı yazılmaz; çalışan sömürü kodu, kavram kanıtı ya da hazır komut
dizisi verilmez. Ölçülen şey **hangi olgunun görünür kaldığıdır**, o görünürlüğün nasıl kötüye
kullanılacağı değil. Buna karşılık her açık yüzeyin yanına bir **daraltma yolu** yazılır:
bir boşluk sayıldıysa aynı derste onu küçülten düzenek de gösterilir. En az yetki ilkesi,
erişim denetimi modelleri ve tehdit modelleme yordamı Siber Güvenliğe Giriş ile Güvenli
Geliştirme Yaşam Döngüsü kurslarında kuruldu; burada yalnız **çekirdek düzeyindeki karşılığı**
ölçülür.

Model üzerindeki bütün sayılar kurgu üzerinden **tam sayımdır**, gerçek bir makinede yapılmış
ölçüm değildir. Gerçek komutlar bu derste **çalıştırılmaz**; örnek dökümler biçimi göstermek
içindir ve içlerindeki kimlik numaraları kurgudur. Hiçbir sayı iddiası örnek dökümden gelmez.

## Ad Alanı: Çekirdek Tablosunun Üzerine Konan Süzgeç

Bir makinede süreç tablosu tektir, takma noktası listesi tektir, ağ arayüzü listesi tektir.
Ad alanı ikinci bir tablo üretmez; **var olan tablonun üzerine bir görünürlük süzgeci** koyar
ve süreç o süzgecin arkasından bakar. Aynı kayıt iki ayrı ad taşıyabilir, bir kayıt bir
görünümde bulunup ötekinde bulunmayabilir, ama silinmiş olmaz.

Türler ayrı ayrı açılır ve bağımsızdır. **Süreç ad alanı** süreç numaralarını yeniden
numaralandırır: içerideki ilk süreç 1 numarayı alır ve dışarıdaki numarasından farklıdır.
**Takma ad alanı** takma noktası listesini ayırır. **Ağ ad alanı** arayüzleri, yönlendirme
tablosunu ve dinlenen bağlantı noktalarını ayırır. **Kullanıcı ad alanı** kimlikleri eşler.
**Makine ad alanı** makine adını ayırır. Bunların yanında süreçler arası iletişim nesnelerini
ve denetim grubu ağacının kökünü ayıran türler de vardır; bu ders beş türü ölçer, kalanları
adlandırıp geçer.

Bir sürecin hangi ad alanlarında olduğu süreç dosya sisteminde sembolik bağlar olarak durur.
Aşağıdaki döküm **çalıştırılmamıştır**; kimlik numaraları kurgudur ve gerçek bir makinede
başka değerler görülür.

```text
# ornek dokum — calistirilmamistir
$ ls -l /proc/self/ns
cgroup -> 'cgroup:[40001]'
ipc    -> 'ipc:[40002]'
mnt    -> 'mnt:[40003]'
net    -> 'net:[40004]'
pid    -> 'pid:[40005]'
user   -> 'user:[40006]'
uts    -> 'uts:[40007]'
```

İki sürecin aynı ad alanında olup olmadığı bu bağların gösterdiği kimliklerin eşitliğiyle
anlaşılır. Ad alanı **nesnedir**: kendisine bağlı süreç kaldığı ya da bir dosya yoluna
sabitlendiği sürece yaşar, ikisi de bitince yok olur.

Ad alanı iki yolla girilir. Yeni bir ad alanı yaratmak için süreç kendini ayırır; var olan bir
ad alanına katılmak için hedefin bağı açılır. İkisinin kabuk karşılıkları ayrı araçlardır:

```text
# ornek dokum — calistirilmamistir
$ unshare --user --pid --fork --mount-proc --uts --net ornek-komut
$ nsenter --target 8140 --pid --mount --net -- ornek-komut
$ cat /proc/8140/uid_map
         0       1000          1
```

Birinci satır yeni ad alanları yaratır. Kullanıcı ad alanının önce gelmesinin bir nedeni
vardır: yetkisiz bir kullanıcının öteki türleri açabilmesini sağlayan tek tür odur ve
içeride görünen kimlik dışarıda hiçbir yetki taşımaz. Üçüncü satırdaki eşleme tablosu bunu
gösterir — içerideki 0, dışarıdaki bir kullanıcıya karşılık gelir ve eşleme bir kez yazılıp
kapanır. İkinci satır ise tersini yapar: var olan bir ad alanına dışarıdan girer. Bu araç bir
izolasyon düzeneği değil, bir **gözlem kanalıdır** ve makine üzerinde yetki gerektirir; kursun
ikinci konusu bu tür kanalların izolasyonu ne kadar deldiğini sayar.

## Yirmi Dört Olgu, Dokuz Eksen

Ölçüm için bir sürecin görebildikleri sayılabilir bir kümeye indirilir. Kurgu, bir ölçüm
sunucusunda çalışan `olcum-toplayici` sürecidir.

- **IZ1** — Sürecin **24 gözlenebilir olgusu** vardır ve her olgu bir **eksene** aittir:
  süreç, takma, ağ, kullanıcı, makine, kaynak, çekirdek, yetki, etiket. Eksen sayısı **9**.
- **IZ2** — **Kâhin sürecin bütün olgularıdır**; kurguyu kuran taraf hepsini bilir.
- **IZ3** — Bir izolasyon düzeneği bir **süzgeçtir**: belirli bir ekseni kapatır ama o eksende
  **bir şey açık bırakabilir**.
- **IZ4** — Bir düzenek yalnız tek bir ekseni kapatır; eksenler arası yan etki modellenmez.
- **IZ5** — Bütün sayılar **tam sayımdır**; rastgelelik yoktur ve ikinci tohum kullanılmaz.
- **IZ6** — Olgular gözlenebilirlik bakımından eşit ağırlıklıdır; bir olgunun ötekinden daha
  değerli olması modellenmez.

```python
"""M03/K05 ortak tanim , bu dersin kullandigi parcalar.

Kahin = surecin butun olgulari (kurgu , biliniyor).
Izolasyon = olgularin bir altkumesini GORUNMEZ kilar.
Olculen sey: ACIK KALAN YUZEY , yani hala gorulebilen olgu sayisi.
"""

OLGULAR = [
    ("oteki-sureclerin-listesi", "surec"), ("kendi-surec-numarasi", "surec"),
    ("ata-surec-zinciri", "surec"),
    ("kok-dosya-agaci", "takma"), ("oteki-takmalar", "takma"),
    ("paylasilan-gecici-dizin", "takma"),
    ("makine-arayuzleri", "ag"), ("makine-yonlendirme-tablosu", "ag"),
    ("dinleyen-baglanti-noktalari", "ag"),
    ("kullanici-kimlik-esleme", "kullanici"), ("dosya-sahipligi", "kullanici"),
    ("makine-adi", "makine"),
    ("islemci-payi", "kaynak"), ("bellek-siniri", "kaynak"),
    ("kullanilan-bellek", "kaynak"), ("islemci-sayisi", "kaynak"),
    ("cekirdek-surumu", "cekirdek"), ("cekirdek-ayarlari", "cekirdek"),
    ("sistem-yuku", "cekirdek"), ("saat", "cekirdek"),
    ("yetenek-kumesi", "yetki"), ("dosya-yetkileri", "yetki"),
    ("erisim-etiketi", "etiket"), ("politika-kurallari", "etiket"),
]

# Her ad alani BIR ekseni kapatir ve o eksende bir sey ACIK BIRAKIR.
DUZENEK = {
    "surec-ad-alani":     {"eksen": "surec", "acik_kalan": ["kendi-surec-numarasi"]},
    "takma-ad-alani":     {"eksen": "takma", "acik_kalan": ["kok-dosya-agaci"]},
    "ag-ad-alani":        {"eksen": "ag", "acik_kalan": []},
    "kullanici-ad-alani": {"eksen": "kullanici", "acik_kalan": ["dosya-sahipligi"]},
    "makine-ad-alani":    {"eksen": "makine", "acik_kalan": []},
}
BES = list(DUZENEK)


def gorunen(duzenekler, olgular=None):
    """Duzenekler uygulandiginda hala gorulen olgular."""
    olgular = OLGULAR if olgular is None else olgular
    kapali = set()
    for d in duzenekler:
        v = DUZENEK[d]
        kapali |= {o for o, e in olgular if e == v["eksen"]}
        kapali -= set(v["acik_kalan"])
    return [o for o, _ in olgular if o not in kapali]


def acik_eksen(duzenekler, olgular=None):
    olgular = OLGULAR if olgular is None else olgular
    g = set(gorunen(duzenekler, olgular))
    return sorted({e for o, e in olgular if o in g})


eksen = sorted({e for _, e in OLGULAR})
print("KAHIN  olgu:", len(OLGULAR), "| eksen:", len(eksen), eksen)
print()
print("ad alani             eksende  kapatti  acik kalan  gorunen")
for d in BES:
    g = gorunen([d])
    n = sum(1 for _, e in OLGULAR if e == DUZENEK[d]["eksen"])
    print(f"  {d:20s} {n:7d}  {len(OLGULAR) - len(g):7d}"
          f"  {len(DUZENEK[d]['acik_kalan']):10d}  {len(g):7d}")
print()
g5 = gorunen(BES)
print("bes ad alani birlikte")
print("  gorunen olgu:", len(g5), "| acik eksen:", len(acik_eksen(BES)),
      acik_eksen(BES))
print("  tam kapanan eksen:",
      [DUZENEK[d]["eksen"] for d in BES if not DUZENEK[d]["acik_kalan"]])
```

```
KAHIN  olgu: 24 | eksen: 9 ['ag', 'cekirdek', 'etiket', 'kaynak', 'kullanici', 'makine', 'surec', 'takma', 'yetki']

ad alani             eksende  kapatti  acik kalan  gorunen
  surec-ad-alani             3        2           1       22
  takma-ad-alani             3        2           1       22
  ag-ad-alani                3        3           0       21
  kullanici-ad-alani         2        1           1       23
  makine-ad-alani            1        1           0       23

bes ad alani birlikte
  gorunen olgu: 15 | acik eksen: 7 ['cekirdek', 'etiket', 'kaynak', 'kullanici', 'surec', 'takma', 'yetki']
  tam kapanan eksen: ['ag', 'makine']
```

## İzolasyon İkili Değil, Kısmi

Üç sayı yan yana duruyor. **Kâhin:** 24 olgu, 9 eksen. **İzolasyon:** beş ad alanı birlikte
**9 olgu** kapatıyor. **Açık kalan yüzey:** **15 olgu** ve **7 eksen**.

Tablonun ilk okuması tek tek düzeneklerle ilgili. Süreç ad alanı üç olgudan ikisini kapatıp
birini açık bırakıyor: süreç öteki süreçlerin listesini ve ata zincirini göremiyor ama **kendi
numarasını** görüyor. Takma ad alanı aynı biçimde çalışıyor; öteki takmalar ve paylaşılan
geçici dizin kapanıyor, **kök dosya ağacının kendisi** görünür kalıyor. Kullanıcı ad alanı iki
olgudan yalnız birini kapatıyor: kimlik eşlemesi ayrılıyor, **dosya sahipliği** açık kalıyor.

Dokuz eksenden yalnız **ikisi tam kapanıyor** ve bu ikisi ağ ile makine ad alanıdır. Ağ ad
alanı kendi ekseninin üç olgusunu da kapatır; makine ad alanı tek olgusunu kapatır. Neden bu
ikisi olduğu modelin keyfi bir seçimi değil, kapattıkları şeyin yapısıyla ilgilidir: ağ yığını
ve makine adı, sürecin kendisine ait olmayan **dış** niteliklerdir. Süreç numarası, kök dizin
ve dosya sahipliği ise sürecin kendisinde durur; süreç kendini görmeden çalışamaz.

Bu, ortak tanımın birinci okumasıdır: **izolasyon ikili değil, kısmidir.** Bir düzeneği açmak
bir ekseni "kapattı" saymaya yetmez; her düzeneğin yanına açık bıraktığı olgu yazılmalıdır.

## Olgu Kümesi Süpürmesi

Modelde rastgelelik olmadığı için ikinci bir tohumla ölçüm tekrarlanamaz. Sonucun kurguya ne
kadar bağlı olduğu **olgu kümesini süpürerek** görülür: listeye bir olgu eklenir, bir olgu
çıkarılır ve açık yüzeyin nasıl değiştiği okunur.

- **IZ7** — Eklenen olgu `oturum-kimligi`, süreç eksenine aittir ve süreç ad alanının açık
  bıraktıklarında değildir.
- **IZ8** — Çıkarılan `dosya-sahipligi`, kullanıcı ekseninin açık kalan tek olgusudur.
- **IZ9** — İkinci çıkarma `makine-adi`, makine ekseninin tek olgusudur; çıkarıldığında eksen
  de listeden düşer.

```python
# --- Bu blok bir onceki blogun uzerine kurulur: OLGULAR, DUZENEK, BES,
# gorunen ve acik_eksen oradan gelir.
EK = OLGULAR + [("oturum-kimligi", "surec")]
EKSIK_SAHIPLIK = [(o, e) for o, e in OLGULAR if o != "dosya-sahipligi"]
EKSIK_MAKINE = [(o, e) for o, e in OLGULAR if o != "makine-adi"]

print("olgu kumesi supurmesi (bes ad alani uygulanmis halde)")
print("kume                       olgu  eksen  gorunen  acik eksen")
for ad, kume in (("temel", OLGULAR),
                 ("+oturum-kimligi/surec", EK),
                 ("-dosya-sahipligi", EKSIK_SAHIPLIK),
                 ("-makine-adi", EKSIK_MAKINE)):
    g = gorunen(BES, kume)
    e = acik_eksen(BES, kume)
    print(f"  {ad:24s} {len(kume):4d}  {len({x for _, x in kume}):5d}"
          f"  {len(g):7d}  {len(e):10d}")
```

```
olgu kumesi supurmesi (bes ad alani uygulanmis halde)
kume                       olgu  eksen  gorunen  acik eksen
  temel                      24      9       15           7
  +oturum-kimligi/surec      25      9       15           7
  -dosya-sahipligi           23      9       14           6
  -makine-adi                23      8       15           7
```

Süpürme iki ayrı şey söylüyor. Birincisi: kapatılan bir eksene olgu **eklemek** açık yüzeyi
büyütmüyor. Süreç ekseni yirmi beşinci olguyla dört olguya çıktı, süreç ad alanı üçünü birden
kapattı ve görünen olgu 15'te kaldı. İkincisi ve önemlisi: **açık kalan tek olguyu çıkarmak
bütün ekseni kapatıyor.** Dosya sahipliği listeden düştüğünde kullanıcı ad alanı kendi
ekseninin tamamını kapatıyor, açık eksen 7'den **6'ya** iniyor ve görünen olgu 14'e düşüyor.

Bu, ölçünün nereye duyarlı olduğunu gösteriyor: açık yüzeyi belirleyen şey olgu sayısı değil,
hangi olguların **açık kalan** olarak işaretlendiğidir. Üçüncü satır bunu tersinden doğruluyor;
makine adı çıkarıldığında eksen listeden düşüyor, makine ad alanı hiçbir şey kapatmayan bir
düzeneğe dönüşüyor ve görünen olgu yine 15 oluyor. Kapatacak şeyi olmayan bir düzenek yüzeyi
daraltmaz, yalnız yapılandırmayı büyütür.

## Açık Kalan Üçü ve Daraltma Yolları

Beş ad alanının açık bıraktığı 15 olgunun üçü doğrudan bu derse aittir; kalan on ikisi kaynak,
çekirdek, yetki ve etiket eksenlerindedir ve sonraki dört dersin konusudur. Üçünün her birinin
yanına bir daraltma yolu yazılır.

**Kendi süreç numarası** açık kalır ve kapatılamaz; süreç kendi numarasını bilmeden sinyal
alamaz, çocuk toplayamaz. Buradaki daraltma sayıyı gizlemek değil, **sayının anlamını
sızdırmamaktır**: süreç dosya sistemi içeride yeniden takılır ve dışarıdaki numaralara açılan
bir yol bırakılmaz; günlüklere yazılan numaraların hangi ad alanına ait olduğu ayrıca yazılır.
Aynı sürecin içeride 1, dışarıda başka bir numara taşıması bir arıza değil, ölçmenin kuralıdır.

**Kök dosya ağacı** açık kalır, çünkü sürecin bir kökü olmak zorundadır. Daraltma yolu kökün
**neyi içerdiğini** küçültmektir: kök salt okunur takılır, yazılabilir alan ayrı ve geçici bir
takmaya verilir, gereksiz aygıt düğümleri ve yardımcı programlar konmaz. Takma seçeneklerinden
`nosuid`, `nodev` ve `noexec` bu daraltmanın en ucuz üç adımıdır ve Sistem Yönetimi kursundaki
kalıcı takma girdisiyle aynı yerde yazılır.

**Dosya sahipliği** açık kalır, çünkü kimlik eşlemesi sürecin gördüğü sayıları değiştirir ama
diskteki sahiplik alanlarını değiştirmez. Daraltma yolu eşlemeyi dosya sistemine kadar
taşımaktır: kök dosya ağacının sahipliği eşlenen aralığa göre normalleştirilir, paylaşılan
dizinler ya salt okunur verilir ya da hiç verilmez. Bu ders bir yüzeyi saymakla kalmaz; her
satırında onu küçülten bir yapılandırma kararı da bırakır.

## Özet

- Bu kurs bir izolasyonun **açık bıraktığı yüzeyi** ölçer; neyin hâlâ görüldüğü yazılmayan
  izolasyon ölçülmemiş sayılır. Ölçüm bir savunma ölçümüdür ve her açık yüzeyin yanına bir
  daraltma yolu yazılır.
- Ad alanı ikinci bir tablo üretmez; var olan çekirdek tablosunun üzerine bir **görünürlük
  süzgeci** koyar ve süreç o süzgecin arkasından bakar.
- Kâhin **24 olgu ve 9 eksendir**; beş ad alanı birlikte **9 olgu** kapatır, **15 olgu** ve
  **7 eksen** açık kalır.
- Tek başına hiçbir ad alanı kendi eksenini tam kapatmaz; **ağ ve makine ad alanı** bunu
  yapabilen tek ikilidir. Süreç ad alanı `kendi-surec-numarasi`, takma ad alanı
  `kok-dosya-agaci`, kullanıcı ad alanı `dosya-sahipligi` olgusunu açık bırakır.
- Olgu kümesi süpürmesi ölçünün duyarlı olduğu yeri gösteriyor: kapalı bir eksene olgu eklemek
  yüzeyi büyütmüyor, açık kalan tek olguyu çıkarmak ekseni kapatıp açık ekseni **7'den 6'ya**
  indiriyor.
- Sistem Yönetimi ile Linux Ağ Yönetimi ve Sorun Giderme kurslarında bu kursa bırakılan
  borcun birinci yarısı ödendi; ikinci yarısı denetim grubudur.

## Sonraki Adım

Beş ad alanı görünürlüğü daralttı ama tüketimi hiç sınırlamadı: içerideki süreç makinenin
işlemcisini, belleğini ve girdi/çıktı bant genişliğini olduğu gibi kullanabilir. Kaynak ekseni
bu yüzden dört olgusuyla tümüyle açık duruyor. Sonraki ders bu ekseni kapatan düzeneği,
denetim grubunu ele alır: kaynak sınırlandırmayı muhasebeden ayırır, Sistem Yönetimi kursunda
ölçülen süreç başına kısıttan farkını yazar ve dört kaynak olgusundan üçünü kapatıp
`islemci-sayisi` olgusunu neden açık bıraktığını sayar. Açık kalan o tek olgu, kendi iş
parçacığı havuzunu makinenin işlemci sayısına göre boyutlandıran her programın sessizce yanlış
hesap yapmasına yeter.
