เปลี่ยนไฟล์ sudoers และไม่สามารถเปิดได้อีกต่อไป ไม่สามารถเปิดไฟล์ใด ๆ โดยใช้รูท


8

ฉันเปลี่ยนการตั้งค่าในไฟล์ sudoers โดยใช้

sudo visudo 

และทำให้มันยุ่ง ตอนนี้เมื่อฉันลองทำอีกครั้งหรือเปิดไฟล์ใด ๆ โดยใช้ sudo ฉันไม่สามารถเปิดได้อีกต่อไปและฉันได้รับข้อความแสดงข้อผิดพลาดนี้:

>>> ไฟล์ sudoers: ข้อผิดพลาดทางไวยากรณ์บรรทัด 7 

เกิดอะไรขึ้น

มีวิธีใดบ้างที่จะพ้นจากปัญหานี้ (เพื่อยกเลิกการตั้งค่า) หรือฉันต้องติดตั้ง linux ใหม่หรือไม่?

เหตุผลที่ฉันได้รับทั้งหมดนี้คือฉันกด "Q" ในขณะที่มันบอกฉันว่ามีข้อผิดพลาดบางอย่างซึ่งฉันโง่มาก

ขอบคุณ

แก้ไข

ไฟล์ sudoers ของฉันไม่แตกต่างจากไฟล์ sudoers ปกติ ฉันเพิ่งเพิ่ม timestamp_timeout = 0 บรรทัดในไฟล์นั้นและปัญหาเหล่านี้เกิดขึ้น ฉันทำสิ่งที่เจมส์แนะนำและลบบรรทัดนั้นออกไป (timestamp_timeout = 0) ฉันเปลี่ยนการอนุญาตไฟล์เป็น 0440 ที่ร้องขอจากนั้นให้บูตตามปกติ จากนั้นฉันได้รับข้อความแสดงข้อผิดพลาดเดียวกัน

sudoers file: syntax error, line 7 
sudo: parse error in /etc/sudoers near line 7
ดังกล่าวข้างต้น

สิ่งที่ฉันควรทำตอนนี้ ??

แก้ไข 2 แก้ไขแล้ว

นี่คือสิ่งที่ฉันทำ:

  1. บูตโดยใช้ livecd
  2. ลบไฟล์ sudoers เก่า
  3. สร้างไฟล์ sudoers ใหม่และคัดลอกทุกสิ่งไปยังไฟล์นั้นเช่นการตั้งค่าขั้นต่ำซึ่งฉันโชคดีที่ได้บันทึกไว้ในไฟล์อื่น
  4. เปลี่ยนการอนุญาตของไฟล์เป็น 0440
  5. รีบูตอีกครั้งตามปกติจากฮาร์ดไดรฟ์

เย่ !!


คุณสามารถวางเนื้อหาของไฟล์ sudoers ของคุณไปที่ www.pastebin.com และให้เราดูสิอาจเป็นวิธีที่เร็วที่สุด
Andrioid

ฉันจะมองหา # ในความคิดเห็นที่ขาดหายไปเครื่องหมายโคลอนเครื่องหมายเท่ากับเครื่องหมายแบ็กสแลชต่อเนื่องของบรรทัดเป็นต้น
หยุดชั่วคราวจนกว่าจะมีการแจ้งให้ทราบต่อไป

คำตอบ:


8

สมมติว่าคุณไม่ได้ให้รากผู้ใช้รหัสผ่านแล้ววิธีที่ง่ายที่สุดในการแก้ไขปัญหานี้คือการมีชีวิต cd เช่นKnoppix เริ่มระบบของซีดี ใส่แผ่นดิสก์ในเครื่องแก้ไขไฟล์ยกเลิกการต่อเชื่อมแผ่นดิสก์แล้วบูตเครื่องใหม่


6

ง่าย ๆ บูตเครื่องคอมพิวเตอร์ใน ' โหมดผู้ใช้คนเดียว ' โดยทำตามขั้นตอนต่อไปนี้:

  1. Reboot
  2. เมื่อ Grub เริ่มทำงานให้กด ESC (หรือหลบหนี)
  3. กด 'e' เพื่อแก้ไขบรรทัดปัจจุบัน
  4. เพิ่ม 'เดี่ยว' ถึงท้ายบรรทัดที่มี 'linux'
  5. บูต (กด b)

นี่จะเป็นการเริ่มคอมพิวเตอร์ด้วยผู้ใช้เพียงรายเดียวเท่านั้น จากนั้นทำตามขั้นตอนเหล่านี้:

  1. / usr / bin / vim / etc / sudoers (หรือใช้ nano อาจจะง่ายกว่าสำหรับคุณ) เพื่อแก้ไขปัญหา
  2. หากคุณไม่แน่ใจปัญหาลองคัดลอกตัวอย่าง sudoers จาก "/ usr / share / doc / sudo / ตัวอย่าง" (แตกต่างกัน) และแน่นอนเพิ่มผู้ใช้ของคุณที่นั่น
  3. บันทึกไฟล์ออกจาก Vim
  4. รีบูตสนุกได้เลย!

ฉันสงสัยว่าเมื่อใดที่ถามรหัสผ่านก่อนที่จะมอบเชลล์ผู้ใช้คนเดียว
James

วิธีนี้ใช้ไม่ได้กับ distros ทั้งหมด เนื่องจากเป็นประตูหลังที่รู้จักกันดีบาง distros บังคับให้เข้าสู่ระบบก่อนที่คุณจะได้รับพร้อมท์รูท ดูเหมือนว่าเป็นกรณีสำหรับคุณเจมส์
Telemachus

ไม่ทราบว่า distros ได้เริ่มทำอย่างนั้นมักจะทำงานให้ฉันในวันที่ดี Slackware เก่า
Andrioid

คุณควรแนะนำให้ใช้ visudo มากกว่า vim: en.wikipedia.org/wiki/Visudo

3

ความคิดของเจมส์ที่จะใช้ซีดีสด (สมมติว่าบัญชีรูทไม่ได้เปิดใช้งาน) เป็นสิ่งที่ดี ฉันจะเพิ่มบางจุด

  • ก่อนอื่นคุณอาจโชคดีและมีการสำรองไฟล์/ etc / sudoersไว้โดยอัตโนมัติเมื่อคุณทำการแก้ไข เช็กอิน/ etcสำหรับไฟล์ที่มีลักษณะดังนี้sudoers~ (คุณสามารถcdไปยังไดเร็กทอรีนั้นและรันls -A โดยไม่มีสิทธิ์ใช้งานรูทแม้ว่าคุณจะไม่สามารถอ่านหรือแก้ไขไฟล์ในฐานะผู้ใช้ทั่วไป) บรรณาธิการบางคนจะสร้างการสำรองข้อมูลดังกล่าวหากเลย เป็นไปได้ดังนั้นคุณอาจมีหนึ่งโดยไม่ต้องสร้างมันอย่างชัดเจน
  • ประการที่สองหากคุณไม่ทราบวิธีแก้ไขไฟล์คุณอาจลองโพสต์ไฟล์ (หรือพื้นที่รอบ ๆ บรรทัดที่ 7) ที่นี่หรือที่อื่น ๆ แม้ว่าไฟล์นั้นจะเกี่ยวข้องกับความปลอดภัย แต่ก็ไม่มีรหัสผ่านอยู่ดังนั้นจึงไม่มีอันตรายใด ๆ ในการโพสต์ไฟล์
  • สุดท้ายโปรดทราบว่าข้อความแสดงข้อผิดพลาดเช่นเดียวกับที่คุณเห็นไม่ได้แปลว่าปัญหานั้นเกิดขึ้นที่บรรทัดที่ 7 ข้อผิดพลาดอาจอยู่ที่บรรทัดที่ 4 แต่มีการสะดุดเพียงเพื่อที่จะพูดในบรรทัดที่ 7

0

ลองกด e เพื่อแก้ไข สิ่งนี้จะช่วยให้คุณแก้ไขไฟล์และแก้ไขข้อผิดพลาด


การกด 'e' เมื่อคุณพบข้อผิดพลาดหลังจากแก้ไขเสร็จแล้วจะทำให้คุณกลับมาเพื่อแก้ไขข้อผิดพลาด น่าเสียดายที่มันไม่ได้พูดถึงเรื่องนี้กับคุณอย่างชัดเจน

0

สำหรับพวกเราที่ไม่มีคอนโซลหรือการเข้าถึงเซิร์ฟเวอร์เพื่อบู๊ตเข้าสู่ระดับ 1 หรือมีชุดรูท (หรือมีหนังสือรับรอง / certs ให้ใช้) ให้ใช้ pkexec visudo หรือ pkexec vi / etc / sudoers, visudo ดีกว่า มันตรวจสอบข้อผิดพลาดในไฟล์


แต่คุณpkexecจะทำการประมูลอย่างไรถ้าคุณไม่รู้รหัสผ่านรูท?
Scott
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.