Mac OS Xでsudoersファイルを誤って削除してしまいました。それを回復する方法はありますか?


9

sudoersMac OS Xで誤ってファイルを削除してしまいました。それを回復する方法はありますか?
それを回復したら、モード0440にどのように設定しますか?

回答:


8

私があなたの問題を正しく理解している場合は、現在、sudoerがなく、sudoを実行しようとしていて、機能しません。この場合、sudoを機能させるには、次のようにします。

  1. ホームフォルダーにsudoersファイルを作成します。デフォルトのコンテンツはここにありますsudoers
  2. Finderで「/ etc」フォルダを開きます(「移動」->「フォルダへ移動…」)。
  3. Finderを使用して、sudoersファイルをホームフォルダから/ etcフォルダにコピーします。
  4. パスワードを要求するプロンプトが表示されます。
  5. 正しいパスワードを入力すれば完了です。

チェックするためにsudoは罰金を実行しているcd /etcsudo vim sudoers。vimエディターでsudoersファイルを表示できるはずです。/ etc内の読み取り/書き込み操作には、sudoコマンドが必要です。

sudoersがなくても、UIを介して/ etcで操作を実行できることは少し意外なことです。しかし、それは私のために働いた:)


1
コマンドラインでは不可能なことと同等のGUIが機能するのは実に奇妙です。AppleはGUIワークフローをコマンドラインよりも徹底的にテストしていると思います。よろしくお願いします。この投稿は私を救いました。
Sridhar Sarnobat 2016年

それがあなたを助けたことを知ってよかった。
タンメイ2016年

6

sudoコマンドを実行しようとし/etc/sudoersていて、適切な権限がないエラーが表示されていると思いますか?

以前にアカウントAdminステータスを付与したことがある場合は、GUIを使用して権限を修正できるはずです。Finderで「/ etc」フォルダを開き(「移動」->「フォルダに移動…」)、sudoersファイルのプロパティを開きます。カギをクリックします。グラントadminグループread/writesystemユーザーread-onlywheelグループread-only、およびeveryoneグループをno access。権限は今正しいはずです。

adminグループに参加しなかった場合は、OSXをシングルユーザーモードで再起動してコマンドを実行する必要がありますchmod 0440 /etc/sudoers


6

システム環境設定を使用してrootユーザーを有効にし、次を使用してrootユーザーとしてログインしている間に/ etc / sudoersを作成します。

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

注:この場合、コマンドはrootとして実行され、グループID /etcは0であるため、再作成後はデフォルトで正しいユーザーとグループが所有する必要がありますが、何らかの理由で所有されていない場合は、

chown root:wheel /etc/sudoers

作成したら、/etc/sudoersvisudoを使用してこのコードを挿入します。

# 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

管理者でない場合は、代わりにシステムをシングルユーザーモードで起動し(これは、デバイスの電源を切り、起動時にcommand + sを押し続けることで実行できます)、次のコマンドを実行します。

mount -uw /

root権限でターミナルに入り、上記のコマンドを実行してセットアップできます /etc/sudoers


3

John Militerの回答にコンテンツを含む/ tmp / sudoersファイルを作成し、tmm1コマンドのバリエーションを実行しました。

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

いいね!!!


2

上記の回答は、ファイルのデフォルトの内容、Finderを使用してファイルを適切な場所に移動し、権限を変更する方法をカバーしています。ただし、sudoersファイルの所有者がrootでない限り、sudoは文句を言うでしょう。sudoなしで所有者を変更する唯一の方法は、次のコマンドを使用することです。

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


1
一部、「あなたはモード0440に設定しない方法」最も答えにこの表示され 、既に取り組まが、されていない、回復様相に取り組みます。OPにはまず/ etc / sudoersファイルがないため、これはどのように役立ちますか?
Jeff Schaller

任意のエディターでファイルを作成し、Finderでファイルを所定の場所に移動できます。難しいのは、所有者をrootに変更することです。これは、他の方法では不可能です。
tmm1
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.