Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
136 lines (100 sloc) 5.08 KB
Erişim Denetimi
===============
Erişim denetimi, PolicyKit ile sağlanmaktadır. Sunulan arayüzlere ait
erişim ayarları /usr/share/PolicyKit/policy/ içinde bulunmaktadır.
model.xml'de tanımlı her model için (standart org.freedesktop.DBus
arayüzleri hariç) bir erişim ayar dosyası vardır. ÇOMAR, çağrıyı
yapan kullanıcı root haklarına sahip değilse, PolicyKit'e başvurur
ve PolicyKit, bu ayar dosyalarındaki tanımlara göre kullanıcının
yetkili olup olmadığını denetler.
Erişim Dosyası Nesne Arayüz
-------------- ---------- ------
comar.policy / tr.org.pardus.comar
comar.bootloader.policy /package/* tr.org.pardus.comar.Boot.Loader
comar.modules.policy /package/* tr.org.pardus.comar.Boot.Modules
comar.netlink.policy /package/* tr.org.pardus.comar.Net.Link
comar.netstack.policy /package/* tr.org.pardus.comar.Net.Stack
comar.system.package.policy /package/* tr.org.pardus.comar.System.Package
comar.time.polic /package/* tr.org.pardus.comar.Time.Clock
comar.user.policy /package/* tr.org.pardus.comar.User.Manager
Erişim Dosyası Yapısı
=====================
<action id="tr.org.pardus.comar.boot.loader.listsystems">
<description>List systems supported by boot loader</description>
<message>System policy prevents listing systems.</message>
<defaults>
<allow_any>yes</allow_any>
<allow_active>yes</allow_active>
<allow_inactive>yes</allow_inactive>
</defaults>
</action>
İşlem Adları (action id)
------------------------
İşlem adları, kullanıcının yapmak istediği işlemi temsil ederler.
Sadece "[a-z][0-9].-" karakterlerini içerebilirler.
** ÖNEMLİ **
İşlem adı, genellikle arayüzadı.method şeklinde tanımlıdır. İşlem
adı büyük harf içeremeyeceğinden, önce tüm karakterler küçük harfe
dönüştürülür.
Erişim Türleri (allow_*)
------------------------
allow_any Herhangi bir oturum için erişim hakkı
allow_active Aktif oturumlar için erişim hakkı
allow_inactive İnaktif oturumlar için erişim hakkı
Erişim Hakları (allow_* değerleri)
----------------------------------
yes Herkes bu işlemi yapabili
no Sadece root bu işlemi yapabilir
auth_self Kendi parolasını girerek yetki alabilir
auth_self_keep_session Kendi parolasını bir kez girdikten sonra
oturum boyunca bir daha parola girmesine
gerek kalmaz
auth_self_keep_always Kendi parolsını bir kez girdikten sonra
bir daha parola girmesine gerek kalmaz
auth_admin Root parolasını girerek yetki alabilir
auth_admin_keep_session Root parolasını bir kez girdikten sonra
oturum boyunca bir daha parola girmesine
gerek kalmaz
auth_admin_keep_always Root parolasını bir kez girdikten sonra
bir daha parola girmesine gerek kalmaz
Benzer İşlemler
===============
ÇOMAR, model.xml'de birbirine benzer işlemleri belirleye olanak tanır:
<method name="setOption" access_label="set">
<arg name="option" type="s" direction="in"/>
<arg name="value" type="s" direction="in"/>
</method>
<method name="setEntry" access_label="set">
<arg name="title" type="s" direction="in"/>
<arg name="os_type" type="s" direction="in"/>
<arg name="root" type="s" direction="in"/>
<arg name="kernel" type="s" direction="in"/>
<arg name="initrd" type="s" direction="in"/>
<arg name="options" type="s" direction="in"/>
<arg name="default" type="s" direction="in"/>
<arg name="index" type="i" direction="in"/>
</method>
Bu durumda, erişim denetimi yapılırken
tr.org.pardus.comar.boot.loader.setoption
tr.org.pardus.comar.boot.loader.setentry
işlem isimleri yerine
tr.org.pardus.comar.boot.loader.set
kullanılır.
** ÖNEMLİ **
ÇOMAR'dan "işlem yetkiniz yok" mesajı alan istemci, PolicyKit ajanından
kimlik doğrulama yoluyla erişim sağlama yaparken, yukarıdaki gibi
tr.org.pardus.comar.boot.loader.set
işlemi için yetki istemelidir.
PolicyKit Ajanı İle Yetki İsteme
================================
Aşağıdaki Python kodu ile, sistemde PolicyKit-gnome kurulu ise, istenen
işlem için yetki istenebilir (method True/False döndürür):
def obtainAuthorization(action, pid):
import dbus
bus = dbus.SessionBus()
obj = bus.get_object("org.gnome.PolicyKit", "/")
iface = dbus.Interface(obj, "org.freedesktop.PolicyKit.AuthenticationAgent")
return iface.ObtainAuthorization(action, 0, pid)
İşlem adıyla birlikte, yetki alacak uygulamanın süreç numarası belirtilmelidir.
İşlem adı, politika ayalar dosyalarının birinde tanımlı değilse, pencere/süreç
numarası geçersiz ise erişim denetimi daima False döndürür.