หลังจากเปลี่ยนชื่อ / etc โดยไม่ตั้งใจฉันจะเปลี่ยนชื่อกลับมาได้อย่างไร


36

ฉันใช้ Ubuntu 18.04

ผมเปลี่ยนชื่อโฟลเดอร์/etc apache2นั่นคือความผิดพลาดที่ยิ่งใหญ่ที่สุดของฉัน

ตอนนี้ฉันไม่สามารถเปลี่ยนชื่อกลับมาได้เพราะฉันต้องการใช้sudoแต่เมื่อฉันลองฉันจะได้รับข้อผิดพลาด

sudo: unknown uid 1000

ฉันจะแก้ไขปัญหานี้ได้อย่างไร ฉันไม่ได้มีระบบการถ่ายทอดสดไปยังบูตจากและในโหมดการกู้คืนขั้วรากเปิด cannot open password databaseแต่แล้วปิดบอกว่า


17
บูตจากสื่อการติดตั้งเลือก "ลอง Ubuntu" ติดตั้งระบบไฟล์รูทของคุณ/mntทำการเปลี่ยนชื่อรีบูต
AlexP

จะบู๊ตสื่อการติดตั้งได้อย่างไร?
Racoon

@ Zanna กะไม่แสดงเมนูใด ๆ บางทีปุ่มอื่นสามารถเปิดได้
Racoon

@Zanna, เมนูการกู้คืน -> root เปิดเทอร์มินัล แต่บอกว่าไม่สามารถเปิดฐานข้อมูลรหัสผ่านและปิดได้
Racoon

@Zanna ไม่ไม่ได้ :(
Racoon

คำตอบ:


62

วิธีง่ายๆในการแก้ไขปัญหาเช่นนี้มักจะเป็นการบูตจากระบบที่ใช้งานจริงติดตั้งพาร์ติชันรูท/mnt แล้วเปลี่ยนชื่อไฟล์

หากคุณไม่มีระบบถ่ายทอดสดหรือวิธีการสร้างระบบหรือคุณไม่มีการเข้าถึงระบบ แต่คุณสามารถรีบูตและรับเมนู GRUB ได้คุณสามารถใช้โปรแกรมแก้ไข GRUB เพื่อรับรูทเชลล์และเปลี่ยนชื่อ ไฟล์

รีบูทหรือปิดเครื่องเปิดและถ้าคุณไม่เห็นเมนูด้วงในการบู๊ตกดShiftหรือEscเพื่อไปที่เมนูด้วง

เลื่อนเคอร์เซอร์ลงไปที่ตัวเลือกขั้นสูงสำหรับอูบุนตูและกดenterแล้วกดeไปที่การแก้ไขตัวเลือกการบูต (เพียงครั้งเดียวเท่านั้น - การเปลี่ยนแปลงที่นี่จะไม่ถาวรดังนั้นเราจึงไม่ต้องทำความสะอาดหลังจากนั้น)

คุณจะเห็นหน้าจอที่มีลักษณะดังนี้1 :

สกรีนช็อตของโปรแกรมแก้ไขเมนู GRUB

เลื่อนเคอร์เซอร์ลงไปที่บรรทัดที่ขึ้นต้นด้วยlinuxจากนั้นเลื่อนเคอร์เซอร์ไปที่ท้ายบรรทัดนั้นหรือที่ใดก็ได้ระหว่างพารามิเตอร์การบูตเคอร์เนลที่นั่น ตรวจสอบให้แน่ใจว่าคุณอยู่ในบรรทัดที่ถูกต้องและพิมพ์อย่างระมัดระวังที่นี่เนื่องจากระบบอาจไม่สามารถบู๊ตได้โดยไม่ต้อง/etcดำเนินการ

เพิ่มข้อความinit=/bin/bashและกดF10เพื่อบูต

สิ่งนี้จะเริ่มระบบด้วย Bash shell ในฐานะ init คุณจะได้รับรูทเชลล์และระบบไฟล์จะถูกเมาท์แบบอ่านอย่างเดียว 2เพื่อให้ระบบไฟล์เขียนได้ให้ป้อนคำสั่ง

mount -o remount,rw /

ตอนนี้คุณสามารถเปลี่ยนชื่อ/etc(คุณอาจต้องการlsก่อน)

mv /apache2 /etc

ตอนนี้คุณสามารถรีบูตหรือทำการบู๊ตตามปกติจากที่นี่โดยให้รูทเชลล์แทนที่ตัวเองด้วยระบบเริ่มต้นปกติ3 :

exec systemd 

ฉันทดสอบขั้นตอนนี้ใน Ubuntu MATE 18.04


1 ขอบคุณKulfyสำหรับการได้ภาพหน้าจอคุณภาพดีของเครื่องมือแก้ไข GRUB จาก VirtualBox!
2แม้ว่าเส้นทางไม่สามารถตั้งค่าจาก config ไฟล์ใน/etcในสถานการณ์สมมตินี้ทุบตีจะตั้งค่าโดยอัตโนมัติอย่างใดอย่างหนึ่ง
3หากexec systemdไม่ได้ผลสำหรับคุณexec /sbin/initควรทำเคล็ดลับ ถ้าไม่readlink -e /sbin/initควรให้พา ธ ไปยังโปรแกรม init ใด ๆ ที่ควรรันซึ่งคุณสามารถexecใช้พา ธ แบบเต็มได้ rebootหากคุณไม่สามารถดำเนินการด้วยวิธีนี้เพียงแค่ใส่


4
ละเอียดมากรวมถึงภาพหน้าจอ +1 :)
WinEunuuchs2Unix

3
@Kulfy ขอบคุณมาก! มันวิเศษมาก: DI ใช้ VB ไม่ได้เพราะฉันมี RAM ไม่เพียงพอ คุณใจดีมากที่ช่วยปรับปรุงคำตอบของฉัน
Zanna

3
ฉันคิดว่าฉันใช้สกรีน
ช็อต

1
@Racoon ยินดีต้อนรับคุณมากมีความสุขที่คุณได้มันคง :)
Zanna

พยายามทดสอบ แต่ไม่ทำงานใน Ubuntu 18.04.Desktop ปฏิบัติตามคำแนะนำคำต่อคำ ไม่ทำงาน. หลังจากนั้นF10จะปรากฏขึ้นสองสามบรรทัดและหยุดที่หน้าจอว่าง คุณช่วยแนะนำอะไรได้ไหม
วีเจย์

8

หากคุณมี USB แบบสดคุณควรจะสามารถบู๊ตได้และติดตั้งระบบไฟล์ที่มีอยู่แล้วเปลี่ยนชื่อ/etcจากที่นั่น นี่คือการสอนเกี่ยวกับวิธีการสร้าง USB แบบสดในกรณีที่คุณต้องการ

เมื่อบู๊ตแล้วเป็น USB สด (หากใช้ไดรฟ์ Ubuntu 18.04) ให้เลือก "ลองใช้ Ubuntu โดยไม่ต้องติดตั้ง" และจะให้อินสแตนซ์เต็มรูปแบบของการติดตั้ง Ubuntu ที่จะไม่คงอยู่หลังจากปิดเครื่อง เมื่อบูทแล้วคุณจะมีตัวเลือกสองสามอย่าง:

ทางบรรทัดคำสั่ง

เปิด terminal lsblkและเรียกใช้ ค้นหาโวลุ่มที่จะเป็นไดรฟ์การติดตั้งดั้งเดิมของคุณและจดบันทึกว่าเป็นหมายเลขใด (/ dev / sd #)

จากนั้นสร้างจุดเมานท์สำหรับไดรฟ์ที่มีแล้วติดตั้งไดรฟ์ที่มีmkdir -p /mnt/directory sudo mount /dev/sd# /mnt/directoryนำทางไปยังไดเรกทอรีด้วยcd /mnt/directoryและตอนนี้คุณควรจะอยู่ในไดเรกทอรีรากของการติดตั้ง แต่ตอนนี้มีsudoคำสั่งที่ใช้งานได้ เรียกใช้sudo mv apache2 etcและรีบูตใน OS ที่ใช้งานได้ตามปกติ

วิธีกราฟิก

เปิดยูทิลิตีดิสก์โดยค้นหาดิสก์ เลือกไดรฟ์ที่ดูเหมือนว่าไดรฟ์การติดตั้งของคุณและติดตั้ง เปิดตัวจัดการไฟล์และเลือกระดับเสียงที่ติดตั้งคลิกขวาที่/apache2โฟลเดอร์ของคุณและเปลี่ยนชื่อเป็น/etcจากนั้นรีบูต


"วิธีกราฟิก" ไม่ทำงานเพราะไม่มีตัวเลือก "เปลี่ยนชื่อ" ใน Rt คลิก.
วีเจย์

1
@Vijay อาจเป็นเพราะการอนุญาตให้ใช้ไฟล์คุณจะต้องเปิดโปรแกรมจัดการไฟล์เป็นรูทเพื่อทำแบบกราฟิก หากต้องการทำเช่นนั้นให้เรียกใช้คำสั่งsudo nautilusจากเทอร์มินัล (Ubuntu ใช้ "nautilus" เป็นตัวจัดการไฟล์ในลักษณะเดียวกับที่ Windows ใช้ "explorer")
AJMansfield

2
@AJMansfield แน่นอนมันไม่สำคัญในระบบการถ่ายทอดสด แต่โดยทั่วไปเราควรใช้sudo -H nautilusเพื่อหลีกเลี่ยงรากกลายเป็นเจ้าของ config ไฟล์ใน$HOMEอาจทำให้พวกเขาไม่สามารถเข้าถึงได้โดยโปรแกรมทำงานเป็นผู้ใช้สามัญ คุณอาจจะรู้เรื่องนี้ แต่ฉันกำลังพูดถึงผู้อ่านคนอื่น ๆ
Zanna

6
  1. สร้าง USB ที่บูตได้ดังที่แสดงไว้ที่นี่

  2. บูตจาก USB โดยกดปุ่มตามที่แสดงที่นี่

  3. gpartedหาพาร์ทิชันระบบไฟล์ของคุณโดยใช้ สมมติว่ามันเป็น sdxy

  4. ทำงานบนเทอร์มินัล sudo mount /dev/sdxy /mnt

  5. ทำงานบนเทอร์มินัล sudo mv /mnt/apache2 /mnt/etc

  6. ตรวจสอบระบบไฟล์ของคุณใน / mnt สำหรับการเปลี่ยนชื่อ

  7. ทำงานบนเทอร์มินัล sudo reboot

  8. เมื่อได้รับแจ้งให้ถอด USB และกด Enter


@ Kulfy ฉันพยายาม แต่มันไม่ทำงานโดยไม่ต้อง sudo ดูที่นี่
วีเจย์

นี่เป็นเพราะ sda2 ถูกเมาท์ด้วย sudo ดังนั้น sudo เท่านั้นที่สามารถดำเนินการได้ แต่ถ้าคุณเมานต์โดย nautilus (ไม่ได้รับอนุญาตพิเศษ) คุณสามารถทำงานได้โดยไม่ต้อง sudo
Kulfy

ตรวจสอบว่า `ubuntu @ ubuntu: ~ $ mount / dev / sda2 / mnt mount: เฉพาะ root เท่านั้นที่ทำได้ ubuntu @ ubuntu: ~ $
Vijay

1
AFAIK mountโปรแกรมนั้นเข้มงวดมากและจะต้องรันเป็น root เสมอ ข้อยกเว้นเพียงอย่างเดียวคือเมื่อระบบไฟล์อยู่ในfstabและมีuserตัวเลือก โปรแกรมudisksctlช่วยให้ผู้ใช้ทั่วไปสามารถเมานท์อุปกรณ์โดยใช้ตัวอย่างเช่นudisksctl mount -b /dev/sda1(มันสร้างจุดเมานท์ที่เหมาะสม/media/$USER/) ฉันไม่ได้ลองใช้udisksctlจากระบบที่ใช้งานอยู่ แต่ในระบบที่ใช้งานจริงผู้ใช้ที่มีสิทธิใช้งานสามารถรันsudoด้วยรหัสผ่านไม่ได้ดังนั้นจึงไม่จำเป็นต้องใช้ระบบสาธารณูปโภคudisksctlที่มีประโยชน์อย่างอื่นเลย
Zanna
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.