---
title: 'Yetki Yükseltme'
source: 'https://academia.sh/tr/kurslar/linuxa-giris/yetki-yukseltme'
course: "Linux'a Giriş"
language: tr
updated: '2026-08-17T18:09:57+00:00'
license: 'CC BY-SA 4.0'
---

# Yetki Yükseltme

Süper kullanıcının denetim atlama ayrıcalığı, kullanıcı değiştirme ile komut başına yetki devri arasındaki fark, yetki devri politikasının yapısı ve en az yetki ilkesi.

Önceki derste sahip devri "Operation not permitted" ile reddedildi. Bazı işlemler kök
yetkisi ister; ama kök hesabıyla oturum açıp gün boyu çalışmak, her yazım hatasının tüm
sistemi etkileyebilmesi demektir.

Bu ders yetkinin nasıl **geçici ve sınırlı** biçimde alındığını ele alır. Konu bir komut
öğrenmekten çok bir ilke uygulamaktır: bir işlem için gereken en dar yetki, gereken en kısa
süre için alınır.

## Süper Kullanıcı

Kullanıcı kimliği sıfır olan hesap **süper kullanıcıdır**. Ayrıcalığı, çekirdeğin izin
denetimlerinin çoğunu bu kimlik için atlamasından gelir: dosya izinlerine bakılmaz,
sahiplik değiştirilebilir, ayrıcalıklı bağlantı noktaları açılabilir, dosya sistemleri
bağlanabilir.

Ayrıcalık sınırsız değildir. Salt okunur takılmış bir dosya sistemine kök kullanıcı da
yazamaz; donanım düzeyinde yazma korumalı bir aygıta yazamaz. Bunlar izin denetimi
değildir, dolayısıyla atlanamazlar.

Kök hesabıyla sürekli çalışmanın üç somut sakıncası vardır:

**Hata yarıçapı.** Yanlış dizinde çalıştırılan yıkıcı bir komut, sıradan kullanıcıda kendi
dosyalarıyla sınırlı kalır; kök kullanıcıda sınır yoktur.

**Denetim izi.** Kök oturumunda yapılan işlem, hangi kişinin yaptığını kaydetmez. Birden çok
yöneticinin bulunduğu sistemlerde bu, sorunun kaynağını bulmayı olanaksızlaştırır.

**Yanlışlıkla kalıcı etki.** Kök hesabıyla oluşturulan dosyalar kök kullanıcıya ait olur.
Ev dizininde kök hesabıyla oluşturulmuş bir dosya, sıradan kullanıcı için erişilemez bir
artık bırakır.

Çoğu kurulumda kök hesabında parola tanımlı değildir ve doğrudan oturum açılamaz. Yetki,
aşağıdaki iki yoldan biriyle alınır.

## Kullanıcı Değiştirme

`su` komutu, mevcut oturumun içinde **hedef kullanıcıya** geçer ve yeni bir kabuk açar.
Doğrulama için **hedef kullanıcının parolası** sorulur.

```
$ su -
Password: su: Authentication failure
```

Baştaki tire önemlidir: verildiğinde hedef kullanıcının oturum açma ortamı da kurulur —
ev dizini, `PATH` ve diğer ortam değişkenleri hedef hesabınkine ayarlanır. Verilmediğinde
kullanıcı değişir ama ortam eski kullanıcınınki kalır ve bu karışıklık kaynağıdır.

Yaklaşımın iki zayıflığı vardır. Birincisi, kök parolasının paylaşılmasını gerektirir;
parolayı bilen herkes her şeyi yapabilir ve parola değiştirildiğinde herkese yeniden
dağıtılması gerekir. İkincisi, açılan kabukta yapılan işlemler tek tek kaydedilmez.

## Komut Başına Yetki Devri

`sudo` farklı bir modeldir: kullanıcı **kendi parolasıyla** doğrulanır ve bir politika
dosyasında tanımlanmış komutları, tanımlanmış bir hesabın yetkisiyle çalıştırır.

```
$ sudo id
[sudo] password for ogrenci: 
uid=0(root) gid=0(root) groups=0(root)
```

Komut kök kimliğiyle çalışmıştır. Parola sorulan hesap `ogrenci`'dir; kök parolası
bilinmemektedir ve gerekmemiştir.

Doğrulama bir süre önbelleklenir: aynı oturumda kısa süre içinde verilen ikinci komutta
parola yeniden sorulmaz. Önbellek `sudo -k` ile temizlenir; yukarıdaki örneklerde her
denemeden önce bu yapılmıştır.

İki modelin karşılaştırması:

| Ölçüt | `su` | `sudo` |
|---|---|---|
| Sorulan parola | Hedef hesabın | Kendi hesabının |
| Kapsam | Tüm kabuk oturumu | Tek komut |
| Sınırlanabilirlik | Yok, tam yetki | Politikayla komut düzeyinde |
| Kayıt | Oturum düzeyinde | Komut düzeyinde |
| Parola paylaşımı | Gerekir | Gerekmez |

## Politikayı Okumak

Kullanıcının hangi komutları çalıştırabildiği sorulabilir:

```
$ sudo -l
[sudo] password for ogrenci: 
Matching Defaults entries for ogrenci on makine:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin,
    use_pty

User ogrenci may run the following commands on makine:
    (root) /usr/bin/id, /usr/bin/chown
```

Son satır politikanın özüdür. Parantez içindeki `root`, komutun hangi hesabın yetkisiyle
çalışacağını; devamı ise izin verilen komutların tam yollarını gösterir. Bu kullanıcı kök
yetkisiyle yalnızca iki programı çalıştırabilir.

Politika satırlarının genel biçimi dört parçalıdır: hangi kullanıcı, hangi makinede, hangi
hesap adına, hangi komutlar. Kullanıcı yerine grup adı da yazılabilir; yönetici yetkisi
çoğunlukla belirli bir gruba üyelik üzerinden verilir. Parola sorulmadan çalışmasına izin
veren bir işaret de vardır ve otomatik çalışan işler için kullanılır.

Politika dosyası doğrudan düzenlenmez. Sözdizimi hatası içeren bir politika, sistemde hiç
kimsenin yetki alamamasına yol açar; bu nedenle dosya, kaydetmeden önce sözdizimini
denetleyen özel bir araçla düzenlenir.

## En Az Yetki İlkesi

Politikanın dar tutulması, izin verilmeyen bir komutta doğrudan görünür:

```
$ sudo cat /etc/shadow
[sudo] password for ogrenci: 
Sorry, user ogrenci is not allowed to execute '/usr/bin/cat /etc/shadow' as root on makine.
```

**En az yetki ilkesi**, her özneye görevini yapmak için gereken en dar yetkinin verilmesini
söyler. Uygulamada bu, politikada "tüm komutlar" yerine belirli komutların sayılması
demektir.

İlke, uygulanması göründüğünden zor bir ilkedir çünkü bazı komutlar dar görünüp geniş yetki
taşır:

**Kabuk açabilen komutlar.** Metin editörlerinin ve sayfalayıcıların çoğu, içinden komut
çalıştırma özelliği taşır. Kök yetkisiyle çalıştırılmasına izin verilen bir editör, kök
kabuğu vermeye eşdeğerdir.

**Argümanı serbest bırakılan komutlar.** Yukarıdaki politikada `chown` için argüman
kısıtlanmamıştır; kullanıcı istediği dosyanın sahibini değiştirebilir, dolayısıyla sistem
dosyalarının sahipliğini kendine geçirebilir. Politika dar görünse de sonucu geniştir.

**Dosya yazan komutlar.** Kök yetkisiyle herhangi bir dosyaya yazabilen bir komut, hesap
dosyasına satır ekleyerek yeni bir ayrıcalıklı kullanıcı oluşturabilir.

Politika yazarken sorulacak soru "bu komut zararlı mı" değil, **"bu komutla kök kabuğu elde
edilebilir mi"**dir.

## Ortamın Temizlenmesi

Politika çıktısındaki `env_reset` ve `secure_path` ayarları, yetki devrinin sessiz ama
kritik bir parçasıdır. Komut yolu dersindeki gölgeleme, tam olarak burada saldırıya
dönüşürdü:

```
$ printf '#!/bin/sh\necho sahte kimlik\n' > /tmp/deneme/id
$ chmod +x /tmp/deneme/id
$ PATH="/tmp/deneme:$PATH"
$ id
sahte kimlik
$ sudo id
[sudo] password for ogrenci: 
uid=0(root) gid=0(root) groups=0(root)
```

Kullanıcının kendi oturumunda `id` adı sahte programa çözülmüştür. Yetkili çalıştırmada ise
gerçek program çalışmıştır: yetki devri aracı, kullanıcının `PATH` değerini yok sayıp
politikada tanımlı güvenli listeyi kullanmıştır.

Bu olmasaydı, "yalnızca `id` çalıştırabilir" biçimindeki bir politika hiçbir şey ifade
etmezdi; kullanıcı kendi yazdığı `id` adlı programı kök yetkisiyle çalıştırırdı. Ortam
değişkenlerinin de sıfırlanması aynı gerekçeye dayanır: kütüphane arama yolu gibi
değişkenler, çalıştırılan programın davranışını dışarıdan değiştirebilir.

Aynı gerekçe, sıradan kullanıcı için de geçerli bir alışkanlık doğurur: yetkili
çalıştırılacak komutlar tam yollarıyla yazılır.

## Özet

- Süper kullanıcı, çekirdeğin izin denetimlerinin çoğunu atlar; salt okunur bağlama gibi
  izin dışı kısıtları atlamaz.
- Kök hesabıyla sürekli çalışmak hata yarıçapını büyütür, denetim izini yok eder ve
  erişilemez artıklar bırakır.
- `su` hedef hesabın parolasını ister ve tüm oturumu devreder; `sudo` kendi parolasını ister
  ve komut başına, politikayla sınırlı yetki verir.
- Politika dört parçadan oluşur: kullanıcı, makine, adına çalışılan hesap ve izin verilen
  komutlar.
- En az yetki ilkesinde ölçüt, komutun zararlı görünüp görünmemesi değil, o komutla kök
  kabuğu elde edilip edilemeyeceğidir.
- Yetki devri aracı `PATH` ve ortam değişkenlerini sıfırlar; aksi hâlde komut adı
  gölgelenerek politika etkisiz hâle getirilebilirdi.

## Sonraki Adım

Yetki devri, bir komutu başka bir kimlikle çalıştırmanın dışarıdan yapılandırılan yoluydu.
Aynı etkinin dosyanın kendi üstverisine gömülü bir biçimi de vardır: kullanıcılar dersinde
görülen `-rwsr-xr-x` dizesindeki `s` harfi. Sonraki ders bu üç ek biti — çalıştıranın
kimliğini değiştiren iki bit ile dizinlerdeki silme yetkisini daraltan bir bit — ele alarak
konuyu kapatır.
