Linux
Tips |
|
特定のコマンドしか実行できないユーザーIDを作成するには
北浦訓行
2002/10/31
|
bashの機能を制限するにはで紹介した方法は、Linuxのことをあまり知らないユーザーには有効だが、実行できるコマンドが多いし、exitコマンドで制限モードを終了することもできる。そこで、特定のコマンドしか実行できない専用のユーザーIDを作成する方法を説明する。
基本的な考え方は、デフォルトのシェルを制限付きにして、一部のコマンドのみを実行可能な環境設定を行うのだ。まず、ユーザーIDを作成する。
# useradd foo ←fooという専用のユーザーIDを作成
# passwd foo ←fooのパスワードを設定 |
次に、デフォルトのシェルを制限付きにする。bashをrbashという名前で起動すると、制限付きのシェルになるので、rbashというbashのリンクを作成する。
# ln -s /bin/bash /bin/rbash |
次に、rbashをデフォルトのシェルにするのだが、その前に/etc/shellsにrbashを登録しなければならない。テキストエディタで/etc/shellsを開いて、/bin/rbashを追加する。
(省略)
/bin/csh
/bin/ksh
/bin/zsh
/bin/rbash ←この行を追加 |
これが終わったら、ユーザーfooでログインして、chshコマンドを実行する。
$ chsh
foo のシェルを変更します。
Password: ←パスワードを入力
新しいシェル [/bin/bash]: /bin/rbash ←「/bin/rbash」を入力
シェルを変更しました。 |
これでシェルがrbash(制限付きのbash)になる。次に、再びrootでログインしてfooのホームディレクトリにある.bash_profileのユーザーとグループをrootに変更する。また、root以外が変更できないようにアクセス権を設定する。
# cd /home/foo
# chown root .bash_profile ←.bash_profileの所有者をrootに変更
# chgrp root .bash_profile ←.bash_profileのグループをrootに変更
# chmod 755 .bash_profile ←.bash_profileのアクセス権を変更
# ls -al .bash_profile
-rwxr-xr-x 1 root root 238 Oct 15 01:31 .bash_profile |
最後に、PATHを特定のディレクトリに変更して、そのディレクトリにfooが実行可能なプログラムのリンクを作成する。ここでは、fooのホームディレクトリにPATHを設定して、dfコマンドだけを実行できるようにしてみる。
テキストエディタで.bash_profileを開いて、最下行に以下の記述を追加する。
そして、/home/fooにdfコマンドのリンクを作成する。
# ln -s /bin/df /home/foo/df |
以上で設定は終了だ。この場合、fooでログインすると、bashの組み込みコマンド(rbashで実行できないものを除く)とdf以外のコマンドは実行できなくなる。ほかのコマンドを実行可能にするには、上記の例のように特定のディレクトリにリンクを作成すればいい。
login: foo
Password:
$ ls
bash: ls: command not found ←エラーになる
$ df ←dfコマンドを実行
ファイルシステム 1k-ブロック 使用中 空き 使用% マウント場所
/dev/hda2 7052496 4025168 2669080 61% / |
Linux Squareフォーラム Linux Tipsカテゴリ別インデックス |
Linux & OSS 記事ランキング
本日
月間