Polkit

Polkit yetkisiz uygulamaların yetkili olan uygulamalar ile iletişim kurmasını sağlayan bir araçtır. Örneğin gparted gibi uygulamaları başlatmak için pkexec komutu ile root yetkisi sağlanır.

Kurulum

ymp ile polkit yüklemek için aşağıdaki komut kullanılır:

$ ymp install polkit

Ardından polkitin servisi için gereken dosyalara suid yetkisi verelim.

$ chmod 4755 /usr/bin/pkexec
$ chmod 4755 /usr/lib/polkit-1/polkit-agent-helper-1

Sonra servisi etkinleştirelim.

$ rc-update add polkit # açılışta başlaması için
$ rc-service polkit start # başlatmak için

Polkit-agent

Kullandığınız masaüstüne göre polkit-agent yüklemeniz gereklidir. Aşağıda tablo olarak gerekenler verilmiştir.

Polkit Agent Listesi

Masaüstü

paket

sağladığı komut

Kde

polkit-kde-agent

/usr/lib64/libexec/polkit-kde-authentication-agent-1

lxde

lxsession

/usr/bin/lxpolkit

cinnamon

polkit-gnome

/usr/libexec/polkit-gnome-authentication-agent-1

xfce

xfce-polkit

/usr/libexec/xfce-polkit

Not: polkit agent desdeği olmayan masaüstülerde polkit-gnome kullanabilirsiniz.

Kurallar

Polkit kural dosyaları /usr/share/polkit/rules.d/ ve /etc/polkit/rules.d dizinlerinde bulunur. Bu dizinlere kurallar ekleyebilirsiniz. Örneğin test gurubundaki herşeye yetki vermek için :

polkit.addRule(function(action, subject) {
    if (subject.isInGroup("test")) {
      return polkit.Result.YES;
  }
});

Not: Yukarıdaki örnek sadece konuyu anlatmak içindir. Güvenlik sorunlarına sebep olabilir.

Eylemler

Kural dosyalarına benzer şekilde eylem dosyaları da bulunur. Bu dosyalar ise /usr/share/polkit-1/actions içerisinde bulunur.

Örneğin:

<policyconfig>
  <vendor>Test Vendor</vendor>
  <vendor_url>https://example.org</vendor_url>
  <action id="org.turkman.test.application">
    <description>Test application</description>
    <message>Authentication is required for test application</message>
    <message xml:lang="tr">Test uygulaması için yetkilendirme gerekiyor</message>
    <icon_name>preferences-system</icon_name>
    <defaults>
      <allow_any>yes</allow_any>
      <allow_inactive>yes</allow_inactive>
      <allow_active>yes</allow_active>
    </defaults>
    <annotate key="org.freedesktop.policykit.exec.path">/usr/sbin/test</annotate>
    <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
  </action>
</policyconfig>