CentOS5.3 に Tomcat6 を入れてみたでLinux(CentOS)でTomcatを入れました。
この時 root ユーザでインストールしたので、起動スクリプトを使った起動停止処理が root でしかできません。
これを任意の他のユーザでも起動停止処理をしたいというのが今回の要件です。
この場合 sudo コマンドを使ってスクリプトを起動します。sudo により特権ユーザでの処理が可能になります。
sudo を使うとパスワードを要求されますが、これは自身のパスワードを入れるようです。
(例えば user01 が sodo を使ったなら user01 のパスワードを入れます。)
ただ、sudo コマンドはデフォルトでは一般ユーザは使用できないようになっているようです。
例えばパーミッションが 700 (所有者root)になっているスクリプトを一般ユーザ user01 で sudo で実行しようとすると下記のようになります。
[user01@localhost ~]$ sudo /a.sh
パスワード:(user01のパスワードを入れる)
Sorry, user devlop is not allowed to execute '/a.sh' as root on localhost.
なので任意のユーザに対してsudoで許可するコマンドを設定してやらないといけません。
設定は visudo コマンドで行います。(viでやると構文チェックが行われないのでvisudoじゃないとダメみたいです。)
visudo をすると設定ファイルの編集画面が出てくるので、そこで設定を追加するようですね。
書式は下記のような感じだそうです。
ユーザ ホスト = (権限) コマンド
例えばuser01に対して、全端末で全コマンドにroot権限を与えるには下記のように書けばいいようです。
user01 ALL = (ALL) ALL
パスワードを入れずにsudoを実行できるようにするにはコマンドの前に NOPASSWD: を入れるといいようです。
user01 ALL = (ALL) NOPASSWD:ALL
さて、今回はtomcatの起動スクリプトをuser01に実行させたいのでこう書きました。
user01 ALL =(root) NOPASSWD:/etc/rc.d/init.d/tomcat
グループに対して許可を与える場合は、%グループ名 で指定すればいいようです。
hogegグループに全端末全コマンドでroot権限を与えるためには下記のようにします。
%hogeg ALL = (ALL) ALL
参考: