LoginSignup
24
25

More than 5 years have passed since last update.

限られた操作だけに使うアカウントを作成する

Posted at

Linux上で、限られた操作だけができるようなアカウントを作る機会があったので、そのあたりについてまとめてみました。

「ログインできないアカウント」では足りない場面

Linuxマシンには、数多くのアカウントが作られることがあります。で、その中には「メールアカウントとしてしか使わない」「FTP専用のアカウント」「デーモンの権限切り分け用」などというように、シェルログインが全く不要なアカウントも存在します。ログインしなくていいのなら、/bin/false/sbin/nologinのようなダミーシェルを与えておけば、ログイン自体が不能となります1

一方で、「それでは済まない」という用事ももちろんあります。サーバに自動的なオペレーションを走らせるような場面で、他のサーバへ特定のコマンドを実行させたい、というような場合です。このような場合、機械処理可能な形でログイン情報を置いておかざるを得ないので、何も制約をかけなければやりたい放題になってしまいます。

1コマンドなら楽勝

サーバへSSHログインする際にauthorized_keysを設定しますが、このファイルには鍵だけでなく各種のオプションを設定できます。そこで、command="…"のように指定すれば、特定のコマンドを実行して、それが終わればすぐ接続断という専用の鍵ができます。

複数実行したい場合

とはいえ、リモートサーバでいくつかのオペレーションをしたい場合に、その1つ1つに鍵を作るのも手間かもしれません。そんなときに使えそうな手段として、rbashというシェルがあります。

rbashとは

rbashとは、bashの特殊なモードの1つです。rbashという名前で起動する、あるいはbash -rとするとこのモードに入ります。

詳しくはmanを見てもらうとわかりやすいのですが、できなくなることとして、

  • cdでのディレクトリ変更
  • PATHの変更
  • /のあるコマンドの実行、source
  • リダイレクト

があります。大雑把に言えば、元からPATHに入っているコマンドと、bashの組み込みコマンドしか実行できなくなります。

ただし、これはあくまでシェル単位での設定なので、(シェルスクリプトを含め)シェルから実行した別コマンドには制約が適用されなくなります2。つまり、シェルそのものを筆頭に、「任意のプログラムを実行できるプログラム」をこの環境から呼び出せるなら、まったく意味がなくなってしまいます。

実行できるものの制限

まずまっ先に、.bash_profilePATHを制限しましょう。~/binでも掘って、そこだけを指定しておくのがいいと思います。そして、PATHにしたディレクトリやホームディレクトリ、そして.bash_profile.bashrcからは、当該アカウントの書き込み権を奪っておきます。

bash内部の機能について

これだけやっても、bash自体に内蔵されたコマンドは実行できるままです。特に、killなんてのもあったりします。ということで、enable -n コマンドとして組み込みコマンドを無効化しておきましょう(なお、enable自体を無効にしたい場合は最後に実行する必要がありますが、rbashの環境下ではenableで組み込みコマンドを再有効化することはもともとできません)。

あと、スラッシュ付きのコマンドの実行はできませんが、シェルへの入力はできてしまい、入力補助でファイルリストが出ます.inputrcset disable-completion onとして止めておきましょう。

最後に

セキュリティに完璧はありません。このrbashを使った方法も、あくまでシェルログインに伴うリスクを軽減させる方法の1つでしかありません。もっと厳格にしたければ、上のように鍵を分けるほうがより安全だと思います。

ポートフォワード専用シェルについて

「SSH接続でポートフォワードだけしたい」というのであれば、ssh -Nとすることで、シェル設定なしでも可能とのことです。

脚注


  1. この両者の違いについては、参考になるページがありますので、詳細は省略します。 

  2. もちろん、PATHはそのまま引き継がれるので、適宜調整する必要があります。 

24
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
25