Saya tidak sengaja menghapus file sudoers pada Mac OS X; apakah ada cara untuk memulihkannya?

9

Saya tidak sengaja menghapus sudoersfile di Mac OS X; apakah ada cara untuk memulihkannya?
Dan setelah Anda memulihkannya, bagaimana Anda mengaturnya ke mode 0440?

menyapu
sumber

Jawaban:

8

Jika saya memahami masalah Anda dengan benar, maka saat ini Anda tidak memiliki sudoer dan Anda mencoba melakukan sudo dan itu tidak berfungsi. Dalam hal ini, agar sudo berfungsi, Anda dapat melakukan hal berikut:

  1. Buat file sudoers di folder rumah Anda. Anda dapat menemukan konten default di sini sudoers
  2. Buka folder "/ etc" di Finder ("Go" -> "Go to Folder ...").
  3. Sekarang salin file sudoers dari folder home ke / etc folder via Finder.
  4. Prompt akan datang meminta kata sandi.
  5. Masukkan kata sandi yang benar dan Anda selesai.

Untuk memeriksa sudo berjalan baik cd /etcdan sudo vim sudoers. Anda harus dapat melihat file sudoers melalui editor vim. Operasi baca / tulis di / etc akan membutuhkan perintah sudo.

Saya tahu ini sedikit mengejutkan bahwa bahkan setelah tidak memiliki sudoers, melalui UI kita dapat melakukan operasi di / etc. Tapi itu berhasil untuk saya :)

Tanmay
sumber
1
Memang aneh bahwa GUI setara dengan apa yang tidak mungkin dari baris perintah berfungsi. Saya kira tes Apple untuk alur kerja GUI lebih menyeluruh daripada baris perintah. Syukurlah, pos ini menyelamatkan saya.
Sridhar Sarnobat
Senang mengetahui bahwa itu membantu Anda.
Tanmay
6

Saya berasumsi Anda mencoba menjalankan sudoperintah dan itu memberi Anda kesalahan yang /etc/sudoerstidak memiliki izin yang benar?

Jika sebelumnya Anda telah memberikan Adminstatus akun Anda, Anda harus dapat memperbaiki izin melalui GUI. Buka folder "/ etc" di Finder ("Go" -> "Go to Folder ..."), lalu buka sudoersproperti file. Klik kunci. Berikan admingrup read/write, systempengguna read-only, wheelgrup read-only, dan everyonegrup no access. Izin sekarang harus benar.

Jika Anda tidak menempatkan diri dalam admingrup, Anda harus me-reboot OSX ke mode pengguna tunggal dan melakukan perintah chmod 0440 /etc/sudoers.

George M.
sumber
6

Aktifkan pengguna root menggunakan preferensi sistem, dan kemudian buat / etc / sudoers saat login sebagai pengguna root menggunakan

touch /etc/sudoers; chmod 440 /etc/sudoers

Catatan: Karena perintah dijalankan sebagai root dalam kasus ini, dan id grup /etcadalah 0, maka seharusnya secara default dimiliki oleh pengguna dan grup yang benar setelah dibuat ulang, tetapi jika karena alasan tertentu tidak, jalankan

chown root:wheel /etc/sudoers

Setelah Anda membuat /etc/sudoersgunakan visudo untuk memasukkan kode ini ke dalamnya:

# sudoers file.

#
# This file MUST be edited with the 'visudo' command as root.
# Failure to use 'visudo' may result in syntax or file permission errors
# that prevent sudo from running.
#
# See the sudoers man page for the details on how to write a sudoers file.
#

# Host alias specification

# User alias specification

# Cmnd alias specification

# Defaults specification
Defaults    env_reset
Defaults    env_keep += "BLOCKSIZE"
Defaults    env_keep += "COLORFGBG COLORTERM"
Defaults    env_keep += "__CF_USER_TEXT_ENCODING"
Defaults    env_keep += "CHARSET LANG LANGUAGE LC_ALL LC_COLLATE LC_CTYPE"
Defaults    env_keep += "LC_MESSAGES LC_MONETARY LC_NUMERIC LC_TIME"
Defaults    env_keep += "LINES COLUMNS"
Defaults    env_keep += "LSCOLORS"
Defaults    env_keep += "SSH_AUTH_SOCK"
Defaults    env_keep += "TZ"
Defaults    env_keep += "DISPLAY XAUTHORIZATION XAUTHORITY"
Defaults    env_keep += "EDITOR VISUAL"

# Runas alias specification

# User privilege specification
root    ALL=(ALL) ALL
%admin  ALL=(ALL) ALL

# Uncomment to allow people in group wheel to run all commands
# %wheel    ALL=(ALL) ALL

# Same thing without a password
# %wheel    ALL=(ALL) NOPASSWD: ALL

# Samples
# %users  ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
# %users  localhost=/sbin/shutdown -h now
ALL ALL=(ALL)                   NOPASSWD:/opt/dplat/bin/Revision/CMUpdatePackage/Installer.app/Contents/MacOS/I  nstaller
ALL ALL=(ALL)     NOPASSWD:/opt/dplat/bin/UpdatePackageInstaller.app/Contents/MacOS/UpdatePackage    Installer

Jika Anda bukan seorang admin, Anda dapat mem-boot sistem ke mode single-user (ini dapat dilakukan dengan mematikan perangkat dan menahan perintah pada saat startup) dan menjalankan:

mount -uw /

dan Anda akan berada di terminal dengan hak akses root, dan Anda akan dapat menjalankan perintah di atas untuk mengatur /etc/sudoers

John Militer
sumber
3

Saya membuat file / tmp / sudoers dengan konten dalam jawaban John Militer dan menjalankan variasi perintah tmm1.

osascript -e 'do shell script "cat /tmp/sudoers > /etc/sudoers; chown root:wheel /etc/sudoers" with administrator privileges'

Bagus!!!

noelmcloughlin
sumber
2

Jawaban di atas mencakup konten default file, cara memindahkannya ke tempatnya dengan Finder dan mengubah izinnya. Namun, sudo akan mengeluh kecuali pemilik file sudoers adalah root. Satu-satunya cara untuk mengubah pemilik tanpa sudo adalah melalui perintah ini:

osascript -e 'do shell script "chown root:wheel /etc/sudoers" with administrator privileges'

tmm1
sumber
1
Ini muncul ke paling menjawab "bagaimana Anda mengaturnya ke mode 0440" bagian, yang telah sudah pernah dibahas, tapi tidak membahas aspek pemulihan. Karena OP tidak memiliki file / etc / sudoers untuk memulai, bagaimana hal ini membantu mereka?
Jeff Schaller
Anda dapat membuat file dengan editor apa pun dan memindahkannya ke tempatnya dengan Finder. Bagian yang sulit adalah mengubah pemilik menjadi root, yang tidak mungkin dilakukan dengan metode lain.
tmm1