sudoでroot権限のスクリプトを実行する
※実経験の記憶を頼りに自宅の PC 環境(VMWareなど)で再現している内容もあるのでご注意下さい
2007-12-26
Linux において、root にしか実行権限のないシェルスクリプトを一般ユーザーで実行したい場合、sudo コマンドを使って実行を許可できます。sudo コマンドは、セキュリティに大きく絡むコマンドなので設定ファイルの理解が重要となってきます。
設定ファイルの場所は /etc/sudoers にあることが多いですが、ディストリビューションによっては違うかもしれません。また、実際に /etc/sudoers を vi などで編集してもいいのですが、ファイルのシンタックスチェック(syntax)や編集時のロックの管理をしてくれる専用の visudo というコマンドが用意されています。
参考までに、users グループに /root/test.sh の実行権限を与える設定を作ってみます。/root/test.sh のオーナーとグループは root で、パーミッションは 744(-rwxr--r--)と仮定します。visudo を実行して一番下の行に定義します。
$ visudo # Samples # %users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom # %users localhost=/sbin/shutdown -h now %users ALL=NOPASSWD:/root/test.sh
設定行の 1 番目が対象のグループ(ユーザー)、2 番目のイコールの左側が許可する範囲(localhostだとそのサーバのみ)、2 番目のイコールの右側が実行を許可するコマンドです。
(NOPASSWD: を指定するとパスワードなしで実行できます)
visudo で編集して保存した後、/etc/sudoers を見ると、ちゃんとファイルの中身が編集されています。また、users グループのユーザーでスクリプトの実行ができるようになっています。全部のコマンドに許可を与える場合は、下記のようにします。
(オススメしませんが)
# Samples # %users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom # %users localhost=/sbin/shutdown -h now %users ALL=NOPASSWD:ALL
関連記事
上記の記事に関連する記事(最新の10件)です。


