Pkexec kullanarak GUI uygulamalarını root olarak nasıl çalıştırabilirim?


16

Gnome3 Flashback Masaüstü Ortamı ile birlikte gelen Trisquel GNU / Linux-Libre kullanıyorum .

GUI uygulamasını root olarak çalıştırabileceğimi biliyorum sudo& gksudoama GUI uygulamalarını nasıl root olarak çalıştırırım pkexec?

Çalıştırmaya çalıştığımda gedit(veya benzeri başka bir uygulamada nautilus) pkexec geditO zaman kimlik doğrulaması için parola ister: -

ekran görüntüsü

Şifre girdikten sonra hata ile çıkar: -

$ pkexec gedit
error: XDG_RUNTIME_DIR not set in the environment.

(gedit:6135): Gtk-WARNING **: cannot open display:

Yani, ekran ortamında bir şeyler ters gidiyor gibi görünüyor.

Ben de denedim DISPLAY=:0 pkexec geditama çalışmıyor.


Aşağıdaki bilgileri bulabilirsiniz man pkexec: -

PROGRAM'ın çalıştıracağı ortam, LD_LIBRARY_PATH veya benzeri mekanizmalar yoluyla kod enjekte edilmesini önlemek için bilinen ve güvenli bir ortama ayarlanacaktır. Ayrıca PKEXEC_UID ortam değişkeni, pkexec'i çağıran işlemin kullanıcı kimliğine ayarlanır. Sonuç olarak, pkexec, $ DISPLAY ve $ XAUTHORITY ortam değişkenleri ayarlanmadığından X11 uygulamalarını başka bir kullanıcı olarak çalıştırmanıza izin vermez. Bir eylemin org.freedesktop.policykit.exec.allow_gui ek açıklaması boş olmayan bir değere ayarlanırsa bu iki değişken korunur; bu cesaretini kırmıştır ve yalnızca eski programlar için kullanılmalıdır.

Şimdi bunu başarmak için ne yapacağımı bilmiyorum.

Böylece, GUI uygulamalarını root olarak nasıl çalıştıracağımı öğrenmeme yardımcı olun pkexec. Yoksa bu mümkün mü değil mi?


BTW, İyi gparted-pkexecçalışan komuttan esinlenmiştir. Nasıl gpartedkullanılır pkexec?


(Daha sonra bulundu) İlgili: pkexec nasıl yapılandırılır?
Pandya

Benim için çalışan bu bağlantıya göz atın .
TinyRickHole

Yanıtlar:


11

Policykit'e özel eylemler eklenerek yapılabilir. Eğer gedit'i root olarak çalıştırmak pkexecistiyorsanız, /usr/share/polkit-1/actions/org.freedesktop.policykit.gedit.policyörneğin yeni bir dosya oluşturmanız gerekir :

<?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="org.freedesktop.policykit.pkexec.gedit">
    <description>Run gedit program</description>
    <message>Authentication is required to run the gedit</message>
    <icon_name>accessories-text-editor</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>

Sonunda pkexec geditbeklendiği gibi çalışmalıdır.


Aşağıdaki gibi ÖRNEK ile açıklayan manpage veya Referans Kılavuzunu ziyaret edin : -

$ man pkexec | grep -i ^Example -A 60
EXAMPLE
       To specify what kind of authorization is needed to execute the program /usr/bin/pk-example-frobnicate as
       another user, simply write an action definition file like this

           <?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>

             <vendor>Examples for the PolicyKit Project</vendor>
             <vendor_url>http://hal.freedesktop.org/docs/PolicyKit/</vendor_url>

             <action id="org.freedesktop.policykit.example.pkexec.run-frobnicate">
               <description>Run the PolicyKit example program Frobnicate</description>
               <description xml:lang="da">Kør PolicyKit eksemplet Frobnicate</description>
               <message>Authentication is required to run the PolicyKit example program Frobnicate (user=$(user), program=$(program), command_line=$(command_line))</message>
               <message xml:lang="da">Autorisering er påkrævet for at afvikle PolicyKit eksemplet Frobnicate (user=$(user), program=$(program), command_line=$(command_line))</message>
               <icon_name>audio-x-generic</icon_name>
               <defaults>
                 <allow_any>no</allow_any>
                 <allow_inactive>no</allow_inactive>
                 <allow_active>auth_self_keep</allow_active>
               </defaults>
               <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/pk-example-frobnicate</annotate>
             </action>

           </policyconfig>

       and drop it in the /usr/share/polkit-1/actions directory under a suitable name (e.g. matching the namespace of
       the action). Note that in addition to specifying the program, the authentication message, description, icon
       and defaults can be specified. Note that occurences of the strings $(user), $(program) and $(command_line) in
       the message will be replaced with respectively the user (of the form "Real Name (username)" or just "username"
       if there is no real name for the username), the binary to execute (a fully-qualified path, e.g.
       "/usr/bin/pk-example-frobnicate") and the command-line, e.g. "pk-example-frobnicate foo bar". For example, for
       the action defined above, the following authentication dialog will be shown:

           [IMAGE][2]

               +----------------------------------------------------------+
               |                     Authenticate                     [X] |
               +----------------------------------------------------------+
               |                                                          |
               |  [Icon]  Authentication is required to run the PolicyKit |
               |          example program Frobnicate                      |
               |                                                          |
               |          An application is attempting to perform an      |
               |          action that requires privileges. Authentication |
               |          is required to perform this action.             |
               |                                                          |
               |          Password: [__________________________________]  |
               |                                                          |
               | [V] Details:                                             |
               |  Command: /usr/bin/pk-example-frobnicate                 |
               |  Run As:  Super User (root)                              |
               |  Action:  org.fd.pk.example.pkexec.run-frobnicate        |
               |  Vendor:  Examples for the PolicyKit Project             |
               |                                                          |
               |                                  [Cancel] [Authenticate] |
               +----------------------------------------------------------+

Evet, sonunda manpage ( man pkexec) de buldum !
Pandya

Bana unix.stackexchange.com/q/204638/66803 adresinden yardım edebilir misiniz ?
Pandya

@Pandya, asıl hata "ölü ebeveynlere hizmet vermeyi reddetmek", bunun için googled bazı hata raporları vardır. Geçici çözüm için / usr / local / bin içinde aşağıdaki gibi bir şey içeren yürütülebilir dosya oluşturabilirsiniz: #! / bin / sh "pkexec" "nautilus" yazın ve F7 ile çalıştırın. Bence işe yaramalı.
taliezin

TAMAM. F7 ile iyi çalışan yürütülebilir dosya yaparak denedim.
Pandya

2
Böyle bir araç beni / usr dışında bir şey yapılandırmaya zorladı ve / usr / local / share yerine / usr / share altında daha kötü.
niels
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.