Saya menghapus file “/ etc / passwd” dan tidak bisa login

22

Saya mencoba mengubah nama pengguna dan juga direktori home saya ( /home/username) dan sistem saya mulai macet. Saya menghapus passwdfile tetapi saya punya cadangan bernama passwd_bkp. Saya mencoba mengubah nama ini passwd_bkpmenjadi passwddan tidak berhasil. Tidak ada perintah yang dieksekusi ... Saya berada di jendela terminal.

Saya me-restart sistem saya dan sekarang saya tidak bisa login. GRUB memberikan dua opsi: Linux dan mode pemulihan.

Saya mencoba membuka sesi sebagai root tetapi dikatakan filesystemnya rusak. Saya tidak dapat mengakses file saya.

Apakah saya kehilangan semua file saya?

joao rodrigo leao
sumber
1
Untuk pertanyaan tindak lanjut Anda: Ganti kata sandi Anda, menggunakan teknik pemulihan. Lihat: askubuntu.com/questions/24006/…
david6
1
@ david6 Ketika seorang pengguna tidak dapat masuk karena tidak ada /etc/passwdfile , itu juga tidak mungkin untuk mengatur ulang kata sandi. Anda harus mengembalikan (atau membuat ulang) passwdfile tersebut. Dan begitu selesai, umumnya tidak perlu mengatur ulang kata sandi.
Eliah Kagan
@Eliah Kagan: Setuju, tapi saya menjawab pertanyaan lanjutan, setelah / etc / passwd (seharusnya) dipulihkan dari salinan cadangan.
david6
Anda harus lebih spesifik tentang kesalahan tersebut.
psusi

Jawaban:

32

Tidak, dengan uraian Anda, Anda tidak kehilangan salah satu file Anda (kecuali /etc/passwd, yang Anda hapus, tetapi yang telah Anda buat cadangannya).

Boot CD / DVD live Ubuntu atau USB flash drive langsung. Pilih Try Ubuntu(bukan Install Ubuntu). Saat desktop dimuat, buka jendela Nautilus (browser file). Anda dapat menemukan partisi untuk sistem Ubuntu Anda di bawah Devices. Klik di atasnya untuk memasangnya.

Sekarang Anda dapat memulihkan cadangan. Anda harus melakukannya sebagai root. Inilah satu cara yang cukup mudah untuk melakukannya.

  1. Buka jendela Terminal ( Ctrl+ Alt+ T). Di Terminal, ketik cddan ketik Spacekunci, tetapi jangan tekan Enterlagi.

  2. Di Nautilus, cari etcdirektori di dalam sistem Ubuntu yang diinstal. (Ini tidak sama dengan etcdirektori untuk live CD. etcDirektori di dalam sistem Ubuntu yang diinstal ada di partisi yang baru saja Anda mount.)

  3. Seret etcdirektori ini ke Terminal, yang akan menempelkan path lengkapnya ke Terminal, menyelesaikan cd ...perintah.

  4. Tekan Enteruntuk menjalankan perintah. Sekarang Anda berada di direktori yang berisi passwdfile Anda . Saya berasumsi bahwa file cadangan Anda passwd_bkp,, juga terdapat di sini.

  5. Jalankan perintah ini:

    sudo cp passwd_bkp passwd
    

Itu mengembalikan passwdfile dari cadangan Anda, jadi sekarang Anda harus dapat melakukan reboot, lepaskan CD / DVD atau USB flash drive, dan boot kembali ke sistem Ubuntu Anda yang terinstal. Sistem Ubuntu yang Anda instal harus bekerja lagi.


Untuk masa depan, Anda harus menyadari bahwa itu tidak dianjurkan untuk secara manual mengedit /etc/passwd, /etc/group, /etc/shadow, atau /etc/gshadow. Sebagai gantinya, Anda harus menggunakan utilitas yang disediakan sebagai bagian dari Ubuntu untuk membuat perubahan apa pun yang Anda perlukan untuk pengguna dan grup di sistem Anda. Anda mungkin sadar bahwa Anda dapat mengedit ini di Pengaturan Sistem atau dengan users-admin. Tetapi ada juga utilitas baris perintah yang sangat kuat untuk ini, yang masih jauh lebih aman dan lebih mudah daripada mengedit file konfigurasi secara manual. Berikut dokumentasi tentang utilitas yang paling relevan di Ubuntu:

Anda dapat mengubah nama pengguna Anda dengan beberapa utilitas itu. Jawaban ini menjelaskan satu cara secara rinci. Namun, Anda harus sadar (seperti yang saat ini disentuh oleh komentar di sana) bahwa beberapa aplikasi menganggap nama pengguna Anda tetap sama. Jadi mengubah nama pengguna Anda mungkin menyebabkan beberapa masalah.

Eliah Kagan
sumber
Terima kasih banyak. Sekarang jam empat pagi di sini, di Brasil selatan ... Saya sangat khawatir sehingga saya tidak bisa tidur. Saya akan mencobanya ...
joao rodrigo leao
2
Jika Anda tidak membuat cadangan, coba gunakan /etc/passwd-atau /var/backups/passwd.bak. Pastikan untuk mengatur izin yang benar. Contoh:sudo install -m644 /etc/passwd- /etc/passwd
Lekensteyn
4

Sebagai alternatif untuk mem-boot livecd, Anda dapat menekan epada menu grub untuk mengedit entri mode penyelamatan, dan menambahkan init=/bin/shargumen kernel. Ini akan menjatuhkan Anda langsung ke shell root di mana Anda dapat menyalin file cadangan kembali ke aslinya setelah remount sistem baca-tulis dengan filesystem mount -o remount,rw /.

psusi
sumber
1
Apakah Anda yakin ini akan berhasil? Tanpa /etc/passwd, tidak ada pengguna yang disebut root, dan tidak ada pengguna dengan uid = 0 . Apakah utilitas yang dibutuhkan akan bekerja dalam kondisi yang tidak biasa itu?
Eliah Kagan
1
@ EliahKagan, selalu ada pengguna dengan uid = 0 karena itu adalah uid yang memulai proses pertama dengan kernel. cpatau mvtidak perlu / etc / passwd.
psusi
ini menyelamatkan pantat bodohku! saya mengedit secara manual di / etc / shadow tentang hal-hal crontab. Saya tidak tahu orang tidak mengacaukan 'bayangan' .... Saya pikir saya adalah f ** ckd tapi terima kasih tuhan untuk @psusi .... Saya mengedit menu grub untuk pemulihan ditambahkan / bin / sh saat dia berkata , mengikuti tunggangannya dan hanya menyalin shawdow dari / var / backup melalui yang rusak di / etc ... Bagus seperti baru .. terima kasih
rowntreerob
2

Anda harus membaca dulu jawaban Eliah Kagan, sebelum melanjutkan membaca jawaban ini. Dia menjelaskan bagaimana menghadapi situasi dan mengapa biasanya tidak perlu mengubah /etc/ passwd secara manual.

Bagaimanapun, jika Anda benar-benar tahu apa yang Anda lakukan dan Anda perlu mengedit /etc/passwdsecara manual , Anda bisa melakukannya, tetapi tetap saja Anda tidak harus hanya mengubah file dengan editor favorit Anda. Sebaliknya ada alatnya

vipw

Dari halaman manual:

The vipw and vigr commands edits the files /etc/passwd and /etc/group,
respectively. With the -s flag, they will edit the shadow versions of those
files, /etc/shadow and /etc/gshadow, respectively. The programs will set
the appropriate locks to prevent file corruption.

Untuk misalnya jika Anda ingin mengubah UID pengguna, sejauh yang saya tahu, untuk mengedit file secara manual, adalah satu-satunya cara. Juga jika Anda ingin mengubah kata sandi pengguna dan kemudian kembali ke kata sandi sebelumnya tanpa menyadarinya, tidak ada cara dengan usermodatau lebih. Tetapi jika Anda menyimpan kata sandi hash dari file shadow, maka ubah kata sandi pengguna Anda kemudian dapat menambahkan kata sandi hash dengan mengedit file shadow dengan vipw -s.

lumbric
sumber
1

Setelah mengikuti jawaban @ EliahKagan, saya tidak bisa masuk lightdmdan akun saya tidak terdaftar. Saya menemukan bahwa izin passwdfile tidak diatur dengan benar; pengguna lightdm tidak memiliki akses ke sana. Begini cara saya memperbaikinya :.

Masuk pada tty Ctrl+ Alt+F1

ubah ke /etcdirektori

cd /etc

Kemudian ubah izin menjadi 644

sudo chmod 644 passwd

Lalu lakukan ls -la

string izin akan terlihat seperti ini

-rw-r--r--
danidee
sumber
-1

Jika Anda dapat masuk, cukup buka terminal dan coba ini:

sudo cp /etc/passwd- /etc/passwd
sudo chmod 644 /etc/passwd

Lain

Boot ke mode pemulihan atau dari Ubuntu live Cd. Kemudian, pasang drive lama Anda:

mkdir /olddrive
mount /dev/hda5 /olddrive
assuming that your old drive is on /dev/hda5.
then, cd to /olddrive/etc
type:
echo "root::0:0:Superuser:/:/bin/bash" > passwd

lalu reboot. Itu tidak akan mengatur passwd untuk root.

Kemudian, Anda dapat login, membuat semua akun Anda lagi, dll.

Anda juga dapat menggunakan cadangan yang disebut (saya pikir) /etc/passwd-

Sunting : (metode lain yang belum pernah saya coba tetapi saya pikir itu harus bekerja juga)

  • Mulai GRUB saat boot (tekan Escsaat booting)
  • Tekan elebih (mode pemulihan)
  • Tekan ebaris yang dimulai dengan kernel
  • Tekan Spacedan masukinit=/bin/bash
  • tekan Enter
  • tekan b
  • Pada prompt perintah ketik: cp /etc/passwd- /etc/passwd
  • Reboot ke GRUB lagi
  • Tekan elebih (mode pemulihan)
  • Tekan ebaris yang dimulai dengan kernel
  • Tekan Spacedan masukinit=/bin/bash
  • tekan Enter
  • tekan b
  • Pada tipe prompt perintah mount -o remount,rw /
  • Ketik passwd YOURUSERNAMEHERE(Jika Anda tidak tahu jenis nama pengguna Anda ls /home(yaitu huruf kecil L dan huruf kecil S) untuk daftar pengguna)
  • Masukkan kata sandi baru saat diminta
  • Reboot ke boot normal.

Sumber

Maythux
sumber