3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援→開発戻り浦島太郎状態の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。

(Linux)sudoを使って他のユーザでtomcatの起動停止ができるようにする

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

参考:

sudo による管理者権限の付与

UNIXの部屋 コマンド検索:sudo (*BSD/Linux)