ग्राफ को बैश स्क्रिप्ट में पासवर्ड के लिए पूछें और डिफ़ॉल्ट sudo टाइमआउट सेटिंग को बनाए रखें


9

sudo -A(SUDO_ASKPASS) विकल्प जाहिरा तौर पर कारणों का समय समाप्त (जैसे, timestamp_timeout) सेटिंग कम करने के लिए sudo।

मैं sudo-a विकल्प का उपयोग करना चाहता हूं लेकिन मैं डिफ़ॉल्ट टाइमआउट (उदाहरण के लिए, उबंटू में 15 मिनट) को बैश स्क्रिप्ट में बनाए रखना चाहता हूं। मैं उपयोगकर्ता के पासवर्ड को सुरक्षित रूप से और जीयूआई संवाद में पूछना चाहता हूं, लेकिन मैं केवल एक बार अपनी स्क्रिप्ट के लिए (50+ नहीं) के लिए संकेत देना चाहता हूं।

इसके अलावा, मैं अपनी पूरी स्क्रिप्ट को रूट उपयोगकर्ता के रूप में नहीं चलाना चाहता क्योंकि मुझे लगता है कि यह एक बुरा विचार है। इसके अलावा, मेरी स्क्रिप्ट द्वारा बनाई गई फ़ाइलों का इस मामले में गलत स्वामित्व है।

अगर यह डिफ़ॉल्ट टाइमआउट को बनाए रखता है तो sudo -A विकल्प मेरे लिए काम करेगा।

सूडो मैनुअल से:

विकल्प: ‑A

आम तौर पर, अगर sudo को पासवर्ड की आवश्यकता होती है, तो वह इसे उपयोगकर्ता के टर्मिनल से पढ़ेगा। यदि ,A (आस्कपास) विकल्प निर्दिष्ट किया जाता है, तो उपयोगकर्ता के पासवर्ड को पढ़ने और मानक आउटपुट के लिए पासवर्ड को आउटपुट करने के लिए (संभवतः ग्राफ़िकल) सहायक प्रोग्राम निष्पादित किया जाता है। यदि SUDO_ASKPASS परिवेश चर सेट है, तो यह सहायक प्रोग्राम के लिए पथ निर्दिष्ट करता है। अन्यथा, यदि /etc/sudo.conf में एक लाइन है जिसमें आस्कपास प्रोग्राम निर्दिष्ट किया जाता है, तो उस मूल्य का उपयोग किया जाएगा। उदाहरण के लिए:

# Path to askpass helper program
Path askpass /usr/X11R6/bin/ssh-askpass

BTW, kdesudo में यही समस्या है - इसे हर बार पासवर्ड की आवश्यकता होती है, भले ही वह दूसरी बार उसी स्क्रिप्ट में हो।

मैं कुबंटू 12.04 64 बिट का उपयोग कर रहा हूं।

यहाँ समाधान के सभी भागों के पूर्ण कार्य उदाहरण हैं। इसमें बैश स्क्रिप्ट, "माइस्कपास" स्क्रिप्ट शामिल है जैसा कि यहाँ सुझाया गया है , और एक ".desktop" फ़ाइल। पूरी चीजें 100% जीयूआई (कोई टर्मिनल बातचीत बिल्कुल नहीं) होनी चाहिए, इसलिए .desktop फ़ाइल आवश्यक है (afaik)।

$ cat myaskpass.sh 
#!/bin/bash
kdialog --password "Please enter your password: "
exit 0


$ cat askpasstest1.desktop 
#!/usr/bin/env xdg-open
[Desktop Entry]
Comment=SUDO_ASKPASS tester1
Exec=bash /home/user/test/askpasstest1.sh
GenericName=SUDO_ASKPASS tester1
Name=SUDO_ASKPASS tester1
NoDisplay=false
Path[$e]=
StartupNotify=true
Terminal=false
TerminalOptions=
Type=Application
Categories=Application;Utility;
X-KDE-SubstituteUID=false
X-KDE-Username=

और एक टेस्ट स्क्रिप्ट ही। इस समाधान का उपयोग करते समय यह आपके पासवर्ड के लिए दो बार पूछेगा।

#!/bin/bash

sudo -k
SUDO_ASKPASS="/home/user/test/myaskpass.sh" sudo -A touch filemadeas_askpass1
touch filemadeas_regularuser1
SUDO_ASKPASS="/home/user/test/myaskpass.sh" sudo -A touch filemadeas_askpass2
touch filemadeas_regularuser2
ls -la filemadeas* > /home/user/test/fma.log
kdialog --title "Files Created" --textbox /home/user/test/fma.log 640 480
sudo rm filemadeas_*
rm fma.log

exit 0

2
क्या gksudoयहां विकल्प नहीं है? linux.die.net/man/1/gksudo
SLM

मैं केडीई पर हूं, इसलिए gksudo मेरे लिए कोई विकल्प नहीं है, लेकिन मुझे बताया गया कि यह kdesudo के समान ही काम करता है। kdesudoमैं ऊपर वर्णित एक ही समस्या से ग्रस्त है। मैं sudo -Aएक विकल्प के रूप में परीक्षण कर रहा था kdesudoऔर यह मेरी स्थिति के लिए बेहतर है, लेकिन यह टाइमआउट मुद्दे (कम से कम अब तक) को हल नहीं करता है।
माउंटेनएक्स

जवाबों:


7

मैं इसे अपने बैश स्क्रिप्ट में जोड़ता हूं:

# ask for password up-front.
sudo -v
# Keep-alive: update existing sudo time stamp if set, otherwise do nothing.
while true; do sudo -n true; sleep 60; kill -0 "$$" || exit; done 2>/dev/null &

यहाँ मिला:

/server/266039/temporarlly-increasing-sudos-timeout-for-the-duration-of-an-install-script

https://gist.github.com/cowboy/3118588

मैं अपनी मुख्य स्क्रिप्ट को लॉन्च करने के लिए एक और स्क्रिप्ट का उपयोग करता हूं और उस सहायक स्क्रिप्ट को लॉन्च करने के लिए एक .desktop फ़ाइल का उपयोग करता हूं। यह बहुत सीधा नहीं है, लेकिन इसे 100% जीयूआई बनाने के लिए बनाया जा सकता है। मैं अभी भी सही समाधान की तलाश कर रहा हूं, लेकिन यह अभी के लिए चाल चल रहा है।


1

कैसे gksudo के बारे में ?

$ gksudo your_app_launcher.sh

यह व्यवस्थापक पासवर्ड को सुरक्षित रूप से दर्ज करने के लिए एक चित्रमय संवाद दिखाता है।

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