MENU

管理者権限での実行を許可されていないと拒否されたときの確認と対処

コマンドを実行しようとしたら「このユーザーは sudoers ファイルに登録されていません。このインシデントは報告されます。」というメッセージで拒否されることがあります。このような拒否が起きた場合、主な原因はユーザーに sudo を使う権限が付与されていないことです。この記事では、拒否されたときに原因を特定する確認手順と、権限を付与する方法を整理します。

目次

エラーメッセージで原因の見当をつける

拒否時に表示されるメッセージは大きく2パターンに分かれます。どちらのメッセージかによって、次に確認すべき箇所が変わります。

  • 「user is not in the sudoers file」:そのユーザーが sudoers にまったく登録されていない状態です。グループへの追加か sudoers への登録が必要です。
  • 「Sorry, user XXX is not allowed to execute …」:sudoers には登録されているものの、対象コマンドの実行が許可されていない状態です。既存の sudoers 設定を見直す必要があります。

どちらのパターンかを把握してから対処することで、必要以上の権限を付けずに済みます。

ユーザーの所属グループを確認する

最初に対象ユーザーがどのグループに属しているかを確認します。Debian 系(Ubuntu など)では sudo グループ、RHEL 系(Rocky Linux・AlmaLinux・CentOS など)では wheel グループに所属していれば、デフォルト設定で sudo が使えます。

id username

出力に sudo や wheel が含まれているかを確認します。次のような出力であれば、対象グループへの所属がない状態です。

uid=1001(username) gid=1001(username) groups=1001(username)

グループが含まれているにもかかわらず拒否される場合は、次の手順で sudoers の設定を確認します。

sudo の実行権限を確認する

root または sudo 権限を持つユーザーで、対象ユーザーに許可されている sudo コマンドの一覧を確認できます。

sudo -l -U username

「User username may run the following commands on this host:」と表示されれば、その後に許可されたコマンドが続きます。「User username is not allowed to run sudo on this host.」と表示された場合は、sudoers への登録が必要な状態です。

自分自身の権限を確認する場合は -U オプションなしで実行できます。

sudo -l

sudo グループへ追加して権限を付与する

すべてのコマンドを sudo で実行できるようにするには、対象のグループに追加します。操作は root または既存の sudo 権限を持つユーザーで行います。

Debian 系(Ubuntu など)の場合:

sudo usermod -aG sudo username

RHEL 系(Rocky Linux・AlmaLinux・CentOS など)の場合:

sudo usermod -aG wheel username

グループへの追加後、対象ユーザーは一度ログアウト・ログインし直す必要があります。再ログイン後、次のコマンドでグループが反映されているか確認できます。

id username

出力に (sudo) または (wheel) が含まれていれば、設定が反映されています。

特定コマンドだけ許可したい場合は sudoers を直接編集する

すべてのコマンドを許可したくない場合や、特定の操作だけ許可したい場合は visudo コマンドで sudoers の設定を編集します。visudo は保存時に構文チェックを行うため、直接 /etc/sudoers を編集するよりも安全です。

カスタム設定は /etc/sudoers.d/ 以下に個別ファイルとして置くと、OS アップデートで /etc/sudoers が更新されても設定が残ります。

sudo visudo -f /etc/sudoers.d/username

ファイルに次の形式で許可するコマンドを記述します(想定例)。

# username に systemctl コマンドだけ許可する想定例
username ALL=(ALL) /usr/bin/systemctl

ファイルのパーミッションは 440 に設定します。

sudo chmod 440 /etc/sudoers.d/username

設定後、sudo -l -U username で意図した通りに許可されているかを確認できます。

よくあるつまずきと対処

グループに追加したのにまだ拒否される
usermod -aG の後にログアウト・ログインしていないと、グループ変更が現在のセッションに反映されません。newgrp sudo で現在のセッションにグループを反映させる方法もありますが、確実に反映させるにはログアウト・ログインし直すのが確実です。

visudo の編集中に構文エラーになる
visudo は保存時に構文チェックを行います。「parse error」と表示された場合は編集内容に誤りがあるため、そのまま保存せずに再編集します。誤った状態で強制保存すると sudo が使えなくなることがあるため、チェックで引っかかった場合は必ず修正してから保存します。

「This incident will be reported」と表示される
このメッセージは、sudo を試みたが権限がなかったことがシステムログに記録されることを意味します。即座に何かが起きるわけではありませんが、繰り返し発生している場合はシステム管理者への確認を検討します。journalctl -t sudo で sudo 関連のログを確認できます。

-l オプションで他ユーザーの権限を確認できない
sudo -l -U username は root か sudo 権限を持つユーザーでないと他ユーザーの情報を参照できません。一般ユーザーが自分の権限を確認する場合は sudo -l(ユーザー名なし)を使います。

「コマンドは打てる。次は”現場で通用する型”を最短で身につけたい」——そんなあなたへ。

ネットの断片的なTipsをコピペするだけでは、体系的な運用スキルはなかなか積み上がりません。リナックスマスター.JPの無料メルマガ「リナマガ」では、現場で実際に使うLinuxサーバー運用の考え方を、順を追って実務目線でお届けしています。いま登録された方には、安全なサーバー構築の「型」をまとめた『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼント中です。

>> 図解60P『Linux入門マニュアル』を無料で受け取る
(メルマガ登録は10秒・いつでも解除OK)

※ 「独学の時間がもったいない」「プロから現場の技術を最短で学びたい」という本気の方には、2日で実務レベルが身につく初心者向けハンズオンセミナーもご用意しています。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次