特定のコマンドしか実行できないユーザーIDを作成するには
bashの機能を制限するにはで紹介した方法は、Linuxのことをあまり知らないユーザーには有効だが、実行できるコマンドが多いし、exitコマンドで制限モードを終了することもできる。そこで、特定のコマンドしか実行できない専用のユーザーIDを作成する方法を説明する。
基本的な考え方は、デフォルトのシェルを制限付きにして、一部のコマンドのみを実行可能な環境設定を行うのだ。まず、ユーザーIDを作成する。
# useradd foo ←fooという専用のユーザーIDを作成 |
次に、デフォルトのシェルを制限付きにする。bashをrbashという名前で起動すると、制限付きのシェルになるので、rbashというbashのリンクを作成する。
# ln -s /bin/bash /bin/rbash |
次に、rbashをデフォルトのシェルにするのだが、その前に/etc/shellsにrbashを登録しなければならない。テキストエディタで/etc/shellsを開いて、/bin/rbashを追加する。
(省略) |
これが終わったら、ユーザーfooでログインして、chshコマンドを実行する。
$ chsh |
これでシェルがrbash(制限付きのbash)になる。次に、再びrootでログインしてfooのホームディレクトリにある.bash_profileのユーザーとグループをrootに変更する。また、root以外が変更できないようにアクセス権を設定する。
# cd /home/foo |
最後に、PATHを特定のディレクトリに変更して、そのディレクトリにfooが実行可能なプログラムのリンクを作成する。ここでは、fooのホームディレクトリにPATHを設定して、dfコマンドだけを実行できるようにしてみる。
テキストエディタで.bash_profileを開いて、最下行に以下の記述を追加する。
export PATH=/home/foo |
そして、/home/fooにdfコマンドのリンクを作成する。
# ln -s /bin/df /home/foo/df |
以上で設定は終了だ。この場合、fooでログインすると、bashの組み込みコマンド(rbashで実行できないものを除く)とdf以外のコマンドは実行できなくなる。ほかのコマンドを実行可能にするには、上記の例のように特定のディレクトリにリンクを作成すればいい。
login: foo |