特定のユーザーに限定されたシェルを提供する必要があります。
これは次のように達成されます。
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
この時点で、実行が簡単でクリーンなシェルを得ることができますdash
。bash
このcd
コマンドは意図的に拒否されました。詳細については、読んでrbash
(参照してman bash
検索)、次の拒否されたタスクのリストが短いリストに含まれています。rbash
- ディレクトリの変更
cd
SHELL
PATH
、ENV
または値を設定または設定解除します。BASH_ENV
- 「/」を含むコマンド名を指定します。
>
、、、、およびリダイレクト演算子を使用した>|
出力リダイレクト<>
>&
&>
>>
- 制限モードをオフにするには、set + rまたはset + o strictを使用してください。
残念ながら、オートコンプリートはユーザーのコンテキストで実行され、特定のコマンドの出力を/dev/null
。
他のシェル(例:(rsh
)sh
)は実行中にロックを正しく実装し、.profile
Ctrl / Cは一時的に無効になりますが、Ctrl / Cの制限は依然としてcd
存在します。
あなたはcd
仕事が必要だと言います。この場合、制限されたシェルは使用できません。もちろん、要件に応じてchroot環境を使用する方が良いかもしれません。あるいは、必要なタスクを実行するスクリプトで十分です。アクセス可能なディレクトリに配置できる場合、$PATH
ユーザーはスクリプトを直接使用できます。