Bagaimana cara mengedit file sudoers yang tidak valid? Ini melempar kesalahan di bawah dan itu tidak memungkinkan saya untuk mengedit lagi untuk memperbaikinya.
Inilah yang terjadi:
$ sudo visudo
>>> /etc/sudoers: syntax error near line 28 <<<
sudo: parse error in /etc/sudoers near line 28
sudo: no valid sudoers sources found, quitting
Pada sistem Ubuntu modern (dan banyak distribusi GNU / Linux lainnya), memperbaiki yang rusak sudoers
file sebenarnya cukup mudah, dan tidak perlu me-reboot, menggunakan CD langsung, atau akses fisik ke mesin.
Untuk melakukan ini melalui SSH, masuk ke mesin dan jalankan perintah pkexec visudo
. Jika Anda memiliki akses fisik ke mesin, SSH tidak diperlukan; buka saja jendela Terminal dan jalankan itu pkexec
perintah.
Dengan asumsi Anda (atau beberapa pengguna lain) berwenang untuk menjalankan program sebagai root
dengan PolicyKit, Anda dapat memasukkan kata sandi Anda, dan kemudian itu akan berjalan visudo
sebagai root
, dan Anda dapat memperbaiki /etc/sudoers
.
Jika Anda perlu mengedit salah satu file konfigurasi di /etc/sudoers.d
(yang jarang terjadi dalam situasi ini, tapi mungkin), gunakan pkexec visudo -f /etc/sudoers.d/nama file
.
Jika Anda memiliki situasi yang terkait di mana Anda harus melakukan perintah administrasi sistem tambahan sebagai root untuk memperbaiki masalah (juga tidak biasa dalam keadaan ini, tetapi umum pada orang lain), Anda dapat memulai shell root interaktif dengan pkexec bash
. Secara umum, setiap perintah non-grafis yang Anda jalankan sudo
dapat dijalankan dengan pkexec
sebagai gantinya.
(Jika ada lebih dari satu akun pengguna pada sistem yang diotorisasi untuk menjalankan program sebagai root
dengan PolicyKit, maka untuk setiap tindakan itu, Anda akan diminta untuk memilih yang mana yang ingin Anda gunakan, sebelum diminta kata sandi Anda.)
Jika itu tidak berhasil - misalnya, jika tidak ada pengguna yang berwenang untuk menjalankan program sebagai root melalui PolicyKit - kemudian boot dari live CD Ubuntu (seperti CD yang mungkin Anda gunakan untuk menginstal Ubuntu) dan mount filesystem untuk sistem terpasang. Anda dapat melakukan ini dengan berlari
sudo parted -l
untuk melihat partisi Anda - mungkin hanya ada satu partisi ext4, dan itu adalah filesystem root.
Misalkan sistem file root sistem Ubuntu yang terinstal adalah pada / dev / sda1. Maka Anda bisa memasangnya dengan sudo mount /dev/sda1 /mnt
. Kemudian Anda dapat mengedit file sudoers sistem yang diinstal dengan sudo nano -w /mnt/etc/sudoers
. Atau, lebih baik lagi, Anda dapat mengeditnya
sudo visudo -f /mnt/etc/sudoers
(yang akan mencegah Anda menyimpan file sudoers dengan sintaks yang salah).
Selalu gunakan visudo
untuk mengedit file sudoers Anda, jangan pernah mengeditnya secara langsung. Ini akan mencegah Anda menyimpannya ke disk kecuali ia memvalidasi.
Ketik:
pkexec visudo
Kemudian ubah baris terakhir
#includedir /etc/sudoers
Untuk:
#includedir /etc/sudoers.d
Itu harus menyelesaikan masalah Anda.
jika orang lain seperti saya tidak punya pkexec diinstal, atau tidak dapat menjalankan vi, visudo, nano atau editor lain untuk mengubah file sudoers Anda dapat yakin dengan proses ini. Saya telah disimpan dengan ini:
- reboot
- tahan tombol shift saat boot untuk memiliki opsi untuk mode pemulihan (masukkan)
- masukkan baris perintah sebagai root (opsi terakhir kedua di menu grub saya)
pasang kembali perangkat boot untuk rw, dan terapkan exec tepat untuk pengguna, dan edit file
mount -n -o remount,rw /
chmod u+x /etc/sudoers
nano /etc/sudoers
memperbaiki kesalahan itu dan menjadi bahagia :)
Tidak ada yang salah #sertakan sudoer.d
menghapus # include sudoer.d tidak akan ada bedanya.
Tetapi pastikan Anda tidak memiliki kesalahan sintaksis.
Saya memiliki masalah yang sama tetapi dan menghabiskan berjam-jam untuk memperbaiki dan hanya tahu mereka adalah kesalahan sintaks.
Lihat manual dan buat mereka benar.
Sebagai contoh
Katakanlah nama pengguna Anda adalah: dolly
Saya menggunakan yang berikut yang salah
dolly ALL = (ALL) ALL NO PASSWD: ALL
sintaks yang benar adalah
dolly ALL = (ALL) ALL //give permission to everything, not good
atau
dolly ALL=(ALL) NOPASSWD:/usr/bin/thurderbird //good, give specific permission
semoga ini membantu
Jika Anda mengacaukan file sudoers Anda. Anda perlu:
- Reboot ke recovery mode (tekan escape saat boot, pilih opsi recovery mode pada layar grub)
- Pilih opsi 'Aktifkan jaringan' (jika Anda tidak filesystem Anda akan dipasang sebagai read-only. Siapa yang tahu)
- Pilih opsi 'Jatuhkan ke root shell'
- jalankan visudo, perbaiki file Anda
- Reboot dengan opsi grub normal
sumber: - http://mario.net.au/content/recover-etcsudoers-ubuntu-1204
jalankan mode pemulihan lalu ketik ini
chown -R root: root /etc/sudoers.d
chmod u = rwx, g = rx, o = rx /etc/sudoers.d/
chmod u = r, g = r, o = /etc/sudoers.d/*
hanya grup dan root pengguna yang harus membaca privilege
Anda dapat mengedit entri boot Anda saat berada di grub juga.
Cukup reboot komputer Anda, dan tunggu grub ditampilkan. Kemudian tekan "e" pada entri "Ubuntu" untuk mengeditnya.
Carilah baris dengan "linux =" atau "kernel =" dan cukup tambahkan "tunggal" ke ujung baris itu.
Kemudian tekan F10 untuk mem-boot entri boot yang dimodifikasi sementara ini.
Ini akan memberi Anda shell (tanpa GUI) dengan hak root dan Anda dapat mengedit file sudoers dengan s.th. seperti nano / etc / sudoers kembali ke keadaan sebelumnya.
Kemudian reboot dan selesai.
Anda juga dapat masuk sebagai root di tty
menghibur dengan Ctrl+Fn (Fn dari 1 hingga 6) dan jalankan visudo
.
pkexec visudo
kemudian kembalikan kesalahanmu
Saya menemukan bug. Ini ada di dua baris terakhir dari default /etc/sudoers
mengajukan. Hapus entri berikut dari akhir file / etc / sudoers dengan visudo
.
#includedir /etc/sudoers.d