সুডোয়ার্স ফাইল, ব্যবহারকারীর জন্য এনওপিএসডাব্লুডি সক্ষম করুন, সমস্ত কমান্ড

ভূমিকা

এটি সম্পর্কিত মোটামুটি জটিল প্রশ্ন সুডোয়ার ফাইল এবং সুডো কমান্ড সাধারণভাবে.

উল্লেখ্য: আমি উদ্দেশ্যে শেখার জন্য বিশুদ্ধরূপে ব্যবহার করে, উবুন্টু ডেস্কটপ 13.04 চলমান একটি ডেডিকেটেড মেশিনে এই পরিবর্তন করেছেন. আমি বুঝতে পারি নোপাসডাব্লুডি সুডো সক্ষম করা এটি একটি বিশাল সুরক্ষা ঝুঁকি

প্রশ্ন

প্রথম আলো: অভিজিৎ রায় (/etc/sudoers) একটি লাইন ছিল, একটি ব্যবহারকারী স্পেসিফিকেশন যা নিকোলসনজেএফকে পাসওয়ার্ড প্রবেশ না করেই সুডোর সাথে সমস্ত কমান্ড চালাতে সক্ষম করা উচিত ছিল (নিকলসনজেএফ দিয়ে শুরু হওয়া লাইনটি দেখুন):

# This file MUST be edited with the 'visudo' command as root.## Please consider adding local content in /etc/sudoers.d/ instead of# directly modifying this file.## See the man page for details on how to write a sudoers file.#Defaults        env_resetDefaults        mail_badpassDefaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"# Host alias specification# User alias specification# Cmnd alias specification# User privilege specificationroot    ALL=(ALL:ALL) ALLnicholsonjf    ALL=NOPASSWD: ALL# Members of the admin group may gain root privileges%admin ALL=(ALL) ALL# Allow members of group sudo to execute any command%sudo   ALL=(ALL:ALL) ALL# See sudoers(5) for more information on "#include" directives:#includedir /etc/sudoers.d

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

কেউ কি ব্যাখ্যা করতে পারেন কেন এটি কাজ করেছে?

এটি কি কারণ ব্যবহারকারী নিকোলসনজেএফ দুটি গ্রুপের স্পেসিফিকেশন থেকে সুডো অধিকার উত্তরাধিকার সূত্রে প্রাপ্ত হয়েছিল admin এবং sudo (সুডোয়ার্স ফাইলে নীচে দেখা গেছে), যা নিকোলসনজেএফ ব্যবহারকারীর স্পেসিফিকেশনকে ওভাররাইড করছিল কারণ তারা কনফিগারেশন ফাইলে আরও নিচে ছিল?

আপনি যোগ লাইন উপেক্ষা করা হয়. থেকে man sudoers:

একাধিক এন্ট্রি একটি ব্যবহারকারীর জন্য মেলে, তখন তারা যাতে প্রয়োগ করা হয়. যেখানে একাধিক ম্যাচ রয়েছে, শেষ ম্যাচটি ব্যবহৃত হয়(যা অগত্যা সর্বাধিক নির্দিষ্ট ম্যাচ নয়)

আপনার ক্ষেত্রে nicholsonjf দলের সদস্য ছিলেন sudo সুতরাং তার জন্য এই লাইন প্রয়োগ:

%sudo   ALL=(ALL:ALL) ALL

আপনি এন্ট্রি ওভাররাইড করতে চান /etc/sudoers শুধু তাদের পরে নতুন এন্ট্রি করা.

নতুন এন্ট্রি মত চেহারা উচিত

myuser ALL=(ALL) NOPASSWD: ALL একক ব্যবহারকারীর জন্য, অথবা

%sudo ALL=(ALL) NOPASSWD: ALL একটি দলের জন্য.

একটি একক ব্যবহারকারীর জন্য, আপনার শেষে এই লাইন যোগ করুন sudoers ফাইল ব্যবহার করে sudo visudo কমান্ড:

superuser ALL=(ALL) NOPASSWD:ALL

একটি দলের জন্য

%supergroup  ALL=(ALL) NOPASSWD:ALL

যে ব্যবহারকারী ব্যবহার করে যখন একটি পাসওয়ার্ড জন্য বর্তমান ব্যবহারকারী প্রম্পট না sudo এই কমান্ডটি চালান:

echo "$USER ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/dont-prompt-$USER-for-sudo-password

এটি নামে একটি ফাইল তৈরি করে /etc/sudoers.d/dont-prompt-<YOUR USERNAME>-for-sudo-password নিম্নলিখিত বিষয়বস্তু সঙ্গে:

<YOUR USERNAME> ALL=(ALL:ALL) NOPASSWD: ALL

নিজে যে লাইন যোগ উপর এই ভাবে করছেন সুবিধার /etc/sudoers ব্যবহার sudo visudo (অন্যান্য উত্তর দ্বারা প্রস্তাবিত হিসাবে) হয়

  1. /etc/sudoers কখনও কখনও সিস্টেম আপডেট দ্বারা পরিবর্তিত হয়, যেখানে ফাইল /etc/sudoers.d হয় না
  2. দ্য sudo visudo পদ্ধতিটি ত্রুটির ঝুঁকিপূর্ণ (যেমন এই খুব প্রশ্ন দ্বারা প্রমাণিত), যেখানে একটি কমান্ড অনুলিপি করুন এবং আটকানো গণ্ডগোল করা শক্ত

মনে রাখবেন যে আপনাকে এখনও অন্যান্য প্রসঙ্গে পাসওয়ার্ডের জন্য অনুরোধ করা যেতে পারে, যেমন স্টাফ ইনস্টল করা উবুন্টু সফটওয়্যার গ্রাফিকাল অ্যাপ্লিকেশন.

অনুযায়ী sudo cat /etc/sudoers.d/README এই বৈশিষ্ট্য (অতিরিক্ত সুদোয়ার ফাইল নির্বাণ /etc/sudoers.d) ডেবিয়ান 1.7.2 পি 1-1 থেকে ডিফল্টরূপে সক্ষম করা হয়েছে, যা 1990 এর দশকের শেষের দিকে বেরিয়ে এসেছিল (উবুন্টু ডেবিয়ান উপর ভিত্তি করে).

আমি এই গবেষণা ছিল, আমি একটি লাইন আছে উপলব্ধি /etc/sudoers একটি মন্তব্য নয় যে ফাইল, কিন্তু একটি নির্দেশিকা যে ডিরেক্টরি অধীনে কোন ফাইল বা ফোল্ডার তোলে /etc/sudoers/* এর বিষয়বস্তু অগ্রাহ্য করুন /etc/sudoers.

এটি একটি গোপন সামান্য নির্দেশিকা, এটি প্রথম নজরে উপর একটি মন্তব্য লাইন বলে মনে হচ্ছে. এটা এই মত দেখায়:

#includedir /etc/sudoers.d

উবুন্টু:18.04 এর বেস ইমেজ সহ একটি সিসিড পাইপলাইনে ব্যবহারের জন্য আমি একটি সংক্ষিপ্ত ডকার ইমেজে নন-রুট, পাসওয়ার্ডহীন ব্যবহারকারীকে এইভাবে প্রয়োগ করেছি:

RUN \  useradd -U foo -m -s /bin/bash -p foo -G sudo && passwd -d foo && passwd -d root && \  sed -i /etc/sudoers -re 's/^%sudo.*/%sudo ALL=(ALL:ALL) NOPASSWD: ALL/g' && \  sed -i /etc/sudoers -re 's/^root.*/root ALL=(ALL:ALL) NOPASSWD: ALL/g' && \  sed -i /etc/sudoers -re 's/^#includedir.*/## Removed the #include directive! ##"/g' && \  echo "Customized the sudoers file for passwordless access!" && \  echo "foo ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers && \  echo "root ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers && \  echo "foo user:";  su foo -c 'whoami && id' && \  echo "root user:"; su root -c 'whoami && id'

উপরের কোড দিয়ে কি হবে:

  • ব্যবহারকারী এবং গ্রুপ foo তৈরি করা হয়.
  • ব্যবহারকারী foo উভয় যোগ করা হয় foo এবং sudo গ্রুপ.
  • হোম ডিরেক্টরি সেট করা হয় /home/foo.
  • শেল সেট করা হয় /bin/bash.
  • দ্য sed কমান্ড ইনলাইন আপডেট করে /etc/sudoers অনুমতি দেওয়ার জন্য ফাইল foo এবং root ব্যবহারকারীদের পাসওয়ার্ডহীন অ্যাক্সেস sudo গ্রুপ.
  • দ্য sed কমান্ড নিষ্ক্রিয় করে #includedir সাবডিরেক্টরি কোন ফাইল এই ইনলাইন আপডেট অগ্রাহ্য করা সম্ভব হবে যে নির্দেশিকা.

এএস ভিন্স আছে একটি মন্তব্যে উল্লিখিত, আপনি এই লাইনটি ব্যবহার করতে পারেন:

%sudo ALL=NOPASSWD: ALL

(এই দেখানো লাইন থেকে ভিন্ন সেগুলো উত্তর, এবং এটা আমার জন্য সমস্যার সমাধান.)

এক সুডোয়ার্স ফাইলের শেষে ইএফ ফরম্যাটিং ছাড়াই এক লাইনে একটি স্ট্রিং সন্নিবেশ করতে পারে বা এর সাথে মুছে ফেলতে পারে sed -i:

cat >> /etc/sudoers <<<'PaSe ALL=(ALL:ALL) NOPASSWD:ALL'

তথ্যসূত্র:https://stackoverflow.com/questions/41298208/how-to-append-a-line-at-the-end-of-etc-sudoers-file-using-shell-script-without/70039824#70039824

দ্রষ্টব্য: সমস্ত = নোপাসডাব্লুডি: সমস্ত কিছু হতে হবে = (সমস্ত) নোপাসডাব্লুডি: সব বা অন্য এটি কাজ করে না…

এর সম্ভাব্য সদৃশ সুডোয়ার্স নোপাসডাব্লুডি বিকল্পটি কেন কাজ করছে না?

এই উত্তরটি দেখুন : sudo does not ask for password - Ask Ubuntu