পাসওয়ার্ড ছাড়াই sudo কমান্ড কিভাবে চালানো যায়?


235

ubuntuউবুন্টু সার্ভার 12.04 এর জন্য অ্যাডাব্লুএস ছবিতে ব্যবহারকারীর কীভাবে কোনও sudoকমান্ডের জন্য পাসওয়ার্ডহীন থাকতে পারে যখন এতে কোনও কনফিগারেশন নেই /etc/sudoers?

আমি অ্যামাজনে উবুন্টু সার্ভার 12.04 ব্যবহার করছি। আমি এমন একটি নতুন ব্যবহারকারী যুক্ত করতে চাই যা উবুন্টু ব্যবহারকারী হিসাবে একইরকম আচরণ করে। বিশেষত আমি sudoএই নতুন ব্যবহারকারীর জন্য পাসওয়ার্ডহীন চাই ।

সুতরাং আমি একটি নতুন ব্যবহারকারী যুক্ত করেছি এবং সম্পাদনা করতে গিয়েছি /etc/sudoers(অবশ্যই ভিজুডো ব্যবহার করে)। এই ফাইলটি পড়ে মনে ubuntuহয়েছিল ডিফল্ট ব্যবহারকারীরা গোষ্ঠীর sudoসদস্য হওয়া থেকে এটি পাসওয়ার্ডহীন পাচ্ছেন admin। সুতরাং আমি আমার নতুন ব্যবহারকারীকে এতে যুক্ত করেছি। যা কার্যকর হয়নি। তারপরে আমি NOPASSWDনির্দেশকে যুক্ত করার চেষ্টা করেছি sudoers। যা কাজ করে নি।

যাইহোক, এখন আমি শুধু কৌতূহলী। ubuntuব্যবহারকারীরা কীভাবে পাসওয়ার্ডবিহীন সুবিধাগুলি তাদের মধ্যে সংজ্ঞায়িত না করা হয় /etc/sudoers? এটি মেকানিজম কিসের অনুমতি দেয়?


উত্তর:


332

ঠিক আছে, আমি উত্তরটি আবিষ্কার করেছি তাই সম্পূর্ণরূপে এটি এখানে রাখতে পারি। শেষে /etc/sudoersআমি যা ভাবলাম তা কেবল একটি মন্তব্য:

#includedir /etc/sudoers.d

তবে এটি আসলে সেই ডিরেক্টরিটির বিষয়বস্তু অন্তর্ভুক্ত করে। যার ভিতরে ফাইল রয়েছে /etc/sudoers.d/90-cloudimg-ubuntu। যার প্রত্যাশিত বিষয়বস্তু রয়েছে

# ubuntu user is default user in cloud-images.
# It needs passwordless sudo functionality.
ubuntu ALL=(ALL) NOPASSWD:ALL

তাই এখানেই ডিফল্ট উবুন্টু ব্যবহারকারীর জন্য sudo কনফিগারেশন থাকে।

আপনার ভিজুডো ব্যবহার করে এই ফাইলটি সম্পাদনা করা উচিত। নিম্নলিখিত কমান্ডটি আপনাকে ভিজুডোর সাহায্যে সঠিক ফাইলটি সম্পাদনা করতে দেবে।

sudo visudo -f /etc/sudoers.d/90-cloudimg-ubuntu

এবং একটি লাইন যুক্ত করুন:

aychedee ALL=(ALL) NOPASSWD:ALL

শেষে.


4
আমি পুরোপুরি নিশ্চিত যে আমাকে একটি পুরো রিবুট করতে হয়েছিল।
aychedee

2
প্রতিটি নতুন
লগড

32
'সুডো সার্ভিস সুডো রিস্টার্ট' কাজ করে :)
লইস

4
পরবর্তী সংস্করণগুলিতে (উদাহরণস্বরূপ 14.04) অন্তর্ভুক্ত ফাইলটি /etc/sudoers.d/90-cloud-init-users(সম্পাদনা করার জন্য .. sudo visudo -f /etc/sudoers.d/90-cloud-init-users)। যদিও উত্পন্ন ফাইলটি সম্পাদনা করার চেয়ে অতিরিক্ত ফাইলগুলি তৈরি করা পরিষ্কার হবে। নোট করুন যে একটি .বা শেষ হওয়া ফাইলগুলি অন্তর্ভুক্ত করা ~হবে না
মোলম্বি

2
@ ফিল_1984_ সম্ভবত, এটি সুডোর অন্যান্য (স্ট্যান্ডার্ড?) সংস্করণগুলির সাথে সামঞ্জস্যের অনুমতি দেওয়ার জন্য একটি মন্তব্য হিসাবে যুক্ত করা হয়েছিল, যা এতে অন্তর্ভুক্ত নয়, তবে এটি একটি অদ্ভুত মন্তব্য দ্বারা ছড়িয়ে দেওয়া হবে না। (স্ট্যান্ডার্ডগুলি শক্ত !;-)
jpaugh

94

আমি দেখতে পেলাম যে একাধিক সার্ভারের মধ্যে সহজেই এই আচরণটির প্রতিলিপি তৈরি করতে সর্বাধিক সোজা এগিয়ে করা কাজটি ছিল:

sudo visudo

এই লাইনটি পরিবর্তন করুন:

# Members of the admin group may gain root privileges
%admin  ALL=(ALL) ALL

এই লাইনে:

# Members of the admin group may gain root privileges
%admin  ALL=(ALL) NOPASSWD:ALL

এবং এই লাইনের নীচে সরান :

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

আপনার এখন এটি থাকা উচিত:

# 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_reset
Defaults        mail_badpass
Defaults        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 specification
root    ALL=(ALL:ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin  ALL=(ALL) NOPASSWD:ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

তারপরে প্রতিটি ব্যবহারকারীর জন্য যা পাসওয়ার্ডের সাথে সুডো অ্যাক্সেসের প্রয়োজন :

sudo adduser <user> sudo

এবং এমন কোনও ব্যবহারকারীর জন্য যা কোনও পাসওয়ার্ড ছাড়াই সুডো অ্যাক্সেসের প্রয়োজন :

sudo adduser <user> admin

এবং অবশেষে, এটি চালান:

sudo service sudo restart

এবং এটাই!

সম্পাদনা: আপনাকে অ্যাডমিন গ্রুপ যুক্ত করতে হতে পারে কারণ আমি মনে করি এটি ডিফল্টরূপে বিদ্যমান নেই।

sudo groupadd admin

আপনি এই কমান্ডের মাধ্যমে গ্রুপটিতে ডিফল্ট AWS ubuntuব্যবহারকারীকে যুক্ত করতে পারেন admin:

sudo usermod ubuntu -g admin

দ্রষ্টব্য: @ যেহেতু উল্লিখিত হয়েছে, admউবুন্টুর কোন সংস্করণ ব্যবহৃত হচ্ছে তার উপর নির্ভর করে আপনার নিজের অ্যাডমিন গ্রুপের নাম হিসাবে ব্যবহারের প্রয়োজন হতে পারে ।


3
নিজের কাছে নোট করুন: স্ট্যাকের চেয়ে কম সীমাবদ্ধ অনুমতিগুলি সরিয়ে নেওয়ার জন্য এটি একটি সম্মেলন। তবে এটি না করা কার্যকারিতা প্রভাবিত করবে না।
Poweratom

2
জিমিনিকিজ যেমন ব্যাখ্যা করেছেন, আমাকে আমার উবুন্টু জিনোম 16.04 এলটিএস-তে % সুডোর পরে % অ্যাডমিন রাখতে হয়েছিল place এছাড়াও, প্রশাসকদের গোষ্ঠী আইডিটি ঠিক প্রশাসক নয় তবে আমার উবুন্টুকে সম্মান জানায় on কোনও পুনরায় বুট করার দরকার পড়েনি।
হাটা

5

আমি /etc/sudoers.d/ ডিরেক্টরিতে নিজের ফাইল তৈরি করব - অ্যামাজন ক্লাউড দ্বারা নির্মিত ফাইলটি কোনও আপডেটের ক্ষেত্রে ওভাররাইট করা যেতে পারে। /Etc/sudoers.d এ আপনার ফাইল তৈরি করার পরে, এই এন্ট্রিটি যুক্ত করুন,

<your user name> ALL=(ALL) NOPASSWD:ALL

সিস্টেমটি পুনরায় বুট করুন এবং এটি কাজ করবে।


2

কোনও সম্পাদক ব্যবহার না করে সংক্ষিপ্ত উত্তর (ব্যাশের উপর পরীক্ষিত, রিমোট হোস্টগুলিতে চালানো খুব ঝুঁকিপূর্ণ)।

বর্তমান ব্যবহারকারীর জন্য একটি পাসওয়ার্ড ছাড়াই কাজ করতে sudo কনফিগার করুন:

echo "$USER ALL=(ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers

এর সাথে সম্পাদনাটি পরীক্ষা করুন:

sudo visudo -c

আপনি যদি পাসওয়ার্ড ছাড়াই সুডো ব্যবহার করতে পারেন তা যাচাই করুন:

sudo cat /etc/sudoers | grep "$USER"

... বা কেবল এটি দিয়ে চেষ্টা করুন:

sudo <anything>

21
এটি বেশ বিপজ্জনক পরামর্শ ... এই ভুলটি অনুলিপি করে আটকান এবং আপনি নিজের সার্ভার থেকে নিজেকে লক করে রাখবেন। অতএব ভিসুডো ব্যবহারের পরামর্শ। এটি পরীক্ষা করে থাকে যে ডিস্কে সংরক্ষণের আগে সিনট্যাক্সটি সঠিক। সুতরাং, যে কেউ এটি ব্যবহার করতে চান। এমন কোনও রিমোট সার্ভারে এটি করবেন না। আপনি আপনার উত্তরে সে সম্পর্কে একটি সতর্কতা অন্তর্ভুক্ত করতে চাইতে পারেন।
aychedee

8
ভিসুডো ব্যবহার না করা একটি ভয়ঙ্কর ধারণা। বিশ্বাস করুন, আমি জানি।
22

1
আইএমএইচও, একটি অনুলিপি-পেস্ট ম্যানুয়াল সম্পাদনার চেয়ে নিরাপদ। একটি সামান্য সরলীকরণ:echo "$USER ALL=(ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers
theartofrain

4
@ থিয়েটারোফ্রেন - সাধারণত, আমি সম্মত হয়েছি তবে visudoবিশেষত আপনাকে sudoers ফাইলটি ভাঙতে না দেওয়ার বিষয়ে বিশেষভাবে চমৎকার, সুতরাং আপনাকে আপনার মেশিন থেকে লক না করে (বা কমপক্ষে sudo)।
জন ভি

3
@ জোনভি আপনি খুব সহজেই অ্যাডমিনের অধিকার হারাতে পারেন visudo, তবে সাধারণত দুর্ঘটনাক্রমে নয়, কারণ visudoকেবলমাত্র এমন পরিবর্তনগুলি সংরক্ষণ করে যা সুডোর ফাইলগুলির ব্যাকরণ অনুসারে ভালভাবে তৈরি হয় । বেশিরভাগ ভুলগুলি সিন্টেক্সিকভাবে ভুল, তাই এগুলি কোনও ক্ষতি করে না visudo। যদি /etc/sudoersবা একটি ফাইল /etc/sudoers.d হয় মন্দ গঠিত, sudoএকটি নিরাপত্তা পরিমাপ, যার কারণে না ব্যবহার কেউ জন্য বিশেষাধিকার বাড়িয়ে করতে রাজি visudoবিপজ্জনক। (যদিও কখনও কখনওpkexec এটি পুনরায় বুট ছাড়াই এটি ঠিক করতে পারে ))
এলিয়াহ কাগন

0

এভাবেই আমি সিআইসিডি পাইপলাইনে ব্যবহারের জন্য একটি অল্পকালীন ডকার ইমেজে অ-মূল, পাসওয়ার্ডহীন ব্যবহারকারীর প্রয়োগ করেছি:

RUN \
    groupadd -g 999 foo && useradd -u 999 -g foo -G sudo -m -s /bin/bash foo && \
    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 "foo ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers && \
    echo "Customized the sudoers file for passwordless access to the foo user!" && \
    echo "foo user:";  su - foo -c id
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.