मुझे 18.04 में gksu के बराबर की आवश्यकता है


23

मैंने कई लिनक्स फ्लेवर से निकाले जाने वाले gksu के बारे में बहुत सारे सूत्र पढ़े हैं, जिसमें Ubuntu 18.04 भी शामिल है। कई राज्य कहते हैं कि gksu एक घृणा है और किसी भी उपयोगकर्ता को कभी भी इसका उपयोग करने की आवश्यकता नहीं होनी चाहिए। मेरे पास 2 उदाहरण हैं, जहां तक ​​मुझे पता है, मेरे पास कुछ ऐसा होना चाहिए जो मुझे रूट के रूप में चलाने की अनुमति देता है (न कि केवल फाइलों को संपादित करने के लिए)।

सबसे पहले, मुझे एक एन्क्रिप्टेड फ़ोल्डर (जीयूआई) कमांड पर खोलने के बाद ही mysql शुरू करने की आवश्यकता है। इसका अर्थ है कि एन्क्रिप्शन सिस्टम द्वारा चलाया जाने वाला स्क्रिप्ट जो mysql सेवा को शुरू करता है। इसे रूट के रूप में किया जाना है, इसलिए मैं उस स्टार्टअप स्क्रिप्ट में gksu का उपयोग करता हूं जो मुझसे पासवर्ड मांगता है। मैं GUI सिस्टम से और सेवा कैसे शुरू कर सकता हूं?

मैं उबंटू सिस्टम बैकअप को रूट के रूप में भी चलाता हूं, अन्यथा कई सिस्टम फ़ाइलों का बैकअप नहीं लिया जा सकता है। इसलिए डेस्कटॉप फ़ाइल बैकअप शुरू करने के लिए gksu का उपयोग करता है।

pkexec जटिल है, नीति फ़ाइलों की आवश्यकता है। क्या यह एकमात्र विकल्प है, और यदि ऐसा है, तो यह क्यों सुरक्षित है?

इसी तरह के सवालों के अन्य उत्तर व्यक्तिगत मुद्दों को संबोधित करने के लिए नहीं लगते हैं जो लोगों के पास अब हैं कि gksu नहीं है (या खोजने के लिए कठिन ...)। मुझे लगता है कि गैर-विशेषज्ञ उपयोगकर्ताओं से ऐसे प्रश्न अधिक विस्तृत उत्तरों से लाभान्वित होंगे। मेरे पास अब कुछ है, और इसलिए मैं अपने प्रश्न का उत्तर देना चाहूंगा।


pkexecइसके बजाय आपके लिए काम करता है gksu?
थॉमस वार्ड

@ कारेल ने सहमति व्यक्त की, हालांकि यह पद स्पष्ट रूप से 'प्रतिस्थापन' नहीं बताता है pkexec। (आपको इसके लिए शिकार करना होगा)
थॉमस वार्ड

2
आप उपयोग करने का प्रयास भी कर सकते हैं sudo -H GUI-programऔर यदि वीलैंड में यह लिंक है, तो यह उपयोगी हो सकता है, ... वर्कअराउंड हैं, अगर आपके पास एक जीयूआई उपकरण है, जो आपके लिए अच्छी तरह से काम करता है और उन्नत अनुमतियों की आवश्यकता है।
सूडोडस

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

मैं gnome-encfs-manager का उपयोग करता हूं, जो एन्क्रिप्टेड फ़ोल्डर्स को माउंट करने के लिए एक gui प्रदान करता है। यह ड्राइव चलाने पर स्क्रिप्ट चलाने के लिए प्रदान करता है। उस स्क्रिप्ट में मुझे mysql शुरू करने की आवश्यकता है। मैं यह कैसे कर सकता हूं? जैसे-जैसे वैंडलैंड के लिए, एक साधारण घर डेस्कटॉप उपयोगकर्ता के दृष्टिकोण से synaptic या gparted guis की अनुमति नहीं है। वे अमूल्य हैं। सिस्टम इतने सुरक्षित हो सकते हैं कि कोई भी उनका उपयोग नहीं करना चाहता है - एक संतुलन है, और इस विशेष मामले में (तरीका) उपयोगकर्ता को सही होना चाहिए।
पास्टिम

जवाबों:



8

मुझे पता है कि कहा जाता है कि इसका उत्तर कहीं और है, लेकिन मैंने उनमें से किसी को भी इस मुद्दे को हल करने के लिए पर्याप्त और सरल नहीं पाया है। इसलिए मैंने कई स्थानों पर चारों ओर खुदाई की और इसके साथ आया। मुझे अभी भी समझ में नहीं आया है कि लिनक्स समुदाय ने हमारे लिए सरल डेस्कटॉप उपयोगकर्ताओं के लिए जीवन को इतना कठिन बनाने का फैसला क्यों किया है (और मैंने कई स्पष्टीकरणों को समझने की कोशिश की है), लेकिन यह जीवन है। मैं GUI का उपयोग हर चीज के बारे में करता हूं, केवल जब आवश्यक हो तो टर्मिनल विंडो का उपयोग कर रहा हूं। जहाँ तक मैं sudo विकल्पों का उपयोग करके समाधान बता सकता हूँ इससे मदद नहीं मिलती है। इसलिए मेरे पास .desktopफाइलें और स्क्रिप्ट हैं जो सभी नौकरियों को नियमित रूप से उपयोग करती हैं।

दो बुनियादी उपाय हैं।

1. पुनः स्थापित करें gksu

यह समाधान हो सकता है या नहीं भी हो सकता है। एंटी-गक्सू तकनीकियों को इसे रोकने का एक तरीका मिल सकता है। लेकिन इस बीच में, 2 .debफाइलें libgksu (x64) और gksu (x64) से डाउनलोड करें । Libgksu2 स्थापित करें और फिर gdebi या जो भी इंस्टॉलेशन टूल का उपयोग करना चाहते हैं उसका उपयोग करके gksu करें। इसने मेरे लिए काम किया।

2. उपयोग करें pkexec

(उम्मीद है कि) लंबे समय तक समाधान के रूप में, मैं उन उपकरणों के लिए काम करने में कामयाब रहा जिन्हें मुझे ज़रूरत है।

  1. एक स्क्रिप्ट से एक सेवा शुरू करने के लिए। यह पता चला है कि न तो gksu या pkexec की जरूरत है। बस start service xyzऔर यह आपका पासवर्ड मांगेगा।

  2. रूट फ़ाइलों को संपादित करने के लिए, या रूट के रूप में नॉटिलस को खोलने के लिए, देखें कि कैसे Gedit और रूट के रूप में Nautilus को gksu के बजाय pkexec के साथ रूट करें - वेब अपडेट 8 । यह pkexec के लिए दो 'पोलकिट' फाइलें प्रदान करता है, जो आपको pkexec geditरूट फाइल को संपादित करने के लिए स्क्रिप्ट का उपयोग करने की अनुमति देता है , और इसी तरह नॉटिलस के लिए। निर्देश उस वेब पेज पर हैं। अब मैं 'फाइलमैन-एक्शन' का उपयोग कर रहा हूं ताकि गेडिट या नॉटिलस को रूट के रूप में चलाने के लिए राइट-क्लिक एक्शन प्रदान किया जा सके।

  3. मैं कोर सिस्टम के बैकअप के लिए रूट के रूप में डीजा-डुबकी चलाता हूं। मैं इसे अक्सर करता हूं , छोड़कर /home( /homeमैं लगातार बैकअप करता हूं जिसे रूट एक्सेस की आवश्यकता नहीं है)। इसे काम पर लाने के लिए मैंने gedit के लिए चरण 2 में प्रयुक्त फ़ाइल की एक प्रति ली और इसे deja-dup के लिए संपादित किया। मैं वास्तव में सामग्री को नहीं समझता, लेकिन यह काम करता है, बैकअप के लिए और फ़ाइलों को पुनर्स्थापित करने के लिए, pkexec backup.destop फ़ाइल से शुरू की गई स्क्रिप्ट में। मैंने इस नई फ़ाइल को /usr/share/polkit-1/actionsइसमें जोड़ा :

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE policyconfig PUBLIC "-//freedesktop//DTD polkit Policy Configuration 1.0//EN" "http://www.freedesktop.org/software/polkit/policyconfig-1.dtd">
    
    <policyconfig>
      <icon_name>deja-dup</icon_name>
    
      <action id="org.gnome.DejaDup">
        <description gettext-domain="deja-dup">Backup</description>
        <message gettext-domain="deja-dup">Privileges are required to backup system files</message>
        <defaults>
        <allow_any>no</allow_any>
        <allow_inactive>auth_admin</allow_inactive>
        <allow_active>auth_admin</allow_active>
         </defaults>
        <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/deja-dup</annotate>
        <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
      </action>
    
    </policyconfig>
    

    ध्यान दें कि इस निर्देशिका में एक और deja-dup फ़ाइल है, जो फ़ाइलों को पुनर्स्थापित करने में मदद करने का दावा करती है, लेकिन मुझे यह काम करने के लिए नहीं मिला। इस नई फ़ाइल के लिए एक विशिष्ट नाम होना चाहिए, जैसे कि org.gnome.DejaDupNew.policy

मैं, अभी के लिए, बिना gksu के चल रहा हूँ। मैं…


pkexec deja-dupआपके द्वारा वर्णित फ़ाइल को जोड़ने के बाद बैकअप शुरू करने का आदेश मेरे लिए था । संवाद मुझे पहले सेटिंग्स चुनने देता है, जो बहुत अच्छा है।
wbloos

एक पॉलिसी फ़ाइल डालना /usr/share/polkit-1/actionsवास्तव में एलिवेटेड pkexecपरमिशन के साथ डेस्कटॉप लॉन्चर बनाने का तरीका था । यहाँ एक और उदाहरण है
सर्ज स्ट्रोबंड्ट

4

Nautilus Admin ( nautilus-admin ) Nautilus फ़ाइल प्रबंधक के लिए एक साधारण पायथन एक्सटेंशन है जो राइट-क्लिक मेनू में कुछ प्रशासनिक क्रियाओं को जोड़ता है:

  • व्यवस्थापक के रूप में खोलें: व्यवस्थापक (रूट) विशेषाधिकारों के साथ चल रहे एक नए Nautilus विंडो में एक फ़ोल्डर खोलता है।
  • प्रशासक के रूप में संपादित करें: व्यवस्थापक (रूट) विशेषाधिकारों के साथ चल रही गेडिट विंडो में एक फ़ाइल खोलता है।

उबंटू के सभी समर्थित संस्करणों में Nautilus Admin इंस्टॉल करने के लिए टर्मिनल खोलें और टाइप करें:

sudo apt install nautilus-admin

मैंने फ़ाइलों और गेडिट के अलावा अन्य अनुप्रयोगों के लिए 18.04 में gksu के सभी विकल्पों का परीक्षण किया है, और सबसे लगातार काम करने वाला ऐसा लगता है:

sudo -H appname &> / dev / null

pkexecgksu के लिए सबसे अच्छा प्रतिस्थापन है जब यह काम करता है क्योंकि यह उच्च सुरक्षा प्रदान करता है, लेकिन यह विभिन्न ऐप्स के लिए बहुत असंगत है (उदाहरण के लिए यह Gedit के साथ काम नहीं करता है) और कुछ ऐप्स के साथ क्रैश हो सकता है। sudo -iयह प्रबंधन करने के लिए अनावश्यक रूप से मुश्किल है क्योंकि यह आपके विशेषाधिकारों को समय की विस्तारित अवधि के लिए रूट करने के लिए बढ़ाता है जब आपको केवल एक कमांड चलाने के लिए रूट होने की आवश्यकता होती है।


3

मैं एक स्क्रिप्ट का उपयोग करता हूं जिसे sgeditफ़ॉन्ट, टैब और एक्सटेंशन के लिए उपयोगकर्ता प्राथमिकताएं प्राप्त होती हैं। यह GUI वातावरण में स्थिरता sudo -H geditके gksu geditलिए उपयोग करता है। यह एक पासवर्ड के लिए संकेत देता है।

है sudoइनहेरिट अपने उपयोगकर्ता खाते geditसेटिंग

sgedit 80 कॉलम सही स्लाइडर.जीआईएफ

इस उदाहरण में फ़ॉन्ट नाम, फ़ॉन्ट आकार, टैब स्टॉप के लिए उपयोगकर्ता सेटिंग, टैब को रिक्त स्थान में परिवर्तित, 80 कॉलम हाइलाइट, और दाईं ओर थंबनेल स्लाइडर बार द्वारा विरासत में मिला है sudo

नियमित रूप से sudo -H geditआप इन कॉन्फ़िगरेशन सेटिंग्स को न तो बना सकते हैं और न ही सहेज सकते हैं। नीचे दी गई स्क्रिप्ट के साथ sgeditसेटिंग्स आपके उपयोगकर्ता खाते से विरासत में मिली हैं।

यह स्क्रिप्ट " gksuखराब है और डिफ़ॉल्ट रूप से स्थापित नहीं है " को संबोधित करती है और pkexec"समस्याओं को सेटअप करना कठिन है"।


पृष्ठभूमि

मैं वर्षों से एक ही मुद्दे से घिरा हुआ हूं। इस सप्ताह के अंत में sgeditस्क्रिप्ट लिखने का प्रोजेक्ट था :

  • का उपयोग कर कॉल करें sgedit filename1 filename2...
  • टैब स्टॉप, फोंट, लाइन-रैप, आदि के लिए उपयोगकर्ता की gedit सेटिंग्स हो जाती हैं।
  • sudo -Hजड़ शक्तियों को प्राप्त करते हुए फ़ाइल के स्वामित्व को संरक्षित करने के लिए ऊंचाई ।
  • यदि अंतिम sudo समय समाप्त हो गया है तो अनुरोध पासवर्ड।
  • सूडो की गेदित सेटिंग हो जाती है
  • उपयोगकर्ता और sudo gedit सेटिंग्स के बीच अंतर की तुलना करता है
  • रन gsettings setअंतर के केवल (174 कम कर देता है setएक दर्जन से अधिक को आदेश या उससे कम। अगली बार इसे चलाने है शायद केवल एक या दो परिवर्तन लेकिन अक्सर बार भी नहीं।
  • एक पृष्ठभूमि कार्य के रूप में gedit को कॉल करता है जैसे टर्मिनल प्रॉम्प्ट तुरंत फिर से प्रकट होता है।

बैश लिपि sgedit

#!/bin/bash

# NAME: sgedit
# PATH: /mnt/e/bin
# DESC: Run gedit as sudo using $USER preferences
# DATE: June 17, 2018.

# Must not prefix with sudo when calling script
if [[ $(id -u) == 0 ]]; then
    zenity --error --text "You cannot call this script using sudo. Aborting."
    exit 99
fi

# Get user preferences before elevating to sudo
gsettings list-recursively | grep -i gedit | grep -v history |
    grep -v docinfo |
    grep -v virtual-root | grep -v state.window > /tmp/gedit.gsettings

sudoFunc () {
    # Must be running as sudo
    if [[ $(id -u) != 0 ]]; then
        zenity --error --text "Sudo password authentication failed. Aborting."
        exit 99
    fi

    # Get sudo's gedit preferences
    gsettings list-recursively | grep -i gedit | grep -v history |
        grep -v docinfo |
        grep -v virtual-root | grep -v state.window > /tmp/gedit.gsettings.root
    diff /tmp/gedit.gsettings.root /tmp/gedit.gsettings | grep '>' > /tmp/gedit.gsettings.diff
    sed -i 's/>/gsettings set/g; s/uint32 //g' /tmp/gedit.gsettings.diff
    chmod +x /tmp/gedit.gsettings.diff
    bash -x /tmp/gedit.gsettings.diff  # Display override setting to terminal
    nohup gedit $@ &>/dev/null &
}

FUNC=$(declare -f sudoFunc)
sudo -H bash -c "$FUNC; sudoFunc $*;"

गृह व्यवस्था

ऊपर बैश स्क्रिप्ट को एक नई फ़ाइल में कॉपी करें जिसे कहा जाता है sgedit। मैं इसे आपकी $HOME/binनिर्देशिका में रखने की सलाह देता हूं , अर्थात /home/YOURNAME/bin। आपको पहले डायरेक्टरी बनानी पड़ सकती है।

फ़ाइल को निष्पादन योग्य के रूप में चिह्नित करें:

chmod a+x ~/sgedit

नोट के ~लिए एक शॉर्टकट है /home/YOURNAME


0

Ubuntu 18.04: कुछ इंस्टॉलेशन प्रोग्राम और अन्य को एक ही नाम के साथ उपलब्ध होने के लिए gksudo या gksu की आवश्यकता होती है। ये काम करने के लिए:

का सूक्ति संस्करण स्थापित करें ssh-askpass। इसके बिना पासवर्ड संवाद किसी अन्य विंडो के पीछे छिपा हो सकता है:

sudo apt-get install ssh-askpass-gnome

नई फ़ाइल बनाएँ my-gksudo.sh:

sudo -H gedit /etc/profile.d/my-gksudo.sh

फ़ाइल सामग्री:

export SUDO_ASKPASS=/usr/bin/ssh-askpass

समान सामग्री के साथ नई फ़ाइलें gksudo और gksu बनाएँ:

sudo -H gedit /usr/bin/gksudo

तथा

sudo -H gedit /usr/bin/gksu

दोनों के लिए फ़ाइल सामग्री:

sudo -A $@

Gksudo और gksu निष्पादन योग्य बनाएं:

sudo chmod +x /usr/bin/gksudo

तथा

sudo chmod +x /usr/bin/gksu

कम्प्युटर को रीबूट करो।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.