অ-অনুমতিপ্রাপ্ত কমান্ড চলাকালীন sudo পাসওয়ার্ডের অনুরোধ করা থেকে বিরত করুন


15

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

এখানে আমার sudoers ফাইলের একটি উদাহরণ রয়েছে:

%mygroup ALL=(ALL) NOPASSWD:/usr/local/bin/myscript.sh *

উদাহরণস্বরূপ তারা যখন ভুল স্ক্রিপ্ট চালায়:

# sudo /usr/local/bin/otherscript.sh
[sudo] password for user:
Sorry, user user is not allowed to execute '/usr/local/bin/otherscript.sh' as root on <hostname>.

পছন্দসই আউটপুট:

Sorry, user user is not allowed to execute '/usr/local/bin/otherscript.sh' as root on <hostname>. Please check the command and try again.

পাসওয়ার্ড প্রম্পটের অভাব নোট করুন।

আমার গুগল-ফু আমাকে ব্যর্থ করেছে এবং যখন ব্যবহারকারীকে কমান্ড চালানোর অনুমতি দেওয়া হয় কেবল তখনই পাসওয়ার্ড না চাওয়ার ফলাফল দেয় ।


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

4
এটি একটি দুর্দান্ত সুরক্ষার সমস্যা You আপনার কমান্ড হিসাবে স্ক্রিপ্ট সহ sudo ব্যবহার করা উচিত নয়। লোকেরা কেবল স্ক্রিপ্ট সম্পাদনা করতে পারে এবং অডিট থেকে পুরোপুরি এটি মাস্কিং করতে চাইলে যা চালাতে পারে। পরিবর্তে স্ক্রিপ্টের ভিতরে কলটি sudo এ যুক্ত করুন।
কোটায়র

1
sudoব্যবহারকারীরা যদি এই ফাইলগুলিতে লেখার অ্যাক্সেস রাখেন তবে @ কোটায়ার বাইনারি ফাইলগুলি সহ চালনা করা একটি ইস্যুটির মতোই বড়।
দিমিত্রি গ্রিগরিয়েভ

1
@ কার্লউইথথফট এজন্য আপনি sudoers এ অনুমোদিত প্রোগ্রামগুলি নির্দিষ্ট করতে নিখুঁত পাথ ব্যবহার করেন।
দিমিত্রি গ্রিগরিয়েভ

1
@ দিমিত্রিগ্রিরিভ, হ্যাঁ, তবে আপনি যদি কেবল একটি ফাইলের জন্য সেড বা এমন কিছু ব্যবহার করতে চলেছেন তবে সুডোর কোনও লাভ নেই। কোনও ব্যবহারকারীকে একটি ফাইল পরিবর্তন করতে দেওয়া হ'ল ফাইলের অনুমতি কেন রয়েছে। আপনাকে চাকাটি পুনর্নির্মাণ করতে হবে না। আপনি যদি কোনও ব্যবহারকারী কোনও ফাইল পরিবর্তন করতে সক্ষম হন তবে তাদের তা দিন। কোনও পাসওয়ার্ড ছাড়াই কোনও ব্যবহারকারী কোনও ফাইল সংশোধন করার অনুমতি দেওয়ার জন্য সুডো সহ হুপসের মধ্য দিয়ে ঝাঁপিয়ে পড়ার কোনও দরকার বা সুবিধা নেই। আপনি সর্বদা তাদের অনুমতি দিতে পারেন। সঠিক কাজের জন্য সঠিক সরঞ্জাম।
কোটায়ার

উত্তর:


25

একটি দ্রুত পড়া থেকে sudo(8)

   -n          The -n (non-interactive) option prevents sudo from
               prompting the user for a password.  If a password is
               required for the command to run, sudo will display an error
               message and exit.

এবং সন্দেহকারীদের জন্য:

# grep jdoe /etc/sudoers
jdoe    ALL=(ALL) NOPASSWD: /bin/echo
#

এইভাবে পরীক্ষিত:

% sudo echo allowed
allowed
% sudo -n ed             
sudo: a password is required
% sudo ed               

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

Password:

সুতরাং একটি aliasজন্য sudoএই ভাবেন জন্য সম্ভবত কৌতুক করতে হবে, পাসওয়ার্ড প্রম্পটের প্রতিরোধ। এখন কেন এটির জন্য কাস্টম সংকলন প্রয়োজন sudo, আমি জানি না, আমি কেবল ম্যানুয়ালটি পড়েছি।


প্রকৃতপক্ষে. আমি alias sudo="$(which sudo) -n"/ etc / bashrc এর মতো কিছু রেখেছি, তারপরে হয় sudo(সামঞ্জস্যপূর্ণ আচরণ) বা command sudo(ডিফল্ট আচরণ) পছন্দসই হিসাবে ব্যবহার করব।
একটি সিভিএন

7

আমার পক্ষে কাজ করা একটি জিনিস (সুডো সংস্করণ 1.8.17p1), তবে আপনার সমস্যার কেবলমাত্র অংশটিই সন্তুষ্ট করে, পাসওয়ার্ডের চেষ্টা সংখ্যা 0 তে সেট করা।

Defaults:%mygroup passwd_tries = 0

পাসওয়ার্ডের জন্য প্রয়োজনীয় কোনও কমান্ড চেষ্টা করার সময় কোড 1 সহ এটি sudo প্রস্থান করে। তবে এটি কোনও ধরণের ত্রুটি বার্তা তৈরি করে না।


এটিও একটি বৈধ উত্তর তবে ত্রুটির বার্তার অভাব বিভ্রান্তিকর হতে পারে। উপরের উত্তর থেকে সঠিক এখনও অপ্রত্যাশিত ত্রুটি যদিও বিভ্রান্তিকর। আমার ধারণা এটি একটি টস আপ। একটি বিকল্প উত্তর দেওয়ার জন্য আপনাকে ধন্যবাদ, বিকল্প সবসময় প্রশংসা করা হয়!
ব্যবহারকারীর 184982

2

তুমি পার না.

আপনি প্রমাণিত না হওয়া পর্যন্ত আপনি কে তা বলার উপায় নেই এবং ডিফল্টরূপে আপনি পাসওয়ার্ড ছাড়া প্রমাণীকরণ করতে পারবেন না।

আপনি ইউএসবি কী, আঙুলের মুদ্রণ স্ক্যানার, ভয়েস প্রমাণীকরণ, মুখের স্বীকৃতি বা অন্যান্য জিনিসপত্রের গুচ্ছ ব্যবহার করতে প্রমাণীকরণ পরিবর্তন করতে পারেন তবে পয়েন্টটি একই is

আপনি প্রমাণীকরণ করতে পারবেন না এবং প্রমাণীকরণের আগে এবং আপনার অনুমোদনের আগে সুডোর কোনও ব্যবসা নেই যা আপনি চালাতে পারেন বা কী চালাতে পারবেন না তা আপনাকে বলে।


2
আপনি sudo চালানোর সময় আপনার পাসওয়ার্ড টাইপ করা সনাক্তকরণ নয় ("আপনি কে তা বলুন")। সুডো জানে তুমি কে। আপনার পাসওয়ার্ড টাইপ করা উপস্থিতি নিশ্চিতকরণ।
গিলস 'অশুভ হওয়া বন্ধ করুন'

আমি উপস্থিতি নিশ্চিতকরণটিকে "প্রমাণীকরণ" হিসাবে বিবেচনা করি। প্রমাণীকরণ হিসাবে, তারপরে অনুমোদন।
কোটায়র

2
উত্তরটি বলে "প্রমাণীকরণ" "সনাক্তকরণ" নয়। যদিও সুডো জানেন যে আপনি যে দাবী করছেন, সেই টার্মিনালে লগইন হওয়া ব্যবহারকারীর উপর ভিত্তি করে, আপনি সেই পরিচয়টি প্রমাণিত না করা পর্যন্ত আপনি কে তা জানেন না ।
ডেভ শেরোহমান

2

@ স্ট্রংব্যাড একটি মন্তব্য করেছেন যা উত্তরের উপযুক্ত:

আমি মনে করি সর্বোত্তম সমাধান হ'ল একটি মোড়ক স্ক্রিপ্ট লিখতে হবে যা সর্বদা sudoসঠিক পরামিতিগুলির সাথে কল করে। (সহ -n)

মোড়ক স্ক্রিপ্টটি আর্গুমেন্ট পার্সিং ইত্যাদি করতে পারে যাতে ডাকা সুডো স্ক্রিপ্টটি যতটা সম্ভব ছোট হয় এবং এর ফলে বাগগুলি হওয়ার সম্ভাবনা কম থাকে।


1

যদি সম্ভব না হয়. একমাত্র উপায় হ'ল উত্স কোড পরিবর্তন করা এবং আপনার নিজের কাঁটাচামচটি সংকলন করাsudo


আপনি ঠিক বলেছেন তবে আমি মনে করি না যে আমি আমাদের সমস্ত প্রোডাকশন সার্ভারে সুডোর একটি কাস্টম সংস্করণ লোড করার অনুমতি পাব। Hah
user184982
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.