Pkexec nasıl yapılandırılır?


32

Bu soruları ve cevapları okumak:

bana bu komutun yeni kullanıcıları için sorun yaratacak bir tane daha getirdi:

  • pkexecKolay kullanım için nasıl yapılandırılır ?

Örneğin, aşağıdakileri yaparken:

(Terminalde bir dosya açılması)

pkexec nano /etc/mysql/my.cnf  

(Bir dosyayı GUI'de açma)

pkexec gedit /etc/mysql/my.cnf  

Sonuncusu aşağıdaki hatayı alır:

 pkexec must be setuid root

Şimdi bu bana şu soruları getirdi:

  1. Bunu pkexecönlemek için nasıl yapılandırılır ? Benzer nasıl sudo/ gksuaynı şeyi yaparken davranır (onlar sadece şifre isteyecektir).

  2. Mümkünse, bir komutu ilk kez uyguladıktan sonra (veya yapılandırılabilirse ilk komutu dahil ederek) bir şifre sormamasını nasıl söyleyeceksiniz?

  3. Henüz mevcut değilse yapılandırma dosyasını nereye kaydedebilirsiniz?

  4. pkexecKullanımı yapılandırmak için bir GUI uygulaması var mı (Politika Seti)?


1
13.04'te Ubuntu leiu'da bu konuda işle ilgilenmek gedit & nautilus için yaptığım şey bu. Burada iyi çalışıyor ancak Ubuntu'nun ilgilendiği zamana kadar sadece benim çözümüm olduğu gibi bir cevap göndermeyecek. ubuntuforums.org/…
doug

Hmm, yorum ekleyemezsiniz - bu nedenle bir cevaba başvurmak zorundasınız ... Kullanma: alias pkexec = 'pkexec env DISPLAY = $ DISPLAY XAUTHORITY = $ XAUTHORITY' Giriş gui komutunun yerine env yolunu döndürdüğü anlamına gelir sonuçta idam ediliyor. "Env DISPLAY = $ DISPLAY XAUTHORITY = $ XAUTHORITY" kullanımını düzenlemenin bir yolu var mı? Buradaki resme

Yanıtlar:


39

pkexecGUI uygulamalarını çalıştırırken hata almamak için nasıl yapılandırılır ?

İki olası yol buldum:

  1. Gördüğünüz gibi, aşağıdakileri kullanarak:

    pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY gedit
    

    size herhangi bir hata almazsınız. Ve bu normaldir çünkü man pkexecbu konuda çok açıktır:

           [...] pkexec will not allow you to run X11 applications
           as another user since the $DISPLAY and $XAUTHORITY environment
           variables are not set.[...]
    

    Sonuç olarak ( kalıcı ) bir takma ad oluşturabilirsiniz (bu en basit yoldur):

    alias pkexec='pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY'
    
  2. Veya (yine) man pkexecdediği gibi:

           [...] These two variables will be retained if the
           org.freedesktop.policykit.exec.allow_gui annotation on an action is set
           to a nonempty value; this is discouraged, though, and should only be
           used for legacy programs.[...]
    

    En önemli şeyin boş olmayan bir değere ayarlamak olduğu içinde, aşağıdaki xml koduyla /usr/share/polkit-1/actionsadlandırılmış yeni bir ilke dosyası oluşturabilirsiniz :com.ubuntu.pkexec.gedit.policyorg.freedesktop.policykit.exec.allow_gui

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE policyconfig PUBLIC
      "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
      "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
    <policyconfig>
    
      <action id="com.ubuntu.pkexec.gedit">
        <message gettext-domain="gparted">Authentication is required to run gedit</message>
        <icon_name>gedit</icon_name>
        <defaults>
          <allow_any>auth_admin</allow_any>
          <allow_inactive>auth_admin</allow_inactive>
          <allow_active>auth_admin</allow_active>
        </defaults>
        <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/gedit</annotate>
        <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
      </action>
    
    </policyconfig>
    

Şifreyi ilk defa uyguladıktan sonra bir şifre sormamasını nasıl söylerim?

Bu üç ayar etiketler için: allow_any, allow_inactiveve allow_activepolitika dosyasından, aşağıdaki seçenekler kullanılabilir:

  • hayır : Kullanıcının işlemi gerçekleştirme yetkisi yok. Bu nedenle, kimlik doğrulamaya gerek yoktur.
  • Evet : Kullanıcının herhangi bir kimlik doğrulama yapılmadan işlemi gerçekleştirme yetkisi
  • auth_self : Kimlik doğrulaması gerekli ancak kullanıcının yönetici kullanıcı olması gerekmiyor.
  • auth_admin : Yönetici kullanıcı olarak kimlik doğrulaması gerekiyor.
  • auth_self_keep : auth_self ile aynı, ancaksudo yetkilendirme birkaç dakika sürer.
  • auth_admin_keep : auth_admin ile aynı, ancak sudoyetkilendirme birkaç dakika sürer.

     Kaynak: Polkit - Yapı - Eylemler

Bu nedenle, auth_admin_keep seçeneğini kullanırsanız (veya uygunsa auth_self_keep) ) pkexecbir süre daha şifre sormayacak (varsayılan olarak bu süre kontrol ettiğim 5 dakika olarak ayarlanmış). Buradaki dezavantaj bu şeyin yalnızca biri için geçerli olması - aynı - komut / uygulama ve tüm kullanıcılar için geçerli (daha sonraki yapılandırmada reddedilmediği sürece).

Henüz mevcut değilse yapılandırma dosyasını nereye kaydedebilirsiniz?

Yapılandırma dosyaları veya polkit tanımları iki türe ayrılabilir:

  • Eylemler , içinde bulunan XML .policy dosyalarında tanımlanır /usr/share/polkit-1/actions. Her eylemin kendisine eklenmiş bir dizi varsayılan izni vardır (örn. GParted eylemini kullanmak için yönetici olarak tanımlamanız gerekir). Varsayılanlar geçersiz kılınabilir, ancak eylem dosyalarını düzenlemek doğru yol DEĞİLDİR. Bu politika dosyasının adı şu biçimde olmalıdır:

    com.ubuntu.pkexec.app_name.policy
  • Yetkilendirme kuralları , JavaScript .rules dosyalarında tanımlanmıştır. İki yerde bulunurlar: 3. parti paketler kullanabilir /usr/share/polkit-1/rules.d(az sayıda olsa da) ve /etc/polkit-1/rules.dyerel yapılandırma içindir. .Rules dosyaları bir kullanıcı alt kümesini belirtir, eylem dosyalarında belirtilen işlemlerden birine (veya daha fazlasına) atıfta bulunur ve bu eylemlerin bu kullanıcılar tarafından hangi kısıtlamalarla alınabileceğini belirler. Örnek olarak, bir kurallar dosyası, belirli bir kullanıcının gerekmediğini belirleyerek GParted kullanırken tüm kullanıcıların yönetici olarak kimlik doğrulaması yapma varsayılan gereksinimini geçersiz kılabilir. Veya GParted'i hiç kullanamazsınız.

     Kaynak: Polkit - Yapı

pkexecKullanımı yapılandırmak için bir GUI uygulaması var mı ?

Bildiğim kadarıyla şu ana kadar (18.01.2014) böyle bir şey yok. Gelecekte bir şey bulacaksam, bu cevabı da güncellemeyi unutmayacağım.


4
ne güzel bir cevap! Çok teşekkür ederim. Şimdi neden doublecmdKÖK PRIVELEGES ile koşamadığımı anlıyorum, çünkü ortamları dışa aktarmam gerekti DISPLAY & XAUTHORITY!! Sadece küçük sorular: Politika yazma veya pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY doublecmdher zaman olduğu gibi sadece komut ile bir program çalıştırma konusunda herhangi bir fark var mı ?
Ilia Rostovtsev

@IliaRostovtsev bunu düşünüyorum, böyle bir takma adla koşuyormuş pkexecgibi güvensiz gksudomi olacak? bir takma ad yerine, kök ayrıcalıklarına sahip bir komut dosyası olabilir, daha güvenli olabilir mi?
Kova Gücü

@AquariusPower Hangi şekilde güvensiz olabileceğini görüyorsun? Elbette deneyebilirsin, ama emin değilim. Sorun, 'siz' altında çalışan bir GUI (X Sunucusu) ve kök olarak çalıştırılması gereken başka bir GUI programı kullanmanız gerektiğinde ortaya çıkar. Bir şeyler bulursanız, arkanıza yaslanıp geri gönderin lütfen.
Ilia Rostovtsev

@ radu-rădeanu Ütopik On auth_admin_keepçalışmıyor gibi görünüyor. Eğer gui'den synaptic başlatırsam (eşdeğer pkexec synaptic) her seferinde parola ister. Neden bir fikrin var mı?
Khurshid Alam


0

Radu'nun cevabına ek olarak: takma adı pkexec'i kullanmıyorum, ama gksudo .

Niye ya? Senaryoyu tekrar yazmaya gerek yok.

Aşağıdaki yapılandırmayı kullanıyorum:

  • terminal açmak
  • cd /usr/local/bin
  • sudo gedit gksudo ("gksudo" adlı yeni bir dosya oluşturun
  • aşağıdaki içeriği yaz:

    • pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY $@

    • ( $@sonunda unutmayı unutmayın . Bu, tüm parametreleri yönlendirmek içindir)

  • kaydet ve çık

  • dosyayı çalıştırılabilir duruma getirin: chmod 755 gksudo
  • Şimdi sisteminizde mevcut olan tamamen işlevsel bir gksudo komutuna sahip olmalısınız - kalıcı olarak.

Belgelendirme nedenleriyle, neyi denediğimi ve çalışmadığımı yazacağım:

  • takma ad pkexec = 'pkexec env [...]'
  • takma ad gksudo = 'pkexec [...]'
    • Kalıcı değildi ve sadece tek bir terminalde kaldı
  • takma adı eklemek ~/.bash_aliases
    • İlk önce bir terminal açarsanız çalışır. Scriptleri çift tıklarsanız çalışmaz
  • Parametreler ( ln -s pkexec [...]) ile pkexec için bir link oluşturun
    • Hızlı bir googleing sonrasında, linux bağlantılardaki parametreleri desteklemiyor gibi görünüyor
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.