पासवर्ड के लिए नहीं पूछने के लिए pkexec कैसे कॉन्फ़िगर करें?


12

मेरे पास एक GUI एप्लिकेशन है जिसे सुपरसुसर विशेषाधिकारों के साथ एक डेमन (पायथन में लिखित) को कॉल करने की आवश्यकता है। मैं पासवर्ड के लिए उपयोगकर्ता को संकेत दिए बिना ऐसा करना चाहूंगा।

चूंकि डेमन एक स्क्रिप्ट है, मैं सीधे SUID बिट सेट नहीं कर सकता। मैं इसके लिए एक सी रैपर लिख सकता था, लेकिन मैं पहिया को फिर से मजबूत नहीं कर सकता था, खासकर जब मेरे हिस्से पर एक गलती सिस्टम की सुरक्षा को गंभीर रूप से समझौता कर सकती थी।

इस स्थिति में मैं सामान्य रूप से क्या करूंगा /etc/sudoersकि एक पंक्ति को जोड़ने के लिए उपयोगकर्ताओं को NOPASSWD निर्देश का उपयोग करते हुए पासवर्ड के बिना रूट के रूप में डेमन को निष्पादित करने की अनुमति मिलती है। यह कमांड लाइन से ठीक काम करता है। हालाँकि, जब मैं GUI से ऐसा करता हूं, तो एक pkexecसंवाद उपयोगकर्ता का पासवर्ड मांगता है। ऐसा लगता है कि उबंटू पर, sudoजीयूआई से कॉल किसी भी तरह से बाधित हो रहे हैं pkexec

क्या इसके आस-पास कोई साफ रास्ता है? मैं वास्तव में एक सेतु स्क्रिप्ट के झंझटों से निपटना नहीं चाहता।


आप किस एप्लिकेशन के बारे में बात करते हैं?
राडू राईडेनु

कोई भी GUI ऐप। जब कोई GUI ऐप चलाने का प्रयास करता है sudo somecommand, तो संवाद बॉक्स जो कि पॉप अप होता है, एक pkexecपासवर्ड संवाद है, इस बात पर ध्यान दिए बिना कि क्या कोई sudoers पॉलिसी है जो प्रोग्राम के निष्पादन की अनुमति देती है।
चिन्मय कांची

जवाबों:


14

यह कहना अनुचित है: "ऐसा लगता है कि उबंटू पर, sudoजीयूआई से कॉल किसी भी तरह से बाधित हो रहे हैं pkexec"pkexecके साथ बहुत आम नहीं है sudo। इसके विपरीत sudo, pkexecएक पूरी प्रक्रिया के लिए रूट अनुमति नहीं देता है, बल्कि केंद्रीकृत प्रणाली नीति के नियंत्रण के एक बेहतर स्तर की अनुमति देता है।

अब, यदि आप किसी पासवर्ड द्वारा पूछे बिना GUI एप्लिकेशन को चलाना चाहते हैं, तो pkexecयह किया जाना मुश्किल नहीं है। चलो उदाहरण के लिए GParted लेते हैं । जब आप इसे खोलते हैं, तो आपको निम्न डायलॉग विंडो दिखेगी जो आपसे पासवर्ड मांगेगी:

gparted प्रमाणीकृत

विवरण पर क्लिक करें और संवाद विंडो अब दिखाई देगी:

gparted प्रमाणीकृत - विवरण

यहाँ से आपको बस इतना करना है कि निम्नलिखित कमांड के उदाहरण के लिए फ़ाइल को खोलें :/usr/share/polkit-1/actions/com.ubuntu.pkexec.gparted.policy

gksu gedit /usr/share/polkit-1/actions/com.ubuntu.pkexec.gparted.policy

और निम्नलिखित पंक्तियों को बदलें:

      <allow_any>auth_admin</allow_any>
      <allow_inactive>auth_admin</allow_inactive>
      <allow_active>auth_admin</allow_active>

अनुसरण के साथ:

      <allow_any>yes</allow_any>
      <allow_inactive>yes</allow_inactive>
      <allow_active>yes</allow_active>

फ़ाइल को सहेजें और इसे बंद करें। अगला, जब आप GParted खोलेंगे, तो आपसे कोई पासवर्ड नहीं मांगा जाएगा।


हाँ, pkexec वास्तव में sudo को कॉल को इंटरसेप्ट करता है। मुझे देखने दो कि क्या मैं इस व्यवहार का एक न्यूनतम उदाहरण बना सकता हूं।
चिन्मय कांची

मैं इसे एक साधारण ऐप में नहीं दोहरा सकता, यह केवल कुछ विशिष्ट स्थितियों में ही हो सकता है और मेरे पास बग को ट्रेस करने का समय नहीं है। मैं आपका उत्तर स्वीकार करने जा रहा हूँ। चीयर्स।
चिन्मय कांची

@ChinmayKanchi अधिक स्पष्ट होने दें। मैं फिर से उदाहरण के लिए ले जाऊँगा gparted। जब आप टर्मिनल से चलते हैं sudo gparted, तो आप /usr/sbin/gpartedरूट विशेषाधिकारों के साथ फाइल चलाते हैं । जब आप gpartedGUI से शुरू करते हैं, तो आप वास्तव में शुरू gparted-pkexecकरते हैं (आप इसे /usr/share/applications/gparted.desktopफ़ाइल के अंदर सत्यापित कर सकते हैं ) जो /usr/bin/gparted-pkexecकि एक शेल स्क्रिप्ट है जिसका उद्देश्य निम्नलिखित कमांड को चलाना है: pkexec "/usr/sbin/gparted"जो इसके बराबर है pkexec gparted। तो, कुछ नहीं करना है sudo। और यह कमांड आपको टर्मिनल में उपयोग करना चाहिए, न कि sudo gparted
रादु राईडेनु

1
@ChinmayKanchi sudoका उपयोग केवल शेल एप्लिकेशन के लिए किया जाना चाहिए, GUI ऐप्स के लिए नहीं। देखें man sudoऔर man pkexecइस अर्थ में।
रादु राईडेनु

हां, मैं आपके दोनों बिंदुओं से अवगत हूं। मेरी स्थिति यह है कि मेरे पास एक GUI ऐप है (मेरे द्वारा लिखित) जो सूडो का उपयोग करके एक शेल प्रोग्राम (एक डेमन, जो मेरे द्वारा भी लिखा गया है) लॉन्च करने का प्रयास करता है। किसी कारण से, pkexec में यह परिणाम सूडो के बजाय हो रहा है, जिसका मतलब है कि डेमॉन के लिए मैंने जो भी sudo नीतियाँ बनाई हैं, उन्हें अनदेखा किया जाता है।
चिन्मय कांची
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.