আমি কীভাবে পেকেক্সেক ব্যবহার করে রুট হিসাবে জিইউআই অ্যাপ্লিকেশনগুলি চালিত করব?


16

আমি ট্রিস্কেল জিএনইউ / লিনাক্স-লিব্রে ব্যবহার করছি যা জিনোম 3 ফ্ল্যাশব্যাক ডেস্কটপ পরিবেশের সাথে আসে ।

আমি জানি যে আমি জিওআইআই অ্যাপ্লিকেশনটিকে রুট হিসাবে চালাতে পারি sudoএবং gksudoতবে আমি জানতে চাই যে আমি কীভাবে জিইউআই অ্যাপ্লিকেশনগুলিকে রুট হিসাবে চালাব pkexec?

যখন আমি ততক্ষণে gedit(বা অন্য কোনও অ্যাপ্লিকেশন nautilus:) চালানোর চেষ্টা করি pkexec geditতখন এটি প্রমাণীকরণের জন্য পাসওয়ার্ডের অনুরোধ জানায়: -

স্ক্রিনশট

পাসওয়ার্ড প্রবেশের পরে এটি ত্রুটি সহ প্রস্থান করে:

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

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

সুতরাং, মনে হচ্ছে প্রদর্শন পরিবেশের সাথে কিছু ভুল হচ্ছে।

আমি চেষ্টা করেছি DISPLAY=:0 pkexec geditকিন্তু কাজ করে না।


নিম্নলিখিত তথ্য থেকে পাওয়া যায় man pkexec: -

প্রোগ্রাম যে পরিবেশটি এটি চালাবে, এলডি_লিবিআরএআইপিএটিএইচ বা অনুরূপ প্রক্রিয়াগুলির মাধ্যমে ইনজেকশন কোড এড়ানোর জন্য একটি ন্যূনতম জ্ঞাত এবং নিরাপদ পরিবেশে সেট করা হবে। এছাড়াও PKEXEC_UID পরিবেশের ভেরিয়েবলটি প্রক্রিয়াকরণের pkexec ব্যবহারকারীর আইডিতে সেট করা আছে। ফলস্বরূপ, পেকেক্সেক আপনাকে এক্স 11 অ্যাপ্লিকেশনগুলি অন্য ব্যবহারকারী হিসাবে চালানোর অনুমতি দেয় না যেহেতু not DISPLAY এবং $ XAUTHORITY পরিবেশ পরিবর্তনশীল সেট করা হয়নি run Org.freedesktop.policykit.exec.allow_gui কোনও ক্রিয়ায় টীকা যদি কোনও অমূল্য মান সেট করা থাকে তবে এই দুটি পরিবর্তনশীল বজায় থাকবে; যদিও এটিকে নিরুৎসাহিত করা হয় এবং এটি কেবলমাত্র উত্তরাধিকার প্রোগ্রামগুলির জন্যই ব্যবহার করা উচিত।

এটি সম্পাদন করার জন্য এখন আমি কী করব জানি না।

সুতরাং, কীভাবে GUI অ্যাপ্লিকেশনগুলি রুট হিসাবে চালাতে হয় তা জানতে আমাকে সহায়তা করুন pkexec। নাকি এটা সম্ভব নাকি?


বিটিডাব্লু, gparted-pkexecকমান্ড দ্বারা অনুপ্রাণিত যা সূক্ষ্মভাবে কাজ করে। কিভাবে gpartedব্যবহার pkexec?


(পরে পাওয়া গেছে) সম্পর্কিত: pkexec কনফিগার কিভাবে?
পান্ড্য

এই লিঙ্কটি আমার জন্য কাজ করে দেখুন।
টিনিআরহোল

উত্তর:


11

পলিসিকিটে কাস্টম ক্রিয়া যুক্ত করে এটি করা যায়। আপনি যদি জিডিটটি মূল হিসাবে চালাতে চান তবে আপনাকে pkexecনতুন ফাইল তৈরি করতে হবে /usr/share/polkit-1/actions/org.freedesktop.policykit.gedit.policy:

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

অবশেষে pkexec geditপ্রত্যাশা অনুযায়ী কাজ করা উচিত।


ম্যানপেজ বা রেফারেন্স ম্যানুয়াল দেখুন যা এটি উদাহরণস্বরূপ যেমন: -

$ 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] |
               +----------------------------------------------------------+

হ্যাঁ, অবশেষে আমি এটি ম্যানপেজেও খুঁজে পেয়েছি ( man pkexec)!
পান্ড্য

আপনি কি আমাকে unix.stackexchange.com/q/204638/66803 এ সাহায্য করতে পারেন ?
পান্ড্য

@ পান্ড্য, আসল ত্রুটিটি হ'ল "মৃত পিতামাতাদের সেবা দেওয়া অস্বীকার করা", আমি যখন এর জন্য গুগল করলাম তখন কিছু বাগ রিপোর্ট রয়েছে। কাজের জন্য আপনি / usr / স্থানীয় / বিনে এক্সিকিউটেবল ফাইল তৈরি করতে পারেন যার মধ্যে এমন কিছু রয়েছে: #! / বিন / শ "পেকেক্সেক" "নটিলাস" এবং এফ 7 দিয়ে এটি চালান। আমি মনে করি এটি কাজ করা উচিত।
টালিজিন

ঠিক আছে. আমি এক্সিকিউটেবল তৈরি করে চেষ্টা করেছি যা F7 এর সাথে ঠিকঠাক কাজ করছে।
পান্ড্য

2
আমি সত্যিই হতাশ হয়েছি যে এই জাতীয় সরঞ্জামটি আমাকে / usr / স্থানীয় / ভাগের পরিবর্তে / usr / ভাগের অধীনে আরও খারাপ কিছু বা অন্যরকম কিছু কনফিগার করতে বাধ্য করেছিল।
নিলস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.