Apple Jamf Pro Mac MDM

○○ is not in the sudoers file. This incident will be reported. エラーの対処法ガイド

1. はじめに

Macを運用管理していると、ターミナル操作中に
○○ is not in the sudoers file. This incident will be reported.
というエラーに遭遇することがあります。

このエラーは、通常ユーザーがsudoコマンドを実行しようとしたときに表示されますが、単純な設定ミスだけでなく、システム側の不具合として発生するケースも少なくありません。

特に企業のIT管理者にとっては、複数台のMacを効率よく管理するうえで、こうしたエラーへの迅速な対応が求められます。

今回は、このエラーの原因と、Jamf Proなどの管理ツールを活用した効果的な解決方法について、わかりやすく解説していきます。

HedgeHogApple

今回の記事は、20分で読めるようにしています!Jamf Proを利用したFIX方法になるので、企業のIT管理者向けです。

2. どんな時に表示されるエラー?

このエラーは、sudo権限が付与されていないユーザーがsudoコマンドを実行しようとしたときに表示されます。
具体的には、以下のような場面です。

  • 管理者権限のないアカウントでターミナルからsudoを実行した
  • 初期設定時に作成された管理者アカウント以外で操作した
  • MDMツールによる設定ミスで管理者権限が正しく付与されていない

単純なユーザー権限設定の問題だけでなく、管理ツールの設定やシステム側の挙動が絡んでいることもあります。

3. エラーの原因

基本的には「sudoersファイル」に対象ユーザーが登録されていないことが原因ですが、少し深掘りしておきます。

  • 単純に管理者権限がない
  • sudoersファイルの設定ミス
  • MDMやスクリプトによるポリシー適用ミス
  • OSの仕様変更・バグによる影響(特にmacOSアップデート後に発生することも)
  • sudoersファイルは正常に見えるのになぜかエラーが出るケースもある
    たとえば、ターミナルからsudo cat /etc/sudoersしても設定は問題なさそうなのに、なぜかエラーが出続けることがあります。
    OS側で内部的にキャッシュや権限認証のフローが変わっている場合があり、見た目には問題なくても実行エラーが出ることがあるためです。
HedgeHogApple

sudo cat /etc/sudoersを実施してみると、大抵は以下が表示されます。

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

Macでは、sudoersファイルを使って「誰が何をできるか」を決めています。
上記の内容を簡単に言うと、

  • rootユーザーは、何でも・どこでも・誰としてでもコマンド実行OK
  • adminグループに入っているユーザーも、同じく何でもできる
    ※ログインユーザーが管理者になっていれば所属される

という意味です。

Macの場合、最初に作ったユーザーや「管理者」として設定したユーザーは、このadminグループに入っています。
だから普通にMacを使っていると、あまり意識せずにsudoコマンドが使えるんですね。

企業のIT管理者向けには、ここを理解しておくと、権限管理やトラブル対応がスムーズになります!

4. 直接sudoersファイルの編集はAppleは非推奨。sudoers.dを編集する必要がある

Macでは、/etc/sudoersファイルを直接編集するのはApple非推奨とされています。
代わりに、/etc/sudoers.d/ディレクトリ内に個別設定ファイルを追加する方法が推奨されています。
これにより、システムアップデート時にも影響を受けにくくなります。

例えば、以下のようなスクリプトを用意することでMacにログインしているユーザーにsudo権限を付与できます。

スクリプト

#!/usr/bin/bash

logged_in_user=$(stat -f%Su /dev/console)

echo "Logged-in user: $logged_in_user"

echo "Before creating /etc/sudoers.d/custom_sudoers…"
if [ -f /etc/sudoers.d/custom_sudoers ]; then
echo "/etc/sudoers.d/custom_sudoers already exists. No changes made."
/bin/ls -l /etc/sudoers.d/custom_sudoers
exit 0
fi

echo "${logged_in_user} ALL=(ALL) ALL" | tee /etc/sudoers.d/custom_sudoers

/bin/chmod 0440 /etc/sudoers.d/custom_sudoers
/usr/sbin/chown 0:0 /etc/sudoers.d/custom_sudoers

echo "After creating /etc/sudoers.d/custom_sudoers…"
/bin/ls -l /etc/sudoers.d/custom_sudoers

※このスクリプト自体はROOT権限で実行する必要があります。
ターミナルから単独で動かす場合はsudoを使用します。Jamf Pro経由の場合は、そのままコピペしてポリシー作成できます。

5. Jamf Proのポリシーを使ったFIX方法

Jamf Proを活用すれば、スクリプトをポリシーに組み込んで、複数台に一括配布・修正や、Self Serviceに表示させて個別で修正することが可能です。
Jamf Proにログイン後、以下の手順で設定できます。

  1. [コンピューター] → [設定] → [スクリプト]で新規スクリプト作成
  2. 上記で紹介したスクリプトをコピペ
  3. スクリプト名はわかりやすく「Fix sudo」などに設定
  4. Jamf Proのトップ画面に戻る
  5. [コンピューター] → [ポリシー]からポリシーを新規作成
  6. 左のメニューのスクリプトを選択
  7. 対象スクリプトを割り当て、配布対象のスコープ(スマートグループなど)を設定
  8. 実行トリガーを「on going」などに設定
HedgeHogApple

あくまで、一例として手順を紹介しましたが、細かい設定は、ご自身で環境に合わせて変えてみてね!
例えば実行トリガーやスコープ、ポリシーやスクリプトの名前、Self Serviceに表示させるかどうかなど!

おわりに

○○ is not in the sudoers file.エラーは、単純な権限不足だけでなく、色々な原因で発生することもあります。
正しい方法で/etc/sudoers.d/を編集し、Jamf ProなどのMDMツールを活用すれば、効率よく、安全に対応が可能です。
特にMacの運用管理をしている方は、「直接sudoersファイルを編集しない」を意識しながら対処していきましょう!

-Apple, Jamf Pro, Mac, MDM
-, , , , ,