Pertanyaan Bagaimana cara memodifikasi file '/ etc / sudoers' yang tidak valid?


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

206
2017-10-30 19:15


asal


pertanyaan besar mengingat halaman ini menciptakan kesalahan itu help.ubuntu.com/community/RootSudoTimeout


Jawaban:


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).


317
2017-10-30 19:45



pkexec / usr / sbin / visudo bekerja pada debian 7 - marinara
Tidak bisakah mereka juga hanya masuk ke mode pemulihan? - Seth♦
ASTAGA! Terima kasih banyak! Disimpan bacon saya. Menambahkan file seperti yang disarankan ke direktori etc / sudoers.d / MENGGUNAKAN EDITOR TULIS REGULER (D-O-N-T__D-O__T-H-A-T !!!). Kehilangan semua kemampuan untuk melakukan privilese tinggi, TERMASUK, mengedit file yang menyinggung. Ini membantu mengedit file. Aneh sekalipun, saya harus mengedit / etc / sudoers terlebih dahulu, kemudian menemukan kesalahan dalam file lain dan membuka itu untuk saya. BAHKAN WEIRDER, arahan dalam file / etc / sudoers 'inlcudedir /etc/sudoers.d' dikomentari, dan itu masih termasuk itu. - Dennis
@Dennis Agak membingungkan, #include arahan dalam sudoers file diperlakukan secara khusus; pemimpin # tidak menyebabkan sisa baris ditafsirkan sebagai komentar, dalam kasus itu. Sebagai man sudoers mengatakan: "Tanda pound (‘ # ’) digunakan untuk menunjukkan komentar (kecuali itu adalah bagian dari arahan #include atau kecuali ..." Lihat juga visudo: #includedir sudoers.d (diarsipkan dari lzone.de/blog). - Eliah Kagan
Pengguna saya sudoer tetapi saya mendapat kesalahan ini: Kesalahan mengeksekusi perintah sebagai pengguna lain: Tidak diotorisasi - SuB


Selalu gunakan visudo untuk mengedit file sudoers Anda, jangan pernah mengeditnya secara langsung. Ini akan mencegah Anda menyimpannya ke disk kecuali ia memvalidasi.


44
2017-11-20 17:08



belakang adalah 20/20 - code_monk
Itu tidak akan mencegah bencana. Cukup mudah untuk menyangkal diri Anda secara sah. - Joshua
Apakah visudo dapat digunakan oleh scritps? Jika ya, bagaimana caranya? - Lukas
Saya tidak menginstal visudo. Jadi saya melakukan vim pkexec. Maka itu menunjukkan daftar pengguna dan meminta kata sandi. Ketika saya memberikan kata sandi, itu melemparkan kesalahan sebagai "Kesalahan mengeksekusi perintah sebagai pengguna lain: Tidak diotorisasi". Tolong bantu - Shyamkkhadka


Ketik:

pkexec visudo

Kemudian ubah baris terakhir

#includedir /etc/sudoers

Untuk:

#includedir /etc/sudoers.d

Itu harus menyelesaikan masalah Anda.


20
2018-02-21 18:23



Saya telah memperhatikan bahwa menghapus memimpin # dari #includedir menyebabkan kesalahan sintaks, # adalah bagian dari arahan, setidaknya pada Ubuntu 12.10. - SAFX
Itu hanya menyelamatkan saya banyak sakit kepala. Terima kasih banyak :) - Nitroware
Saya tidak menginstal visudo. Jadi saya melakukan vim pkexec. Maka itu menunjukkan daftar pengguna dan meminta kata sandi. Ketika saya memberikan kata sandi, itu melemparkan kesalahan sebagai "Kesalahan mengeksekusi perintah sebagai pengguna lain: Tidak diotorisasi". Tolong bantu - Shyamkkhadka


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 :)


10
2017-10-20 21:40



Sementara solusi pkexec yang disarankan oleh @ eliah-kagan tampaknya lebih mudah, yang satu ini lebih universal. Di komputer saya ternyata tidak ada pkexec yang terinstal dan tentu saja saya tidak bisa menginstalnya karena sudo apt-get install pkexec entah bagaimana tidak berfungsi. - running.t


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


6
2017-07-02 23:15



Pendekatan yang lebih baik daripada memastikan Anda tidak memiliki kesalahan sintaks untuk selalu digunakan visudo saat mengedit file-file ini, yang memastikan Anda tidak memiliki kesalahan sintaks untuk Anda, sebelum memodifikasi file. visudo bukan hanya untuk mengedit /etc/sudoers--itu juga akan membuat dan mengedit file /etc/sudoers.d. Ini juga akan bekerja dengan editor teks apa pun yang Anda inginkan. Lihat halaman manual untuk detailnya. - Eliah Kagan
Untuk memberikan izin khusus, harap dicatat bahwa ini hanya berguna untuk aplikasi / perintah yang sangat sederhana, karena aplikasi yang cukup kompleks (termasuk thunderbird, yang seharusnya tidak pernah dijalankan sebagai root) akan secara efektif memberi pengguna akses penuh ke sistem saat dijalankan sebagai root. Bahkan fungsi yang tampak sederhana membuka pintu ke akses root penuh. Sebagai contoh, seorang pengguna yang dapat menjalankan program yang dapat menyimpan file ke lokasi sewenang-wenang sebagai root dapat memperoleh akses root penuh (mereka dapat menginstal sendiri /etc/sudoers, atau jika batasan sintaks mencegahnya, mereka dapat menginstal sendiri /etc/crontab). - Eliah Kagan


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


5
2017-12-14 10:59



Hai, apakah itu menghilangkan iptables, file sistem yang ada? - Shyamkkhadka


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


3
2017-11-20 17:11





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.


2
2018-01-13 04:41





Anda juga dapat masuk sebagai root di tty menghibur dengan Ctrl+Fn (Fn dari 1 hingga 6) dan jalankan visudo.


2
2018-03-09 07:12





pkexec visudo

kemudian kembalikan kesalahanmu


2
2018-01-01 08:23



tidak perlu menggunakan pkexec - Braiam
@Braiam visudo harus dijalankan sebagai root. Jika sudo tidak berfungsi, pkexec kadang-kadang tidak. Ini ditutupi oleh jawaban saya sebelumnya... tetapi itu adalah jawaban yang benar, visudo dengan sendirinya (bila tidak dijalankan sebagai root) tidak akan berfungsi, dan mungkin ada nilai dalam jawaban yang benar dan singkat bahkan ketika rekomendasi mereka tumpang tindih secara signifikan dengan jawaban lain. Tentu saja, jika seseorang masuk ke mode pemulihan, itu adalah shell root dan kemudian tidak sudo maupun visudo diperlukan untuk perintah seperti pkexec. Mungkin itu yang kamu maksud ... - Eliah Kagan


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

0
2018-02-23 21:57



Itu tampak seperti situasi yang terkait, tetapi berbeda dari yang satu ini. Dalam situasi ini, masalahnya bukan karena ada file buruk (atau izin salah) di /etc/sudoers.d, tapi itu /etc/sudoers itu sendiri korup. - Eliah Kagan