macOS で TimeMachine から復旧したら sudo が使えない時の対処法 ("XXX is not in the sudoers file. This incident will be reported.")

下記のフォーラムの通りの現象が起きた。

[Terminalにて、sudoを実行し… - Apple コミュニティ](https://discussionsjapan.apple.com/thread/10125576)

## 状況

```console
$ sudo ls
XXX is not in the sudoers file. This incident will be reported.
```
_※XXX = $USER_

もちろん該当のユーザーは管理者権限あり。

原因は TimeMachine から復旧する際、最初のセットアップウィザード中に TimeMachine 復旧に失敗し、一度適当なカウントを発行した後`移行アシスタント.app` を使って復旧し、アカウントを復旧元のデータで置き換えたためと思われる。

## 原因

`sudo` が出来ないということは Terminal からなにも行えないので、仕方がなく Finder を使って対応を行う。

`sudo` の許可は `/etc/sudoers` に書いてあるのでまず中身を確認するためにアクセス権限を与える。

* Finder で `/etc/sudoers` を右クリックし、「情報を見る」を選び、情報ウィンドウを開く
* 「共有とアクセス権」の「🔒」ボタンをクリックしてロックを解除する
* 「+」ボタンで自分を追加し、アクセス権限を「読み/書き」に変更

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2908/96e8209e-7db3-5167-b858-af18090c05c6.png)
これで、Finder 経由で読み書きできるのでテキストエディタなどで開いて見る
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2908/3567d791-cecf-0fb2-9b6a-180a69ee430e.png)
空でした。

## 解決策

テキストエディタで開いたファイルに下記のように書き加え、保存する。

```:/etc/sudoers
%admin ALL = (ALL) ALL
```

これで、sudo が行えるようになったが、アクセス権限は変更したままだし、本来の `/etc/sudoers` の内容と違う。

このままにするのは何かとトラブルの原因になるので、`/etc/sudoers` 専用の編集コマンド `visudo` を使う。

Terminal を再び開いて

```console
$ sudo /usr/sbin/visudo
```

他のmac(macOS Mojave 10.15.1)の`/etc/sudoers`には下記のように記載があったので、そのままコピペする。

_vi の使い方がわからない場合はテキストエディタでコピペしたあと、`sudoers`を起動して、`:q![Return]`と入力してもいいかも。_

```:/etc/sudoers
#
# Sample /etc/sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the sudoers man page for the details on how to write a sudoers file.

##
# Override built-in defaults
##
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"
Defaults	env_keep += "HOME MAIL"

Defaults	lecture_file = "/etc/sudo_lecture"

##
# User alias specification
##
# User_Alias	FULLTIMERS = millert, mikef, dowdy

##
# Runas alias specification
##
# Runas_Alias	OP = root, operator

##
# Host alias specification
##
# Host_Alias	CUNETS = 128.138.0.0/255.255.0.0
# Host_Alias	CSNETS = 128.138.243.0, 128.138.204.0/24, 128.138.242.0
# Host_Alias	SERVERS = master, mail, www, ns
# Host_Alias	CDROM = orion, perseus, hercules

##
# Cmnd alias specification
##
# Cmnd_Alias	PAGERS = /usr/bin/more, /usr/bin/pg, /usr/bin/less

##
# User specification
##

# root and users in group wheel can run anything on any machine as any user
root		ALL = (ALL) ALL
%admin		ALL = (ALL) ALL

## Read drop-in files from /private/etc/sudoers.d
## (the '#' here does not indicate a comment)
#includedir /private/etc/sudoers.d
```

`visudo` を使うとアクセス権限の修正も自動で行ってくれる。
念のためアクセス権限が戻っているか確認して、作業は終わり。

Finder で確認する場合は下の画像を参考にどうぞ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2908/60ae787d-91ac-768d-5b2c-410438692e14.png)