Setelah secara tidak sengaja mengganti nama / etc, bagaimana cara mengganti nama kembali?

36

Saya menggunakan Ubuntu 18.04.

Saya mengganti nama /etcfolder menjadi apache2. Itu adalah kesalahan terbesar saya

Sekarang saya tidak dapat mengganti nama kembali karena saya perlu menggunakan sudo, tetapi ketika saya mencoba saya mendapatkan kesalahan

sudo: unknown uid 1000

Bagaimana saya bisa memperbaiki masalah ini? Saya tidak memiliki sistem live untuk boot, dan dalam mode pemulihan terminal root terbuka tetapi kemudian ditutup berkata cannot open password database.

Racoon
sumber
17
Boot dari media instalasi, pilih "Coba Ubuntu", pasang sistem file root Anda /mnt, lakukan penggantian nama, reboot.
AlexP
Bagaimana cara mem-boot media instalasi?
Racoon
@Zanna, shift tidak menunjukkan menu apa pun padaku. Mungkin tombol lain bisa membukanya?
Racoon
@Zanna, menu Pemulihan -> root membuka terminal, tetapi dikatakan tidak dapat membuka basis data kata sandi dan menutup
Racoon
@Zanna, tidak, belum :(
Racoon

Jawaban:

62

Cara mudah untuk memperbaiki masalah seperti ini adalah sering mem-boot dari sistem langsung, pasang partisi root /mnt dan kemudian ganti nama file.

Jika Anda tidak memiliki sistem langsung atau sarana untuk membuatnya, atau Anda tidak memiliki akses fisik ke sistem tetapi Anda dapat reboot dan mendapatkan menu GRUB, Anda dapat menggunakan editor GRUB untuk mendapatkan shell root dan mengganti nama berkas.

Nyalakan kembali atau matikan, nyalakan dan, jika Anda biasanya tidak melihat menu GRUB saat boot, tekan Shiftatau Escuntuk menuju ke menu GRUB.

Pindahkan kursor ke Opsi Lanjutan untuk Ubuntu dan tekan enter, lalu tekan euntuk mengedit opsi boot (hanya satu kali - perubahan di sini tidak akan permanen, jadi kami tidak perlu membersihkan setelah itu).

Anda akan melihat layar yang terlihat seperti ini 1 :

tangkapan layar editor menu GRUB

Pindahkan kursor ke bawah ke baris yang dimulai dengan linuxdan kemudian pindahkan kursor ke akhir baris itu, atau di mana saja di antara parameter boot kernel di sana. Pastikan Anda berada di jalur yang benar dan ketik dengan hati-hati di sini, karena sistem mungkin gagal untuk boot tanpa ada /etcdi tempat.

Tambahkan teks init=/bin/bashdan tekan F10untuk boot.

Ini akan memulai sistem dengan Bash shell sebagai init. Anda akan mendapatkan shell root dan sistem file akan dipasang hanya baca. 2 Untuk membuat sistem file dapat ditulisi, masukkan perintah

mount -o remount,rw /

Sekarang Anda dapat mengganti nama /etc(Anda mungkin ingin lsterlebih dahulu)

mv /apache2 /etc

Sekarang Anda dapat reboot, atau menyelesaikan boot secara normal dari sini dengan meminta shell root mengganti sendiri dengan sistem init 3 yang normal :

exec systemd 

Saya menguji prosedur ini pada Ubuntu MATE 18.04.


1 Terima kasih banyak kepada Kulfy karena memperoleh tangkapan layar berkualitas baik dari editor GRUB dari VirtualBox!
2 Meskipun PATH tidak dapat diatur dari file konfigurasi /etcdalam skenario ini, Bash akan secara otomatis mengaturnya .
3 Jika exec systemdtidak berhasil, exec /sbin/initsebaiknya lakukan triknya. Jika tidak, readlink -e /sbin/initharus memberikan path ke program init apa pun yang harus dijalankan, yang kemudian Anda dapat execdengan path lengkapnya. Jika Anda tidak dapat melanjutkan dengan cara ini, cukup masukkan reboot.

Zanna
sumber
4
Sangat menyeluruh termasuk tangkapan layar +1 :)
WinEunuuchs2Unix
3
@Kulfy terima kasih banyak! itu luar biasa: DI tidak dapat menggunakan VB karena saya tidak memiliki cukup RAM. Terima kasih banyak untuk membantu meningkatkan jawaban saya
Zanna
3
Saya pikir saya mengambil tangkapan layar terlalu besar: P ;-) dan terima kasih atas kredit tangkapan layar :)
Kulfy
1
@Racoon Terima kasih banyak, senang Anda memperbaikinya :)
Zanna
Mencoba mengujinya tetapi tidak bekerja di Ubuntu 18.04.Desktop. Ikuti petunjuknya kata demi kata . Tidak bekerja Setelah F10hanya beberapa baris muncul dan berhenti di layar kosong. Bisakah Anda menyarankan sesuatu?
Vijay
8

Jika Anda memiliki USB langsung, Anda harus bisa boot ke sana dan me-mount sistem file yang ada, kemudian ganti nama Anda /etcdari sana. Berikut adalah tutorial tentang cara membuat USB langsung jika Anda membutuhkannya.

Setelah boot ke live USB (Jika menggunakan drive Ubuntu 18.04), pilih "Coba Ubuntu tanpa menginstal" dan itu pada dasarnya akan memberi Anda contoh lengkap instalasi Ubuntu yang tidak akan bertahan setelah shutdown. Setelah di-boot, Anda memiliki beberapa opsi:

Command-Line Way

Buka terminal dan jalankan lsblk. Cari volume yang akan menjadi drive instalasi asli Anda dan catat nomor mana itu (/ dev / sd #)

Kemudian, buat titik mount untuk drive dengan mkdir -p /mnt/directory, lalu pasang drive dengan sudo mount /dev/sd# /mnt/directory. Arahkan ke direktori dengan cd /mnt/directorydan Anda seharusnya sekarang berada di direktori root instalasi Anda, tetapi sekarang dengan sudoperintah yang berfungsi . jalankan sudo mv apache2 etcdan reboot ke OS yang berfungsi secara hipotetis.

Cara Grafis

Buka utilitas disk dengan mencari Disk. Pilih volume yang terlihat seperti drive instalasi Anda dan pasang itu. Buka file manager dan pilih volume yang terpasang, klik kanan /apache2folder Anda dan ganti namanya /etc, lalu reboot.

Minty
sumber
"Graphical Way" tidak berfungsi karena tidak ada opsi "Ganti nama" pada Rt. klik.
Vijay
1
@ Vijay Itu kemungkinan karena izin file, Anda harus membuka pengelola file sebagai root untuk melakukannya secara grafis. Untuk melakukan itu, jalankan perintah sudo nautilusdari terminal. (Ubuntu menggunakan "nautilus" sebagai manajer file dengan cara yang sama Windows menggunakan "explorer".)
AJMansfield
2
@AJMansfield tentu saja itu tidak masalah pada sistem live, tetapi secara umum kita harus menggunakan sudo -H nautilusuntuk menghindari root menjadi pemilik file konfigurasi $HOME, berpotensi membuatnya tidak dapat diakses oleh program yang dijalankan sebagai pengguna biasa. Anda mungkin menyadari hal ini, tetapi saya menyebutkan untuk pembaca lain.
Zanna
6
  1. Jadikan Bootable USB seperti yang ditunjukkan di sini.

  2. Boot dari USB dengan menekan tombol seperti yang ditunjukkan di sini.

  3. Cari tahu partisi sistem file Anda dengan menjalankan gparted. Misalkan itu sdxy.

  4. Jalankan di terminal sudo mount /dev/sdxy /mnt

  5. Jalankan di terminal sudo mv /mnt/apache2 /mnt/etc

  6. Periksa sistem file Anda di / mnt untuk perubahan nama.

  7. Jalankan di terminal sudo reboot

  8. Saat diminta lepaskan USB dan tekan enter

Vijay
sumber
@ Sulphy Saya mencoba tetapi tidak berhasil tanpa sudo. Lihat di sini .
Vijay
Ini karena sda2 dipasang dengan sudo, oleh karena itu hanya sudo yang dapat melakukan tindakan. Tetapi jika Anda me-mount drive oleh nautilus (tanpa izin khusus) Anda dapat melakukan tugas tanpa sudo.
Kulfy
Memeriksa `ubuntu @ ubuntu: ~ $ mount / dev / sda2 / mnt mount: hanya root yang bisa melakukan itu ubuntu @ ubuntu: ~ $
Vijay
1
AFAIK mountprogramnya sangat ketat dan selalu harus dijalankan sebagai root; satu-satunya pengecualian untuk ini adalah ketika sistem file dalam fstabdan memiliki useropsi. Program ini udisksctlmemungkinkan pengguna normal untuk memasang perangkat, menggunakan misalnya udisksctl mount -b /dev/sda1(itu menciptakan titik pemasangan yang cocok di /media/$USER/). Saya belum mencoba menggunakan udisksctldari sistem live, tetapi pada sistem live seseorang selalu merupakan pengguna istimewa yang dapat berjalan sudotanpa kata sandi sehingga tidak perlu utilitas seperti udisksctlyang sebaliknya sangat berguna
Zanna