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
kdesudo
मैं ऊपर वर्णित एक ही समस्या से ग्रस्त है। मैं sudo -A
एक विकल्प के रूप में परीक्षण कर रहा था kdesudo
और यह मेरी स्थिति के लिए बेहतर है, लेकिन यह टाइमआउट मुद्दे (कम से कम अब तक) को हल नहीं करता है।
gksudo
यहां विकल्प नहीं है? linux.die.net/man/1/gksudo