私は自分のフォルダへのシェルアクセスが非常に制限されているGoogle Drive / Dropboxなどの内部ファイル共有システムを開発しています。ユーザーはコマンドを使用してmv
ssh
ls
cd
自分のフォルダにアクセスしてナビゲートできる必要があり、一部のユーザーは自分のプログラムを実行してコンパイルできる必要がありますgcc
(ただし、自分がコンパイルしたプログラムを実行することはできません)。唯一の問題は、人々がシステムファイルを移動したり、システム設定/変数を変更したくないことです。
まず、コンテナ/ BSD Jailを使用することが解決策になる可能性があると思いましたが、システムのユーザーが300人を超える可能性があることを考慮すると、不必要な複雑さとオーバーヘッドが追加されます。
オープンワイルドインターネットではどのようなソリューションを使用できますか?ありがとうございます!
ベストアンサー1
まず、この空間で何をしても、ユーザーはあなたがすることを避けるための創造的な方法を見つけるでしょう。
cd
Bashには、ユーザーがパスにすでに存在するコマンドのみを使用して使用できないように制限する「制限付きシェル」の概念があります。 「許可された」コマンドセットへのシンボリックリンクを含むディレクトリを作成し、そのディレクトリを指すようにユーザーパスを設定できます。
https://www.gnu.org/software/bash/manual/html_node/The-Restricted-Shell.html
$ PATH=/tmp/ex rbash
$ ls
src
$ cd /
rbash: cd: restricted
$ export PATH=/usr/bin:$PATH
rbash: PATH: readonly variable
$
ただし、任意のコマンドを実行できるパスにコマンドを入れても役に立ちません。
$ rbash
$ cd /tmp
rbash: cd: restricted
$ vim
:!/bin/bash
$ cd /tmp
$
Bash 制限されたシェルに関するドキュメントでも、次のように言います。
最新のシステムは、刑務所、ゾーン、コンテナなどの限られた環境を実装するより安全な方法を提供します。