স্ক্রিপ্টে sudo ব্যবহার করার সময় আমি জিইউআই প্রম্পট দ্বারা কীভাবে পাসওয়ার্ড জিজ্ঞাসা করব?


14

আমি জিনোম ফ্ল্যাশব্যাক ডেস্কটপ এনভায়রনমেন্ট সহ ট্রিস্কেল জিএনইউ / লিনাক্স ব্যবহার করি। sudoস্ক্রিপ্ট সহ কমান্ড কার্যকর করার জন্য ব্যবহারকারীর জন্য আমার জিইউআই পাসওয়ার্ড প্রম্পট দরকার । উদাহরণ নিম্নলিখিত স্ক্রিপ্ট বিবেচনা:

zenity --question --text="Do you want to install this package?"
if [[ $? -eq 0 ]]; then sudo apt-get install package
else zenity --warning
fi

নিম্নলিখিতটি (রান) অর্থাৎ টার্মিনালের অভ্যন্তরে নয় যা কার্যকর করা হবে:

স্ক্রিন-শট

সুতরাং, কমান্ড চালানোর জন্য পাসওয়ার্ড জিজ্ঞাসা করা দরকার sudoঅন্যথায় এটি কোনও কাজ করতে ব্যর্থ হয়।

সুতরাং, আমি কীভাবে জিইআইআই প্রম্পট দ্বারা পাসওয়ার্ড জিজ্ঞাসা করব?

উত্তর:


19

আপনি জিইউআই প্রম্পটের সাহায্যে পাসওয়ার্ড জানতে চাইতে পারেন -A, --askpass

ম্যানপেজ থেকে:

-A, --askpass
                 Normally, if sudo requires a password, it will read it from the user's terminal.  If the -A
                 (askpass) option is specified, a (possibly graphical) helper program is executed to read the user's
                 password and output the password to the standard output.  If the SUDO_ASKPASS environment variable
                 is set, it specifies the path to the helper program.  Otherwise, if sudo.conf(5) contains a line
                 specifying the askpass program, that value will be used.  For example:

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

                 If no askpass program is available, sudo will exit with an error.

সুতরাং, আপনি গ্রাফিক্যাল সাহায্যকারী প্রোগ্রাম যেমন করতে পারেন ssh-askpassযা একটি পাস-ফ্রেজ জন্য একটি লিখতে অনুরোধ গনোম ব্যবহার করছে:

$ which ssh-askpass
/usr/bin/ssh-askpass

সুতরাং, নিম্নলিখিত লাইনটি এতে যুক্ত করুন /etc/sudo.conf:

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

এবং আপনি জিইউআই পাসওয়ার্ড প্রম্পট পাবেন:

স্ক্রিন-shot1

আপনি এটির মতো অন্যান্য প্রোগ্রামও zenityব্যবহার করতে পারেন। আমি নিম্নলিখিত ব্যবহার উদাহরণ:

$ cat /etc/sudo.conf
# Path to askpass helper program
Path askpass /usr/local/bin/zenity_passphrase

কোথায় zenity_passphraseএকটি কাস্টম স্ক্রিপ্ট হয় সেট কমান্ড হিসাবে সরাসরি ব্যবহার করতে হবে:

$ cat $(which zenity_passphrase)
#!/bin/bash
zenity --password --title="sudo password prompt" --timeout=10

যা এর মতো কাজ করে:

স্ক্রিন-shot2


বিঃদ্রঃ:

  • আপনি জিপিআই প্রম্পট সহ জিজ্ঞাসা করা স্ক্রিপ্টের gksudoপরিবর্তে (সু এবং সুডোর জন্য জিটিকে + ফ্রন্ট্যান্ড) ব্যবহার করতে পারেন sudo:

    স্ক্রিন-shot3

  • আপনি কিছু pkexec( পলকিট অ্যাপ্লিকেশন) ব্যবহার করতে পারেন ( অন্যদের জন্য এটির কনফিগার করা দরকার) অ্যাপ্লিকেশন / কমান্ডগুলি:

    স্ক্রিন-শট


উদাহরণস্বরূপ pkexec leafpad, পেকেক্সেক ব্যবহার Cannot open display:করার সময় এটি পাসওয়ার্ড দেওয়ার পরে দেয় । কোন অ্যাডিশনাল কনফিগারেশন প্রয়োজন?
জিটিআরনিক

চেষ্টা করুনDISPLAY=:0 pkexec leafpad
পান্ড্যা

এখনও কাজ করছে না, একই বার্তাটি Cannot open display:উপস্থিত হয়
GTRONICK
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.