pkexec, /etc/shells ve Polkit İlişkisi

Bu belge, pkexec komutunun çalışması için gerekli olan /etc/shells bağlantısını, Polkit ile olan ilişkisini ve doğru yapılandırma adımlarını açıklar.

1 — Temel İlişki

  • pkexec, bir komutu yönetici yetkileri ile çalıştırmak için kullanılır.

  • Arka planda Polkit (PolicyKit) kullanarak yetkilendirme yapar.

  • Yetkilendirme sırasında PAM (Pluggable Authentication Modules) kullanılır.

  • Birçok PAM yapılandırması, kullanıcının giriş kabuğunun /etc/shells içinde listelenmiş olmasını zorunlu kılar.

Not

Eğer kullandığınız kabuk (örn. /bin/bash, /bin/zsh, /usr/bin/fish) /etc/shells içinde yoksa pkexec ile kimlik doğrulama başarısız olabilir.

2 — /etc/shells Dosyasını Kontrol Etme

Geçerli kabuğunuz:

echo $SHELL

Kabuğun /etc/shells içinde olup olmadığını kontrol edin:

grep "$(basename $SHELL)" /etc/shells

Eksikse ekleyin:

sudo sh -c 'echo /bin/bash >> /etc/shells'

Uyarı

Güvenlik sebebiyle yalnızca gerçek kabuk programlarının yolunu ekleyin. Rastgele betikler veya çalıştırılabilir dosyalar eklenmemelidir.

3 — Polkit ile Bağlantı

  • pkexec çalışırken Polkit üzerinden yetki ister.

  • Polkit kuralları ile hangi kullanıcı veya grubun yetki alabileceğini belirleyebilirsiniz.

  • Eğer kullanıcı grubunuz Polkit tarafından admin olarak tanınmıyorsa, pkexec ile çalıştırma yetkiniz olmayabilir.

4 — Wheel Grubunu Yönetici Olarak Tanımlama

1) Dosya oluşturun:

/etc/polkit-1/rules.d/40-wheel-admin.rules

İçeriği:

/* Mark wheel group as administrators (use own password) */
polkit.addAdminRule(function(action, subject) {
    if (subject.isInGroup("wheel")) {
        return ["unix-group:wheel"];
    }
});

2) Dosya izinlerini ayarlayın:

sudo chown root:root /etc/polkit-1/rules.d/40-wheel-admin.rules
sudo chmod 0644 /etc/polkit-1/rules.d/40-wheel-admin.rules

3) Kullanıcınızı wheel grubuna ekleyin:

sudo usermod -aG wheel $USER
  1. Oturumu kapatıp tekrar açın.

5 — Test

1) pkexec komutunu çalıştırın:

pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY xterm
  1. Parola soruluyorsa ve yetkilendirme başarılı oluyorsa ayarlarınız tamamdır.

6 — Özet

  • pkexec → Polkit kullanarak yetkilendirme yapar.

  • Polkit → PAM üzerinden kimlik doğrular.

  • PAM → Kullanıcı kabuğunun /etc/shells içinde olmasını bekler.

  • /etc/shells → Geçerli kabuğunuz burada yoksa pkexec başarısız olur.

  • Polkit kuralları ile hangi kullanıcı/grupların yetki alacağı belirlenir.

Kaynaklar:

- Polkit Dokümantasyonu: https://www.freedesktop.org/software/polkit/docs/latest/
- Arch Wiki — Polkit: https://wiki.archlinux.org/title/Polkit
- Arch Wiki — Sudo: https://wiki.archlinux.org/title/Sudo
- PAM /etc/shells: https://linux.die.net/man/5/shells