কীভাবে একটি অবৈধ '/ etc / sudoers' ফাইলটি সংশোধন করবেন?


238

আমি কীভাবে একটি অবৈধ sudoers ফাইল সম্পাদনা করব? এটি নীচের ত্রুটি ছুঁড়ে ফেলেছে এবং এটি ঠিক করার জন্য এটি আমাকে আবার সম্পাদনা করার অনুমতি দিচ্ছে না।

যা ঘটে তা এখানে:

$ sudo visudo
>>> /etc/sudoers: syntax error near line 28 <<<
sudo: parse error in /etc/sudoers near line 28
sudo: no valid sudoers sources found, quitting

2
ভালো প্রশ্ন এই পৃষ্ঠার বিবেচনায় যে ত্রুটি সৃষ্টি help.ubuntu.com/community/RootSudoTimeout

উত্তর:


361

একটি আধুনিক উবুন্টু সিস্টেমে (এবং অন্যান্য অনেকগুলি জিএনইউ / লিনাক্স বিতরণ), একটি দূষিত sudoersফাইল ফিক্স করা আসলে বেশ সহজ, এবং একটি লাইভ সিডি ব্যবহার করে বা মেশিনে শারীরিক অ্যাক্সেস ব্যবহার করে পুনরায় বুট করার দরকার হয় না।

এসএসএইচের মাধ্যমে এটি করতে, মেশিনে লগ ইন করুন এবং কমান্ডটি চালান pkexec visudo। আপনার যদি মেশিনে শারীরিক অ্যাক্সেস থাকে তবে এসএসএইচ অপ্রয়োজনীয়; কেবলমাত্র একটি টার্মিনাল উইন্ডো খুলুন এবং সেই pkexecকমান্ডটি চালান ।

আপনি (অথবা অন্য কোনো ব্যবহারকারী) ধরে নেওয়া যাক প্রোগ্রাম চালানোর যেমন অনুমোদিত হয় rootPolicyKit- র সঙ্গে, আপনি আপনার পাসওয়ার্ড লিখুন করতে পারেন, এবং তারপর এটি চালানো হবে visudoযেমন root, এবং আপনি আপনার ঠিক করতে পারবো /etc/sudoers

আপনার যদি কনফিগারেশন ফাইলগুলির মধ্যে একটি সম্পাদনা করতে হয় /etc/sudoers.d(যা এই পরিস্থিতিতে অস্বাভাবিক তবে সম্ভব) তবে ব্যবহার করুন ।pkexec visudo -f /etc/sudoers.d/filename

আপনার যদি কোনও সম্পর্কিত পরিস্থিতি হয় যেখানে সমস্যাটি সমাধানের জন্য আপনাকে অতিরিক্ত সিস্টেম প্রশাসনের আদেশগুলি কমানোর কাজ করতে হবে (এই পরিস্থিতিতে অস্বাভাবিক, তবে অন্যদের মধ্যেও সাধারণ), আপনি এটি দিয়ে একটি ইন্টারেক্টিভ রুট শেল শুরু করতে পারেন pkexec bash। সাধারণভাবে বলতে গেলে যে কোনও অ-গ্রাফিকাল কমান্ড আপনার সাথে sudoচালানো হবে তার pkexecপরিবর্তে চালানো যেতে পারে ।

(যদি rootপলিসিকিটের মতো প্রোগ্রামগুলি চালনার জন্য অনুমোদিত সিস্টেমে একাধিক ব্যবহারকারী অ্যাকাউন্ট থাকে , তবে এই ক্রিয়াগুলির মধ্যে যে কোনওটির জন্য, আপনাকে আপনার পাসওয়ার্ড জিজ্ঞাসা করার আগে আপনাকে কোনটি ব্যবহার করতে চান তা নির্বাচন করতে বলা হবে।)


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

মনে করুন ইনস্টল করা উবুন্টু সিস্টেমের মূল ফাইল সিস্টেমটি / dev / sda1 চালু আছে। তাহলে আপনি এটি দিয়ে মাউন্ট করতে পারেন sudo mount /dev/sda1 /mnt। তারপরে আপনি এতে ইনস্টল হওয়া সিস্টেমের সুডার ফাইলটি সম্পাদনা করতে পারবেন sudo nano -w /mnt/etc/sudoers। বা, আরও ভাল, আপনি এটি দিয়ে সম্পাদনা করতে পারেন

sudo visudo -f /mnt/etc/sudoers

(যা আপনাকে ভুল সিনট্যাক্স সহ একটি sudoers ফাইল সংরক্ষণ করতে বাধা দেবে)।


7
pkexec / usr / sbin / ভিসুডো ডেবিয়ান 7
মেরিনারা

10
পবিত্র গা! অনেক ধন্যবাদ! আমার বেকন সংরক্ষণ করা। ইত্যাদি / sudoers.d / ডিরেক্টরিতে প্রস্তাবিত একটি ফাইল যুক্ত করা হয়েছে একটি নিয়মিত পাঠ্য সম্পাদক (DON-T__D-O__T-HAT !!!) ব্যবহার করে। আপত্তিজনক ফাইল সম্পাদনা করে, উন্নত সুবিধাগুলি সহ সমস্ত ক্ষমতা হারিয়েছেন। এটি ফাইল সম্পাদনা করতে সহায়তা করে। যদিও অদ্ভুত, প্রথমে আমাকে সম্পাদনা করতে হয়েছিল / ইত্যাদি / sudoers, তারপরে এটি অন্য ফাইলে ত্রুটিগুলি খুঁজে পেয়েছিল এবং এটি আমার জন্য খুলেছে। ইভেন ওয়েডার, / etc / sudoers ফাইল 'inlcudedir /etc/sudoers.d' ডিরেক্টরিতে মন্তব্য করা হয়েছিল এবং এটি এখনও এতে অন্তর্ভুক্ত রয়েছে।
ডেনিস

4
@ ডেনিস কিছুটা বিভ্রান্তিকরভাবে, ফাইলগুলির #includeনির্দেশকে sudoersবিশেষভাবে চিকিত্সা করা হয়; শীর্ষস্থানীয় #এই ক্ষেত্রে বাকী রেখাকে একটি মন্তব্য হিসাবে ব্যাখ্যা করতে পারে না। যেমনটি man sudoersবলা হয়েছে: "পাউন্ড সাইন ('#') কোনও মন্তব্য নির্দেশ করতে ব্যবহৃত হয় (যদি না এটি # অন্তর্ভুক্ত নির্দেশিকার অংশ না হয় বা না হয় ..." আরও দেখুন ভিজুডো: # অন্তর্ভুক্তিক সূডোরস.ডি ( lzone.de/ থেকে সংরক্ষণাগারভুক্ত ব্লগ )।
Eliah মধ্যে Kagan

5
আমার ব্যবহারকারী sudoer কিন্তু আমি এই ত্রুটি পেয়েছি: অন্য ব্যবহারকারী হিসাবে কমান্ড কার্যকর করতে
SuB

2
উবুন্টু 16.04 এ, pkexec visudoএকটি পাসওয়ার্ড চেয়েছে, যা সঠিক পাসওয়ার্ড গ্রহণ করে না। এটি একটি "প্রমাণীকরণের ব্যর্থ" ত্রুটি ছুড়ে ফেলে।
জুহা আনটিনেন

54

visudoআপনার sudoers ফাইল সম্পাদনা করতে সর্বদা ব্যবহার করুন, নিজেই কখনও এটিকে সম্পাদনা করুন। এটি বৈধতা না দিলে এটি আপনাকে ডিস্কে সংরক্ষণ করা আটকাবে।



4
এটি বিপর্যয় রোধ করবে না বৈধভাবে নিজেকে অস্বীকার করা যথেষ্ট সহজ।
জোশুয়া

স্ক্রিপ্ট দ্বারা ভিজুডো ব্যবহার করা যেতে পারে? যদি তাই হয়, কিভাবে?
লুকাস

আমার ভিসুডো ইনস্টল করা নেই। তাই আমি pkexec vim করেছি। তারপরে এটি ব্যবহারকারীর তালিকা প্রদর্শন করে এবং পাসওয়ার্ডের জন্য জিজ্ঞাসা করে। আমি যখন পাসওয়ার্ড সরবরাহ করি তখন এটি "অন্য ব্যবহারকারীরূপে আদেশ কার্যকর করার সময় ত্রুটিযুক্ত: অনুমোদিত নয়" হিসাবে ত্রুটি ফেলে দেয়। দয়া করে সহায়তা করুন
শ্যামখাদকা

24

টাইপ করুন:

pkexec visudo

তারপরে শেষ লাইনটি পরিবর্তন করুন

#includedir /etc/sudoers

প্রতি:

#includedir /etc/sudoers.d

এটি আপনার সমস্যার সমাধান করা উচিত।


2
আমি লক্ষ্য করেছি যে নেতৃস্থানীয় #থেকে মুছে ফেলা #includedirসিনট্যাক্স ত্রুটির কারণ #হয়, এটি নির্দেশের অংশ, কমপক্ষে উবুন্টু ১২.১০ তে।
SAFX

1
এটাই আমাকে অনেক মাথা ব্যাথা থেকে বাঁচিয়েছে। ধন্যবাদ একটি টন :)
অ্যাডো সলিউশন

1
আমার ভিসুডো ইনস্টল করা নেই। তাই আমি pkexec vim করেছি। তারপরে এটি ব্যবহারকারীর তালিকা প্রদর্শন করে এবং পাসওয়ার্ডের জন্য জিজ্ঞাসা করে। আমি যখন পাসওয়ার্ড সরবরাহ করি তখন এটি "অন্য ব্যবহারকারীরূপে আদেশ কার্যকর করার সময় ত্রুটিযুক্ত: অনুমোদিত নয়" হিসাবে ত্রুটি ফেলে দেয়। দয়া করে সহায়তা করুন
শ্যামখাদকা

11

আমার মতো অন্য কারও যদি পেকেক্সেক ইনস্টল না থাকে , বা sudoers ফাইল পরিবর্তন করতে আপনি vi, ভিসুডো, ন্যানো বা অন্য কোনও সম্পাদক চালাতে সক্ষম না হন তবে আপনি এই প্রক্রিয়াটির সাথে নিশ্চিত হতে পারেন .. আমি এটি দিয়ে সংরক্ষণ করেছিলাম:

  • পুনরায় বুট করার
  • পুনরুদ্ধার মোডের বিকল্প থাকতে বুট করার সময় শিফট কী ধরে রাখুন (এটি প্রবেশ করুন)
  • রুট হিসাবে কমান্ড লাইন প্রবেশ করান (আমার গ্রাব মেনুতে দ্বিতীয় শেষ বিকল্প)
  • আরডব্লিউর জন্য পুনরায় মাউন্ট বুট ডিভাইস এবং ব্যবহারকারীর জন্য এক্সিকিউটিভ প্রয়োগ করুন এবং ফাইল সম্পাদনা করুন

    mount -n -o remount,rw /
    chmod u+x /etc/sudoers
    nano /etc/sudoers
    

ভুলটি ঠিক করুন এবং খুশি হন :)


@ এলিয়াহ-কাগান দ্বারা প্রস্তাবিত পেক্সেক্স সমাধানটি সহজ বলে মনে হচ্ছে, তবে এটি একটি সর্বজনীন। আমার মেশিনে এটি প্রমাণিত হয়েছে যে কোনও পেক্সেক্স ইনস্টল নেই এবং অবশ্যই আমি এটি ইনস্টল করতে পারিনি কারণ sudo apt-get ইনস্টল pkexec কোনওভাবে কাজ করে নি।
রানিং.টি

এছাড়াও এই পদ্ধতির মধ্যে আমি visudoপরিবর্তে ব্যবহার করব nano /etc/sudoers
pa4080

7

আপনি যদি নিজের sudoersফাইলটি বিশৃঙ্খলা করে থাকেন তবে আপনার প্রয়োজন:

  • পুনরুদ্ধার মোডে পুনরায় বুট করুন (বুট চলাকালীন পালাতে আঘাত হানুন, গ্রুব স্ক্রিনে পুনরুদ্ধার মোড বিকল্পটি চয়ন করুন)
  • 'নেটওয়ার্কিং সক্ষম করুন' বিকল্পটি নির্বাচন করুন (যদি আপনি না করেন তবে আপনার ফাইল সিস্টেমটি কেবল পঠনযোগ্য হিসাবে মাউন্ট করা হবে who কে জানত)
  • 'রুট শেল থেকে ড্রপ' বিকল্পটি চয়ন করুন
  • চালান visudo, আপনার ফাইল ঠিক করুন
  • সাধারণ গ্রাব বিকল্পটি পুনরায় বুট করুন

উত্স: - http://mario.net.au/content/recover-etcsudoers-ubuntu-1204


হাই, এটি বিদ্যমান সিস্টেমের আইপটিবলগুলি, ফাইলগুলি সরিয়ে দেয়?
শ্যামখাদকা

6

# অন্তর্ভুক্ত sudoer.d অপসারণ # কিছু অন্তর্ভুক্ত নেই sudoer.d অপসারণ কোন পার্থক্য করবে না।

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

উদাহরণস্বরূপ বলুন আপনার ব্যবহারকারীর নামটি: ডলি আমি নিম্নলিখিতটি ব্যবহার করেছি যা ভুল

 dolly ALL = (ALL) ALL NO PASSWD: ALL

সঠিক বাক্য গঠন

dolly ALL = (ALL) ALL //give permission to everything, not good

অথবা

dolly ALL=(ALL) NOPASSWD:/usr/bin/thurderbird //good, give specific permission

আশাকরি এটা সাহায্য করবে


আপনার সিনট্যাক্স ত্রুটি নেই তা নিশ্চিত করার চেয়ে আরও ভাল পন্থা হ'ল visudoএই ফাইলগুলি সম্পাদনা করার সময় সর্বদা ব্যবহার করা উচিত, এটি ফাইলের সংশোধন করার আগে নিশ্চিত করে যে আপনার জন্য সিনট্যাক্স ত্রুটি নেই। visudoএটি কেবল সম্পাদনা করার জন্য নয় - এটি /etc/sudoersফাইল তৈরি এবং সম্পাদনাও করবে /etc/sudoers.d। এটি আপনি যে পাঠ্য সম্পাদক চান তা নিয়েও কাজ করবে। বিশদ জন্য ম্যানপেজ দেখুন ।
এলিয়াহ কাগান

নির্দিষ্ট অনুমতি দেওয়ার ক্ষেত্রে, দয়া করে নোট করুন যে এটি কেবলমাত্র খুব সরল কমান্ড / অ্যাপ্লিকেশনগুলির জন্যই কার্যকর, কারণ কোনও জটিল জটিল অ্যাপ ( thunderbirdযা কোনওভাবেই রুট হিসাবে চালানো উচিত নয়) ব্যবহারকারীর সম্পূর্ণ সিস্টেমে অ্যাক্সেস দিতে সক্ষম হবে রুট হিসাবে চালানোর সময়। এমনকি আপাতদৃষ্টিতে সহজ কার্যকারিতা সম্পূর্ণ রুট অ্যাক্সেসের দরজা খুলে দেয়। উদাহরণস্বরূপ, যে ব্যবহারকারী কোনও প্রোগ্রাম চালাতে পারেন যা কোনও ফাইলকে রুট হিসাবে একটি নির্বিচার জায়গায় সংরক্ষণ করতে পারে সেগুলি সম্পূর্ণ রুট অ্যাক্সেস অর্জন করতে পারে (তারা নিজেরাই ইনস্টল করতে পারে /etc/sudoers, বা সিনট্যাক্স সীমাবদ্ধতাগুলি যদি এটি প্রতিরোধ করে তবে তারা তাদের নিজস্ব ইনস্টল করতে পারে /etc/crontab)।
এলিয়াহ কাগন

3

পুনরুদ্ধার মোড চালান তারপর এটি টাইপ করুন

ডোবা -আর মূল: রুট /etc/sudoers.d
chmod u = rwx, g = rx, o = rx /etc/sudoers.d/
chmod u = r, g = r, o = /etc/sudoers.d/*

কেবলমাত্র গোষ্ঠী এবং ব্যবহারকারীর রুটেই প্রাইভেজ পড়তে হবে


3

আপনি + ( 1 থেকে 6) ttyসহ কনসোলে রুট হিসাবে লগইন করতে পারেন এবং রান করতে পারেন ।CtrlFnFnvisudo


2

গ্রাবের পাশাপাশি আপনি নিজের বুট এন্ট্রিটি সম্পাদনা করতে পারেন।

কেবল আপনার পিসি পুনরায় বুট করুন, এবং গ্রাবটি প্রদর্শনের জন্য অপেক্ষা করুন। তারপরে সম্পাদনা করতে "উবুন্টু" এন্ট্রিতে "ই" টিপুন।

"লিনাক্স =" বা "কার্নেল =" দিয়ে একটি লাইন সন্ধান করুন এবং সেই লাইনের শেষে কেবল একটি "একক" যুক্ত করুন।

তারপরে এই অস্থায়ীভাবে সংশোধিত বুট এন্ট্রিটি বুট করতে F10 টিপুন। এটি আপনাকে রুট অধিকার সহ একটি শেল (জিইউআই ছাড়াই) দেবে এবং আপনি এস.ডি. সহ সুডোর ফাইল সম্পাদনা করতে পারবেন। ন্যানো / ইত্যাদি / sudoers এর আগের অবস্থায় ফিরে আসে।

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


2
pkexec visudo

তারপরে আপনার ভুলগুলি ফিরিয়ে দিন


1
পেকেক্সেক ব্যবহার করার প্রয়োজন নেই
ব্রায়াম

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

0

উবুন্টু 16.04 ভার্চুয়ালবক্সে চলমান (কোনও পার্থক্য করা উচিত নয়), উপরের পদ্ধতিগুলি আমার পক্ষে কার্যকর হয়নি (ফাইলটির শেষে অবৈধ সারি)। কাজটি কী ছিল:

  1. ভার্চুয়ালবক্স পুনরায় চালু করুন
  2. কনসোলে আপনার ব্যবহারকারীর নাম এবং পাসওয়ার্ড না চাওয়া অবধি এটি সাধারণভাবে বুট হতে দিন
  3. আপনার ব্যবহারকারী নাম দিয়ে সাধারণত লগইন করুন
  4. তারপরে আপনি কনসোলে শেষ হয়ে গেলে (প্রদত্তরূপে আপনার বাক্সটি কোনও জিইউআইতে বুট না করে) কমান্ডটি দিন su -এবং তারপরে আপনার নিজের ব্যবহারকারীর পাসওয়ার্ড দিন।
  5. এটি এখন root@ubuntu-xenial:~#প্রম্পটে শেষ হওয়া উচিত , যদি /etc/sudoersখুব বেশি ভাঙা বা খালি না হয়। সেক্ষেত্রে কী হবে তা নিশ্চিত নয়।
  6. তারপরে আপনি কেবল visudoফাইলটি চালাতে এবং ঠিক করতে পারেন ।
  7. তারপরে Ctrl + Xএবং এটি পরিবর্তিত বাফারটি সংরক্ষণ করার অনুরোধ জানাবে। টিপুন YএবংEnter
  8. বাক্সটি পুনরায় চালু করুন এবং এটি এখন কাজ করা উচিত।

যদি আপনার /etc/sudoersশূন্য থাকে বা কিছু অনুপস্থিত থাকে এবং আপনি এটি সম্পাদনা করতে পারেন তবে আমার বিষয়বস্তুটি এখানে:

Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

root ALL=(ALL:ALL) ALL

%admin ALL=(ALL) ALL

%sudo ALL=(ALL:ALL) ALL

আপনার পদক্ষেপ 4 অর্থবোধ করে না, এটি কেবল তখনই কার্যকর হয় যখন আপনার মূল পাসওয়ার্ডটি আপনার সাধারণ ব্যবহারকারীর মতো হয়।
আলফ্রেড

যা স্থানীয় ভিএম-এ খুব সাধারণ।
জুহা আনটিনেন

0

ভাল অনুশীলন: একটি ব্যাকআপ টার্মিনাল উইন্ডো এবং sudo suসেখানে চালান । অন্য টার্মিয়ানালটিতে ভিজুডো বা সুডো ভিআইএম / ইত্যাদি / sudoers চালান। যদি কিছু ভুল হয়ে যায় তবে টার্মিনাল একটিতে ফিরে যান এবং ফাইলটি ঠিক করুন। আপনি জিজ্ঞাসা করতে পারেন, কেন কেবল একটি টার্মিনালে sudo suআগে চালানো হয় না visudo? এটি পাশাপাশি কাজ করে তবে আপনার টার্মিনালটি জানার আগে এটি বন্ধ করার ঝুঁকি রয়েছে।


-1

একটি উপায় সহজ সমাধান আছে। রিবুট না করে, পুনরুদ্ধার মোড, বা pkgexec( pkgexecকীভাবে বা কীভাবে আমার এটি ব্যবহার করা উচিত তার কোনও ধারণা নেই এবং কাজ করে না), কেবল করুন:

su root # switch to root user, without using sudo (which is broken at this point)
your_favorite_editor /etc/sudoers # e.g. nano

এবং তারপরে কেবল সিনট্যাক্স ত্রুটিটি ঠিক করুন!


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