আমি কীভাবে পটভূমিতে পাসওয়ার্ড ইনপুট প্রয়োজন একটি sudo কমান্ড চালাতে পারি?


29

আমি সম্প্রতি sudoএর প্রমাণীকরণের ক্যাচিং ক্ষমতাটি অক্ষম করে রেখেছি যাতে এখন এটি প্রতিটি সময় আমাকে পাসওয়ার্ডের জন্য অনুরোধ করে।

যদিও এটি সুরক্ষার পক্ষে ভাল তবে এটি একটি সামান্য সমস্যা সৃষ্টি করেছে যার সমাধান আমি বের করতে সক্ষম হইনি, আমি কমান্ডগুলি চালাতে পারছি না যেগুলি:

sudo <command> &

অতীতে আমি এর sudoআগে একটি কমান্ড চালাতাম, এটি আমার পাসওয়ার্ডটি ক্যাশে করত এবং sudoপরের কয়েক মিনিটের জন্য আমাকে প্রম্পট ছাড়াই কমান্ড চালানোর অনুমতি দেয় এবং এভাবে এটি আমাকে কমান্ডটি চালানোর অনুমতি দেয়।
তবে যখন আমি এখন এটি চালাচ্ছি যেহেতু হাতের আগে কোনও ক্যাশে নেই এবং এটি তাত্ক্ষণিকভাবে একটি নতুন থ্রেড শুরু sudoকরে এবং আমাকে পাসওয়ার্ডের জন্য অনুরোধও করে না, আমি এটিকে এটি চালাতে অক্ষম।

সুতরাং আমি যদি এর sudo -iআগে না চালাই তবে আমি এই বিন্যাসে একটি কমান্ড চালাতে পারব না যা বিরক্তিকর হয়ে উঠছে।
সুতরাং আমি ভাবছিলাম যে এটির কাছাকাছি যাওয়ার কোনও উপায় আছে এবং এখনও এইভাবে প্রোগ্রাম এবং কমান্ডগুলি চালানো যেতে পারে?

আমি জিনোম ৩.১৮ সহ উবুন্টু জিনোম ১৫.১০ চালাচ্ছি, এবং বিশেষত যে প্রোগ্রামটি আমি এই ফ্যাশনে চালাতে চাই তা etherapeযদি কোনও পার্থক্য করে তবে আমি অবশ্যই সমস্ত প্রোগ্রাম এবং কমান্ডের জন্য কাজ করার সমাধানটি চাই।


3
@ কোসিন্স &সত্যই অনুসন্ধানযোগ্য নয়, আমি এটিতে পরিবর্তন করছি … sudo command in the background
মারু

@ মুরু যদি আপনি জনপ্রিয় অনুসন্ধান ইঞ্জিনগুলি এর পরিবর্তে বিশেষ অক্ষরগুলির জন্য অনুসন্ধান করতে পারেন। : পি
কোস

উত্তর:


56

sudoব্যাকগ্রাউন্ডে চলার পরিবর্তে, পটভূমিতে sudoকমান্ডটি চালাতে বলুন । থেকে man sudo:

-b, --background
     Run the given command in the background.  Note that it is not
     possible to use shell job control to manipulate background
     processes started by sudo.  Most interactive commands will
     fail to work properly in background mode.

উদাহরণ স্বরূপ:

sudo -b sleep 10

আর একটি উপায় হ'ল কমান্ডটি চালানোর জন্য একটি শেল ব্যবহার করা হবে:

sudo sh -c 'sleep 10 &'

অন্য বিকল্পটি পাসওয়ার্ড প্রাপ্ত করার জন্য একটি গ্রাফিকাল প্রোগ্রাম নির্দিষ্ট করে এবং যে sudoকোনওভাবে পটভূমিতে প্রেরণ করবে:

-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-gnomeপ্যাকেজ দ্বারা সরবরাহ করা হয় , যা কমপক্ষে উবুন্টু 15.10 এ ডিফল্টরূপে ইনস্টল করা হয়।

SUDO_ASKPASS=/usr/bin/ssh-askpass sudo -A sleep 10 &

11

আপনি যদি timestamp_timeoutকমপক্ষে 0.02(১.২ সেকেন্ডের মতো কিছু স্থির করতে চান তবে আমি যেমন নিরাপদ বলব 0) /etc/sudoersআপনার ক্ষেত্রে প্রয়োজন (তবে আপনার ক্ষেত্রে ডিফল্ট সেটিংস বা timestamp_timeoutকোনও কিছুতে সেট করা 0থাকলেও একটি নিম্নলিখিতটি করতে পারে) , আপনি এটির মতো একটি উপনাম সেট করতে পারেন ~/.bashrc, যাতে কমান্ড চালানোর আগে আপনাকে কিছু করার দরকার মনে রাখে না এবং এটি আপনাকে প্রক্রিয়া নিয়ন্ত্রণে রাখার অনুমতি দেয় .:

alias sudo='sudo -v; [ $? ] && sudo'

ট্রিকটি হ'ল সেমিকোলন, যা ব্যাশকে sudo -vপ্রথম এবং পৃথক পৃথকভাবে পৃথক করে তুলবে , ব্যবহারকারীর সত্যতা প্রমাণ করবে এবং সম্ভাব্য পটভূমি অংশটি [ $? ] && sudoকমান্ডের মধ্যে সীমাবদ্ধ করবে, যা sudo -vসফল হবে কিনা তা পরীক্ষা করে দেখাবে sudo(সম্ভাব্যভাবে ব্যাকগ্রাউন্ডিং হয়েছে) সে ক্ষেত্রে এটি পুনরায় চালিত হবে।

$ alias sudo='sudo -v; [ $? ] && sudo'
$ sudo -H gedit &
[sudo] password for user:
[1] 19966
$ jobs
[1]+  Running                 [ $? ] && sudo -H gedit &

না sudo -vক্রেডেনশিয়াল ক্যাশে এমনকি যদি ক্যাশে অক্ষম করা হয়েছে প্রসারিত? এবং, আইআইআরসি <এলিয়াসগুলি প্রসারিত করার জন্য, স্থানটি কমান্ডের শেষে হওয়া উচিত, শুরুতে নয়।
মুড়ু

@ মুরু রিগত আমি ভুলে গেছি সে timestamp_timeoutসেট করে দিয়েছে 0। এবং হ্যাঁ, আমি সম্পূর্ণরূপে ওরফে সম্প্রসারণের জিনিসটি নিয়ে গণ্ডগোল করেছি, প্রকৃতপক্ষে উপনামটি প্রসারিত হওয়া উচিত নয় । ধন্যবাদ।
কোস

alias sudo='sudo -v && sudo'ঠিক তেমন ভাল হবে না ?
জি-ম্যান

@ জি-ম্যান না, এটি কাজ করে কারণ ;বাশকে sudo -vপ্রথম এবং পৃথক পৃথক করে তোলে ; &&বাশ ব্যবহার করা উভয়ই একক কমান্ড এবং পটভূমি উভয়ই তত্ক্ষণাত পার্স করে।
kos

8

আপনি পারবেন না। &অবিলম্বে পটভূমি কমান্ড পাঠায়। অর্থাৎ, একটি সাবশেল পটভূমিতে তৈরি হয় এবং কমান্ডটি সেখানে কার্যকর করা হয়। যখন সেই কমান্ড প্রম্পট জারি করে, sudoঠিক তেমনই প্রম্পটটি পটভূমিতে প্রদর্শিত হয় এবং আপনি এটি কখনই দেখতে পাবেন না।

এর চারপাশের একমাত্র উপায় হ'ল কমান্ডটিকে অগ্রভাগে ফিরিয়ে আনা, পাসওয়ার্ড সরবরাহ করা এবং ব্যাকগ্রাউন্ডে ফিরে পাঠানো। উদাহরণ স্বরূপ:

$ sudo command &
$ fg
sudo command
[sudo] password for terdon: 

এখন, আপনার পাসওয়ার্ড প্রবেশ করান, হিট করুন Enterএবং তারপরে CtrlZএটিকে ব্যাকগ্রাউন্ডে ফেরত পাঠাতে এবং bgচালিয়ে যেতে চালিয়ে যেতে বলুন hit

একটি সহজতর পদ্ধতির ব্যবহার করতে না হবে &সঙ্গে ম্যানুয়ালি পটভূমি এবং পরিবর্তে, পাঠান কাজ CtrlZএবং bgতাদের চালু করেন।

শেষ পর্যন্ত, আপনি 1 বা 2 সেকেন্ডের মতো কোনও ক্ষেত্রে সুডোর পাসওয়ার্ডের সময়সীমা নির্ধারণের বিষয়টি বিবেচনা করতে চাইতে পারেন। এটি এখনও আপনাকে পর্যাপ্ত সুরক্ষা দেবে (যদি না আপনি ফ্ল্যাশের বিরুদ্ধে রক্ষার চেষ্টা করছেন) এবং প্রত্যাশার মতো আপনাকে কমান্ড চালানোর অনুমতি দেয় না।


ফ্ল্যাশটি আমার চকোলেট কেকটি চুরি করছে তাই ... ; পি

2
এই অ্যাডোব দুর্বলতা এবং ফার্মওয়্যার সংক্রামিত ম্যালওয়ারের যুগে, ফ্ল্যাশ সম্পর্কে সতর্ক থাকা সতর্কতাযুক্ত।
ড্যামিয়ান ইয়ারিক

1
@ ডামিয়ানইয়েরিক এন.উইকিপিডিয়া.আর.উইকি
ফ্ল্যাশ_

পার্শ্ব নোটে, টাইমআউটটি সেকেন্ডে সেট করা কি আসলেই সম্ভব? man sudoersবলছে timestamp_timeoutএর মান একটি সম্ভাব্য ভগ্নাংশের অংশের সাথে মিনিট নির্দিষ্ট করবে (যা sudoআমি যদি একটি নির্দিষ্ট করার চেষ্টা করি তবে কেন ত্রুটি হয় না তা ভুল হয়ে যায়)।
kos

2
@ কোস এটি হ্যাঁ মনে হচ্ছে। 2.5এখানে দুর্দান্ত কাজ করে (আর্চ, sudoসংস্করণ 1.8.15)।
টেরডন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.