下記のフォーラムの通りの現象が起きた。
Terminalにて、sudoを実行し… - Apple コミュニティ
状況
$ 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
を右クリックし、「情報を見る」を選び、情報ウィンドウを開く - 「共有とアクセス権」の「🔒」ボタンをクリックしてロックを解除する
- 「+」ボタンで自分を追加し、アクセス権限を「読み/書き」に変更
これで、Finder 経由で読み書きできるのでテキストエディタなどで開いて見る
空でした。
解決策
テキストエディタで開いたファイルに下記のように書き加え、保存する。
%admin ALL = (ALL) ALL
これで、sudo が行えるようになったが、アクセス権限は変更したままだし、本来の /etc/sudoers
の内容と違う。
このままにするのは何かとトラブルの原因になるので、/etc/sudoers
専用の編集コマンド visudo
を使う。
Terminal を再び開いて
$ sudo /usr/sbin/visudo
他のmac(macOS Mojave 10.15.1)の/etc/sudoers
には下記のように記載があったので、そのままコピペする。
vi の使い方がわからない場合はテキストエディタでコピペしたあと、sudoers
を起動して、:q![Return]
と入力してもいいかも。
#
# 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
を使うとアクセス権限の修正も自動で行ってくれる。
念のためアクセス権限が戻っているか確認して、作業は終わり。