🐧 Linux 総合学習プラットフォーム
中級 ・ sudo / 権限 / セキュリティ

特定コマンドだけsudoを許可する安全な設計

運用メンバーに「nginxの再読み込みだけ」root権限で実行させたい。全権sudoは渡さず、必要最小限だけを許可したい。

手順

sudo visudo -f /etc/sudoers.d/ops-nginx本体のsudoersを直接いじらず、sudoers.d配下に用途別ファイルを作る。visudo経由なら保存時に文法チェックが入り、壊れた設定で全員sudo不能になる事故を防げる。
Cmnd_Alias NGINX_OPS = /usr/bin/systemctl reload nginx, /usr/sbin/nginx -t許可するコマンドを絶対パス・引数込みでエイリアス定義する(ファイル内に記述)。パスを曖昧にすると同名の偽コマンドで昇格される。
%opsteam ALL=(root) NOPASSWD: NGINX_OPSグループopsteamにエイリアスのコマンド群だけを許可する行(ファイル内に記述)。NOPASSWDは自動化で必要な場合のみ、この最小範囲に限定して付ける。
sudo visudo -c全sudoers設定の文法を最終チェックする。okが出てから次へ進む。
sudo -l -U sato対象ユーザに実際に何が許可されたかを一覧で検証する。設計と一致しているかを必ず目視する。
sudo -u sato sudo systemctl reload nginx許可したコマンドが通り、それ以外(例: systemctl stop nginx)が拒否されることを両方向で試験する。
注意エディタ・シェル・less・vimなど「中から別コマンドを起動できる」ものを許可すると、そこからroot全権に化ける(シェル脱出)。許可リストには単機能のコマンドだけを、引数まで固定して載せること。

▶ 学習アプリで実務レシピを使う