sudo: /usr/lib/sudo/sudoers.so harus dimiliki oleh uid 0

10

Setiap kali saya mencoba melakukan apa saja yang memerlukan kata sandi saya, ia mengembalikan ini:

u7ur7l3@ubuntu:~$ sudo
sudo: /usr/lib/sudo/sudoers.so must be owned by uid 0
sudo: fatal error, unable to load plugins
u7ur7l3@ubuntu:~$

Jadi saya tidak dapat menginstal apa pun dari Pusat Perangkat Lunak / manajer paket atau menjalankan perintah apa pun di terminal yang memerlukan kata sandi saya. Saya bisa masuk, tapi cukup banyak.

Saya tidak sengaja mengubah izin beberapa file, lalu mengubah beberapa lagi untuk memperbaikinya: /. Sekarang saya benar-benar bingung apa yang harus dilakukan.

Inilah yang terjadi ketika saya mencoba membuat sudo bekerja kembali menggunakan pkexec:

u7ur7l3@ubuntu:~$ pkexec chown root /usr/lib/sudo/sudoers.so
Error getting authority: Error initializing authority: Error calling StartServiceByName for org.freedesktop.PolicyKit1: GDBus.Error:org.freedesktop.DBus.Error.Spawn.ExecFailed: Failed to execute program /usr/lib/dbus-1.0/dbus-daemon-launch-helper: Success 

u7ur7l3@ubuntu:~$ sudo ls
sudo: /usr/lib/sudo/sudoers.so must be owned by uid 0 sudo: fatal error, unable to load plugins

Dan untuk mengubah izin, saya menggunakan Root Actions sebagai layanan / plugin lumba-lumba, jadi riwayat tidak menunjukkan perubahan izin kepada saya.

Saya baru sadar bahwa suara tidak berfungsi lagi. Ketika saya masuk ke Phonon, pengaturan default saya dan perangkat pemutaran bahkan tidak ada. Juga saya tidak memiliki opsi untuk mematikan, saya hanya bisa keluar atau keluar.

7UR7L3
sumber
Apakah masalah suara dan shutdown baru sejak Anda menjalankan pkexecperintah?
Eliah Kagan
@Eliah Kagan, tidak, saya menyadari masalah suara saat saya masuk ke komputer saya, dan saya menyadari masalah mematikan ketika saya mematikan komputer saya tadi malam. Saya akhirnya hanya menekan tombol power.
7UR7L3
Saya telah memperluas jawaban saya untuk memberikan instruksi yang seharusnya berfungsi meskipun keduanya sudodan PolicyKit (via pkexec) berfungsi.
Eliah Kagan
2
su root chown -R root: root / usr / lib /

Jawaban:

20

Kepemilikan setidaknya satu dari file sistem penting Anda salah. Itu hal yang buruk; jika ini terjadi pada banyak file sistem (mungkin Anda menjalankan sudo chownperintah besar dengan -Rflag di beberapa titik?), ini dapat menyebabkan sejumlah kesalahan dan ketidakstabilan sistem lainnya. Jadi jika Anda baru saja menginstal Ubuntu , Anda mungkin ingin menginstal ulang seperti yang disarankan Adam Heathcote .

Tetapi Anda tidak perlu menginstal ulang untuk memperbaiki masalah ini . Sebagai gantinya, perbaiki kepemilikan pada file itu. Jika Anda mendapatkan kesalahan tentang file lain setelah itu, Anda dapat memperbaikinya juga (meskipun Anda mungkin harus memberi tahu kami apa pesan kesalahannya, sehingga kami dapat memberi tahu Anda cara memperbaikinya juga).

sudotidak berfungsi, tetapi menggunakansudo adalah salah satu dari dua cara bagi administrator untuk melakukan tindakan sebagai root di Ubuntu. Yang lainnya adalah Polkit (yang dulunya disebut PolicyKit).

Jalankan perintah ini, yang menggunakan Polkit (via pkexec) untuk mengubah kepemilikan /usr/lib/sudo/sudoers.sokembali ke root(yaitu, uid 0):

pkexec chown root /usr/lib/sudo/sudoers.so

Lalu coba gunakan sudolagi. Anda dapat menjalankan sesuatu yang sepele , dan melihat apakah Anda mendapatkan pesan kesalahan.sudo ls

Akhirnya, saya sarankan menjalankan historyuntuk mengungkapkan semua perintah yang telah Anda jalankan. Semoga itu akan mencantumkan semua perintah yang telah Anda jalankan yang telah mengubah izin. Dengan asumsi sudosekarang berfungsi, saya sarankan memposting pertanyaan baru termasuk output dari history, untuk mendapatkan bantuan membatalkan semua kepemilikan file dan perubahan izin yang telah Anda lakukan.

Jika pkexectidak berhasil ...

Anda sudah mencoba pkexecdan itu tidak berhasil. Karena sudoPolkit tidak berfungsi untuk memungkinkan Anda melakukan tindakan sebagai root, Anda harus boot ke mode pemulihan dan mendapatkan shell root. Untuk melakukan ini, tahan Shiftsaat boot komputer Anda, untuk memastikan Anda mendapatkan menu boot GRUB terlihat. Pilih entri yang berisi mode pemulihan kata (umumnya, Anda harus memilih entri yang paling dekat dengan yang memiliki kata-kata itu). Kemudian Anda akan mendapatkan menu tempat Anda memiliki sejumlah opsi - pilih opsi untuk jatuh ke shell root.

Instruksi terperinci tentang cara mengakses shell root dalam mode pemulihan ada di sini:

Setelah Anda memiliki shell root, jalankan:

chown root /usr/lib/sudo/sudoers.so

Jika Anda mendapatkan kesalahan tentang file atau sistem file yang tidak dapat dimodifikasi, maka remount itu readwrite:

mount -rw -o remount /

(Sumber untuk ide remounting dan bagaimana melakukannya: jawaban yang sebagian besar tidak berhubungan ini .)

Kemudian setelah menjalankan mountperintah itu, jalankan kembali chownperintah di atas dan lihat apakah itu berhasil.

Setelah selesai dalam mode pemulihan, Anda dapat reboot dengan menjalankan:

reboot

sudoseharusnya bekerja, atau setidaknya memberikan beberapa kesalahan lainnya .

Terakhir, harap perhatikan bahwa mengingat kesalahan yang Anda tunjukkan, kemungkinan banyak file sekarang memiliki kepemilikan atau izin yang salah. Ini akan ideal jika Anda bisa mencari tahu file mana yang Anda modifikasi dengan cara ini. Misalnya, jika Anda bisa mengetahui bahwa itu semua file dalam beberapa folder tertentu, maka mungkin untuk memperbaiki tingkat lengkap dari masalah terbaru yang Anda alami.

Menginstal ulang jelas merupakan suatu pilihan, tetapi terutama jika semua yang Anda ubah adalah kepemilikan (dan bukan izin, yang agak sulit direkonstruksi karena mereka lebih bervariasi), harus dimungkinkan untuk hanya mengatur izin secara rekursif ke pemilik aslinya (mungkin biasanya root ) dan membalikkan kerusakan seluruhnya.

Mendapatkan sudobekerja kembali adalah langkah pertama. Semoga teknik di atas akan memungkinkan Anda untuk melakukan itu.

Eliah Kagan
sumber
Saya mengikuti instruksi itu tetapi ketika saya boot kembali ke kubuntu untuk masalah masih ada. Kesalahan yang sama. Pada titik ini mungkin lebih mudah untuk menginstal ulang. : /
7UR7L3
Juga, apakah ada cara saya bisa melakukan sesuatu seperti ini: askubuntu.com/questions/9135/… untuk menyimpan semuanya? Semua bersama-sama sebagai skrip pseudo-bash tidak akan berfungsi karena sudo terlibat jadi ....
7UR7L3
@ 7UR7L3 Itu akan mencadangkan informasi tentang paket apa yang diinstal, dan sebagian besar informasi tentang pengaturan seluruh sistem program Anda. Dalam kombinasi dengan cadangan penuh dari direktori home Anda, yang seharusnya memungkinkan Anda untuk mengembalikan sebagian besar ke cara mereka, setelah menghapus sistem yang ada dan menginstal yang baru, ya. Pastikan Anda memiliki cadangan semua file yang sangat penting (seperti dokumen Anda) setiap saat. Jika Anda membutuhkan informasi lebih lanjut tentang teknik itu sebagaimana diterapkan pada situasi Anda, saya sarankan memposting pertanyaan baru (tapi saya tidak keberatan jika Anda bertanya dalam komentar di sini).
Eliah Kagan
Apakah ada cara yang baik untuk melakukan semua ini? Saya memiliki drive eksternal 1 TB tempat saya dapat mencadangkan barang, tetapi tidak akan muncul di mana pun ketika saya tancapkan. Lampu menyala untuk menunjukkan bahwa itu berfungsi tetapi tidak ada pada layar yang berubah dan tidak ada di mana pun di lumba-lumba . Kemudian begitu saya mulai bekerja bagaimana saya harus menyimpan semuanya untuk itu. Dalam manajer paket, saya dapat menyimpan paket yang diinstal ke dokumen teks, tetapi hanya itu yang harus saya lakukan untuk menyimpan informasi. Hampir semua solusi lain melibatkan sudo yang masih tidak berfungsi.
7UR7L3
@ 7UR7L3 Untuk membuat cadangan file? Boot dari CD / DVD langsung atau USB langsung. Anda dapat mengakses file dari sana, dan mencadangkannya ke drive eksternal Anda. Jika drive eksternal Anda tidak muncul di sistem live juga, maka itu masalah yang sama sekali terpisah yang saya mungkin tidak dapat membantu Anda dan hampir pasti tidak bisa dalam batas komentar. Jadi jika itu terjadi, saya sarankan memposting pertanyaan baru. Jika Anda berkomentar di sini dengan tautan ke pertanyaan baru, saya akan memastikan untuk melihatnya dan berkontribusi jika saya bisa.
Eliah Kagan