ग्राफिकल अनुप्रयोगों के लिए gkudo के ऊपर pkexec को क्यों पसंद किया जाता है?


10

कृपया इसे प्रदान करने वाले Ubuntu दस्तावेज़ प्रदान करें: https://help.ubuntu.com/community/RootSudo क्यों, मेरे पूरी तरह से अपडेट किए गए 13.04 सिस्टम पर, pkexec कार्य नहीं करता है?

$ pkexec gedit somefile.txt
No protocol specified

** (gedit:13135): WARNING **: Could not open X display
Cannot open display: 
Run '/usr/bin/gedit --help' to see a full list of available command line options


pkexec gksu के प्रतिस्थापन में एक बूंद नहीं है। यह आप के लिए मैन्युअल रूप से उस तरह चलाने के लिए इरादा नहीं है।
Psusi

2
मैंने gksu के बारे में नहीं पूछा और न ही उल्लेख किया।
चिली ५५

pkexecकॉन्फ़िगर किए बिना GUI चलाने के बारे में एक बहुत अच्छा जवाब : askubuntu.com/a/332847/89385
akostadinov

पॉलिसीकिट-1-सूक्ति स्थापित करें। विवरण और स्पष्टीकरण के लिए यहां देखें ।
user303371

जवाबों:


7

यह काम क्यों नहीं करता है?

डिफ़ॉल्ट रूप से pkexecआपको ग्राफ़िकल (X11) एप्लिकेशन चलाने की अनुमति नहीं देता है। मैन पेज से:

 The environment that PROGRAM will run it, will be set to a minimal
 known and safe environment in order to avoid injecting code through
 LD_LIBRARY_PATH or similar mechanisms. In addition the PKEXEC_UID
 environment variable is set to the user id of the process invoking
 pkexec.
     As a result, pkexec will not allow you to run X11 applications
     as another user since the $DISPLAY and $XAUTHORITY environment
     variables are not set.
 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.

जैसा कि मैन पेज में कहा गया है, आप इसे काम कर सकते हैं, हालांकि मैं वास्तव में नहीं जानता कि यह किसी तरह खतरनाक है या अनुशंसित है

उदाहरण के लिए gedit को सक्षम करने के लिए आप /usr/share/polkit-1/actions/com.ubuntu.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.0/policyconfig.dtd">
<policyconfig>
  <vendor>gedit</vendor>
  <vendor_url>gedit</vendor_url>
  <icon_name>accessories-text-editor</icon_name>
  <action id="org.freedesktop.policykit.pkexec.gedit">
   <description>Run "gedit"</description>
   <message>Authentication is required to run Text Editor</message>
   <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उम्मीद के मुताबिक काम करना चाहिए:

यहाँ छवि विवरण दर्ज करें

जैसा कि आप अनुमान लगा सकते हैं, यह केवल geditकाम करेगा । सिद्धांत रूप में, यदि आपने allow_gui"org.freedesktop.policykit.exec" (डिफ़ॉल्ट क्रिया) में जोड़ा है, तो यह सभी अनुप्रयोगों के लिए काम करना चाहिए, लेकिन मेरे परीक्षणों में मुझे आपके जैसा ही परिणाम मिला।

क्यों पसंद किया जाता है pkexec?

यहाँ आप की ताकत के बारे में चर्चा पा सकते हैं pkexec


3
तो, ग्राफिकल अनुप्रयोगों के लिए, क्या gksudo को प्राथमिकता दी जाती है और pkexec को नहीं?
मिर्ची ५५

1
मुझे ऐसा लगता हैं। यदि gksudoउपलब्ध है, तो आपके द्वारा उपयोग किए जाने वाले प्रत्येक एप्लिकेशन के लिए एकल क्रियाएं बनाने के बजाय इसका उपयोग करना बहुत आसान है (यदि ऐसा करने के लिए "वैश्विक" तरीका नहीं है)।
सलेम

1
@ सलेम- तब मुझे आश्चर्य होता है कि मेरा उत्तर संपादित क्यों किया गया और pkexec का उपयोग करने की स्वीकृति तब दी गई जब इसका उपयोग ग्राफ़िकल अनुप्रयोगों के लिए उपयोग करने का इरादा नहीं है और जैसा कि आप पढ़ सकते हैं, काम नहीं किया। askubuntu.com/questions/313619/… कुछ ऐसा होना चाहिए जो मुझे समझ न आए
1955 में चिली

@ chili555 यदि वह संपादन आपके प्रश्न से प्रेरित था तो आपको मेटा से यह पूछना चाहिए। 13.04 में आपको या तो स्थापित करना होगा gksudoया कॉन्फ़िगर करना होगा pkexec(आप उपयोग भी कर सकते हैं sudo -iलेकिन यह Alt + F2 उर्फ ​​"रन" के साथ काम नहीं करेगा)। मुझे पहला MUCH आसान लगता है। अगर किसी को भी अच्छी तरह से सोचता है ... मुझे कुछ सुझाव देना गलत लगता है जो उद्देश्य के रूप में काम नहीं करेगा, लेकिन मुझे कुछ याद आ रहा है ...
सलेम

1
pkexecवास्तव में बिना विन्यास के GUI चला सकते हैं: askubuntu.com/a/332847/89385
akostadinov
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.