Bagaimana cara saya mengedit file sudoers yang tidak valid? Itu melempar kesalahan di bawah ini 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
Jawaban:
Pada sistem Ubuntu modern (dan banyak distribusi GNU / Linux lainnya), memperbaiki
sudoers
file yang rusak sebenarnya cukup mudah, dan tidak memerlukan boot ulang, 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 perlu; cukup buka jendela Terminal dan jalankanpkexec
perintah itu.Dengan asumsi Anda (atau pengguna lain) berwenang untuk menjalankan program seperti
root
dengan PolicyKit, Anda dapat memasukkan kata sandi, dan kemudian akan berjalanvisudo
sepertiroot
, dan Anda dapat memperbaiki/etc/sudoers
.Jika Anda perlu mengedit salah satu file konfigurasi di
/etc/sudoers.d
(yang jarang terjadi dalam situasi ini, tetapi mungkin), gunakan .pkexec visudo -f /etc/sudoers.d/filename
Jika Anda memiliki situasi terkait di mana Anda harus melakukan perintah administrasi sistem tambahan sebagai root untuk memperbaiki masalah (juga tidak biasa dalam keadaan ini, tetapi umum terjadi pada orang lain), Anda dapat memulai dengan root shell interaktif
pkexec bash
. Secara umum, setiap perintah non-grafis yang Anda jalankansudo
dapat dijalankan denganpkexec
sebagai gantinya.(Jika ada lebih dari satu akun pengguna pada sistem yang diotorisasi untuk menjalankan program seperti
root
pada PolicyKit, maka untuk tindakan tersebut, Anda akan diminta untuk memilih mana yang ingin Anda gunakan, sebelum diminta kata sandi Anda.)Jika itu tidak berhasil - misalnya, jika tidak ada pengguna yang diizinkan untuk menjalankan program sebagai root melalui PolicyKit - maka boot dari live CD Ubuntu (seperti CD yang mungkin Anda gunakan untuk menginstal Ubuntu) dan pasang sistem file untuk sistem yang diinstal. Anda dapat melakukan ini dengan menjalankan
sudo parted -l
untuk melihat partisi Anda - mungkin hanya ada satu partisi ext4, dan itulah sistem file root.Misalkan filesystem root sistem Ubuntu yang terinstal ada di / dev / sda1. Maka Anda bisa memasangnya dengan
sudo mount /dev/sda1 /mnt
. Kemudian Anda dapat mengedit file sudoers sistem yang diinstal dengansudo nano -w /mnt/etc/sudoers
. Atau, bahkan lebih baik, Anda dapat mengeditnya dengan(yang akan mencegah Anda menyimpan file sudoers dengan sintaks yang salah).
sumber
#include
arahan dalamsudoers
file diperlakukan secara khusus; pemimpin#
tidak menyebabkan sisa kalimat ditafsirkan sebagai komentar, dalam hal ini. Seperti yangman sudoers
dikatakan: "Tanda pound ('#') digunakan untuk menunjukkan komentar (kecuali jika itu adalah bagian dari #include directive atau kecuali ..." Lihat juga visudo: #includedir sudoers.d (diarsipkan dari lzone.de/ blog )pkexec visudo
minta kata sandi, yang tidak menerima kata sandi yang benar. Itu melempar kesalahan "OTENTIKASI GAGAL".Selalu gunakan
visudo
untuk mengedit file sudoers Anda, jangan pernah mengeditnya sendiri secara langsung. Ini akan mencegah Anda menyimpannya ke disk kecuali itu divalidasi.sumber
Ketikkan:
Kemudian ubah baris terakhir
Untuk:
Itu harus menyelesaikan masalah Anda.
sumber
#
dari#includedir
penyebab kesalahan sintaks,#
adalah bagian dari arahan, setidaknya di Ubuntu 12.10.jika orang lain seperti saya tidak memiliki pkexec diinstal, atau tidak dapat menjalankan vi, visudo, nano atau editor lain untuk mengubah file sudoers Anda dapat yakin dengan proses ini .. Saya diselamatkan dengan ini:
remount perangkat boot untuk rw, dan terapkan exec tepat untuk pengguna, dan edit file
memperbaiki kesalahan itu dan bahagia :)
sumber
visudo
sebagai gantinyanano /etc/sudoers
.Jika Anda mengacaukan
sudoers
file Anda, Anda harus:visudo
, perbaiki file Andasumber: - http://mario.net.au/content/recover-etcsudoers-ubuntu-1204
sumber
Tidak ada yang salah #sertakan sudoer.d menghapus #sertakan sudoer.d tidak akan membuat perbedaan.
Tetapi pastikan Anda tidak memiliki kesalahan sintaksis. Saya memiliki masalah yang sama tetapi menghabiskan waktu berjam-jam untuk memperbaikinya dan baru tahu bahwa itu adalah kesalahan sintaksis. Rujuk ke manual dan perbaiki.
Misalnya Katakanlah nama pengguna Anda: dolly saya gunakan berikut yang salah
sintaks yang benar adalah
atau
semoga ini membantu
sumber
visudo
ketika mengedit file-file ini, yang memastikan Anda tidak memiliki kesalahan sintaksis untuk Anda, sebelum memodifikasi file.visudo
tidak hanya untuk mengedit -/etc/sudoers
itu juga akan membuat dan mengedit file dalam/etc/sudoers.d
. Ini juga akan bekerja dengan editor teks apa pun yang Anda inginkan. Lihat halaman manual untuk detailnya.thunderbird
, yang seharusnya tidak pernah dijalankan sebagai root) akan secara efektif memberikan pengguna akses sistem penuh ketika dijalankan sebagai root. Bahkan fungsionalitas yang tampaknya sederhana membuka pintu untuk akses root penuh. Misalnya, pengguna yang dapat menjalankan program yang dapat menyimpan file ke lokasi arbitrer karena root dapat memperoleh akses root penuh (mereka dapat menginstal sendiri/etc/sudoers
, atau jika batasan sintaksis mencegahnya, mereka dapat menginstal sendiri/etc/crontab
).jalankan recovery mode lalu ketik ini
hanya grup dan root pengguna yang seharusnya membaca hak istimewa
sumber
Anda juga dapat masuk sebagai root pada
tty
konsol dengan Ctrl+ Fn( Fndari 1 hingga 6) dan jalankanvisudo
.sumber
Anda dapat mengedit entri boot Anda saat di grub juga.
Cukup reboot komputer Anda, dan tunggu sampai grub muncul. Kemudian tekan "e" pada entri "Ubuntu" untuk mengeditnya.
Cari baris dengan "linux =" atau "kernel =" dan cukup tambahkan "tunggal" di akhir 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.
sumber
kemudian kembalikan kesalahan Anda
sumber
visudo
harus dijalankan sebagai root. Jikasudo
tidak berhasil,pkexec
terkadang berhasil. Ini dicakup oleh jawaban saya sebelumnya ... tetapi itu adalah jawaban yang benar,visudo
dengan sendirinya (ketika tidak dijalankan sebagai root) tidak akan berfungsi, dan mungkin ada nilai dalam jawaban yang benar dan singkat bahkan ketika rekomendasi mereka tumpang tindih dengan jawaban lainnya. Tentu saja, jika seseorang masuk ke mode pemulihan, itu adalah shell root dan kemudian tidak perlusudo
atauvisudo
tidak perlu untuk perintah sepertipkexec
. Mungkin itu yang Anda maksud ...Di Ubuntu 16.04 berjalan di VirtualBox (seharusnya tidak membuat perbedaan), metode di atas tidak bekerja untuk saya (baris tidak valid di akhir file). Apa yang berhasil adalah:
su -
dan kemudian berikan kata sandi nama pengguna Anda sendiri.root@ubuntu-xenial:~#
prompt, jika/etc/sudoers
tidak terlalu rusak atau kosong. Tidak yakin apa yang akan terjadi dalam kasus itu.visudo
dan memperbaiki file.Ctrl + X
dan itu akan meminta untuk Simpan buffer yang dimodifikasi. TekanY
danEnter
Jika Anda
/etc/sudoers
kosong atau melewatkan sesuatu, dan Anda dapat mengeditnya, maka inilah isinya:sumber
Praktik yang baik: jendela terminal cadangan dan jalankan di
sudo su
sana. Pada termianl lain jalankan visudo atau sudo vim / etc / sudoers. Jika ada masalah, kembali ke terminal satu dan perbaiki file. Anda mungkin bertanya, mengapa tidak berjalansudo su
sebelumnyavisudo
di satu terminal? Ini juga berfungsi, tetapi memiliki risiko lebih tinggi Anda menutup terminal sebelum Anda menyadarinya.sumber
Ada solusi cara yang lebih sederhana. Tanpa reboot, mode pemulihan, atau
pkgexec
(pkgexec
tidak berfungsi dan tidak tahu mengapa atau bagaimana saya harus menggunakannya), cukup lakukan:Dan kemudian perbaiki kesalahan sintaks!
sumber