シェル

sudoでroot権限のスクリプトを実行する

Linux において、root にしか実行権限のないシェルスクリプトを一般ユーザーで実行したい場合、sudo コマンドを使って実行を許可できます。

sudo コマンドは、セキュリティに大きく絡むコマンドなので設定ファイルの理解が重要となってきます。

今回は sudo について紹介したいと思います。

visudoで各ユーザの権限設定

設定ファイルの場所は /etc/sudoers にあることが多いですが、ディストリビューションによっては違うかもしれません。

また、実際に /etc/sudoers を vi などで編集してもいいのですが、ファイルのシンタックスチェック(syntax)や編集時のロックの管理をしてくれる専用の visudo というコマンドが用意されています。

参考までに、users グループに /root/test.sh の実行権限を与える設定を作ってみます。

/root/test.sh のオーナーとグループは root で、パーミッションは 744(-rwxr–r–)と仮定します。

visudo を実行して一番下の行に定義します。

設定内容の説明

設定行の 1 番目が対象のグループ(ユーザー)、2 番目のイコールの左側が許可する範囲(localhostだとそのサーバのみ)、2 番目のイコールの右側が実行を許可するコマンドです。
(NOPASSWD: を指定するとパスワードなしで実行できます)

visudo で編集して保存した後、/etc/sudoers を見ると、ちゃんとファイルの中身が編集されています。

また、users グループのユーザーでスクリプトの実行ができるようになっています。

全部のコマンドに許可を与える場合は、下記のようにします。
(オススメしませんが)