rbash - 特定のコマンドを受け入れてオートコンプリートを変更する方法は?

rbash - 特定のコマンドを受け入れてオートコンプリートを変更する方法は?

特定のユーザーに限定されたシェルを提供する必要があります。

これは次のように達成されます。

sudo ln -s /bin/bash /bin/rbash
sudo useradd test1 -s /bin/rbash

新しいユーザーは大丈夫です。デフォルトでは制限されたシェルに入りますが、cd許可されていない場合は迷惑で、オートコンプリートは機能しません。たとえば、次のようになります。

test1@hostone [ ~ ]$ cd /
-rbash: cd: restricted
test1@hostone [ ~ ]$ sudo cd /con<TAB pressed here>-rbash: /dev/null: restricted: cannot redirect output
bash: _upvars: `-a3': invalid number specifier
-rbash: /dev/null: restricted: cannot redirect output
bash: _upvars: `-a0': invalid number specifier
^C
test1@hostone [ ~ ]$ sudo cd /config
sudo: cd: command not found
test1@hostone [ ~ ]$ docker logs ag<TAB pressed here>-rbash: /dev/null: restricted: cannot redirect output
-rbash: /dev/null: restricted: cannot redirect output
bash: _upvars: `-a3': invalid number specifier
-rbash: /dev/null: restricted: cannot redirect output
bash: _upvars: `-a0': invalid number specifier
^C
test1@hostone [ ~ ]$ 

たとえば、別のコマンドを許可する方法は何ですかcd?オートコンプリートをどのように修正する必要がありますか?

オペレーティングシステムがPhoton OSかどうか疑問に思ったら。

ベストアンサー1

bashまず、バージョン5.0.3は現在、rbashまだ安全ではありません。実行中または実行中にCtrl / Cを無効にしません。つまり、.profileデフォルトが適切に制限される.bash_profile前にシェルプロンプトに到達する可能性が非常に高いことを意味します。$PATHこの時点で、実行が簡単でクリーンなシェルを得ることができますdashbash

このcdコマンドは意図的に拒否されました。詳細については、読んでrbash(参照してman bash検索)、次の拒否されたタスクのリストが短いリストに含まれています。rbash

  • ディレクトリの変更cd
  • SHELLPATHENVまたは値を設定または設定解除します。BASH_ENV
  • 「/」を含むコマンド名を指定します。
  • >、、、、およびリダイレクト演算子を使用した>|出力リダイレクト<>>&&>>>
  • 制限モードをオフにするには、set + rまたはset + o strictを使用してください。

残念ながら、オートコンプリートはユーザーのコンテキストで実行され、特定のコマンドの出力を/dev/null

他のシェル(例:(rshsh)は実行中にロックを正しく実装し、.profileCtrl / Cは一時的に無効になりますが、Ctrl / Cの制限は依然としてcd存在します。

あなたはcd仕事が必要だと言います。この場合、制限されたシェルは使用できません。もちろん、要件に応じてchroot環境を使用する方が良いかもしれません。あるいは、必要なタスクを実行するスクリプトで十分です。アクセス可能なディレクトリに配置できる場合、$PATHユーザーはスクリプトを直接使用できます。

おすすめ記事