ターミナルでユーザーがコマンドを入力したらすぐに、一連のコマンドをブロックします。
どうやってやるの?
chmod 700
。
ターミナルでユーザーがコマンドを入力したらすぐに、一連のコマンドをブロックします。
どうやってやるの?
chmod 700
。
回答:
特定のコマンドセットを単にブロックすることは危険であり、おそらくあなたが望むものではありません。誰かがシェルにアクセスできる場合、いくつかの基本的なコマンドを使用するだけで、何かを実行する方法を見つけることができます。実際に何かを「防止」していると判断するには、許可されているすべてのコマンドを慎重に監査し、ユーザーが望まない操作を許可していないことを確認する必要があります。それはかなり高い注文です。
あなたは彼らにへのアクセスを許可している場合たとえば、echo
、chmod
およびbase64
、その後、彼らは、システム上のバイナリを取ることができ、base64
それは、と自分の殻に貼り付けecho 'long_base64_data' | base64 -d > bin.bin
た後とchmod +x bin.bin
、その後./bin.bin
-そしてそれは何でも行うことができますglibc
し、システム上のシステムコールが可能に。
同様に、あれば任意のインタプリタが許可され、それはperl
、python
、ruby
、あるいは(間違いなく)bash
、彼らは最終的に、任意のコードが実行されるダウン得るためにそれを使用することができるはず-再び、カーネルのシステムコールは許可何かを。
誰かがシステム上で完全なシェルアクセスを持っていると信用していない場合は、シェルアクセスを許可しないでください。それ以外の場合は、ユーザーが敵対的であると想定し、ユーザーが悪意のある操作を試みても安全であることが知られている既知の調査済みのアクションの非常に小さなサブセットに制限するカスタムネットワークプロトコルを考え出す必要があります。
素朴にあなたが尋ねた実際の質問に答えるために:あなたがchmod o-x /bin/rm
実際にユーザーがファイルを削除するのを止めるだろうと思うなら、あなたは明らかにすることができます(その場合、rm
コマンドの所有者だけがそれを実行することができます、それは通常ですroot
) ; しかし、それがあなたがするすべてであるならば、彼らは使うことができますbusybox
またはファイルを削除するための前述のスクリプト言語のいずれか。または、実行可能コードをファイルにエコーし、実行可能にし、実行することができます。そして、表面上は無害に見えて明示的に任意のコマンドを許可しないコマンドへのシェルコマンドインジェクションなど、誰かがシェルを使用して任意のコードを実行するためのさらにトリッキーな方法を省略していると確信しています。実際、Ubuntuにインストールされ、「任意のシェルコードインジェクションを許可するため、これを実行するためのより良い方法を考える必要があります」などのコメントを付けたコマンドを頭の中で考えることができます。まだ修正されていません。
シェルは、ほとんどの場合、オペレーターが信頼されていると想定しています。通常のユーザーシェル(非ルート)でさえ、大きな信頼を前提としています。ユーザーがコマンドを実行できないようにする理由が、コマンドを完全に信頼していないことに関連している場合、シェルアクセスをまったく許可せずに、あなたがしようとしていることを行う別の方法を見つけます。
ちなみに、ユーザーシェルの権限をやや減らすことの目的は、(信頼できると想定される)ユーザーを自分自身から保護し、悪意のあるプログラムからユーザーを保護することです。ユーザーを自分自身から保護し、悪意のあるプログラムからユーザーを保護することは、信頼できないユーザーからオペレーティングシステムを保護することとはまったく異なる問題です。シェルは、その性質上、あまりうまくできません。
言い換えれば、シェルコマンドの「セット」の実行を防ぎ、誰かにシェルアクセスを許可することは、浜辺の砂にいくつかのポールを置くことによって津波を止めようとするようなものです。水が行くことができる他の場所はまだ何百万もあるので、たとえ水があなたのすべてのポールに流れ込んだとしても、それは少なくともビーチに来るのを妨げません(そしてそれはあなたのポールを引き裂いて持ってくるでしょう)とにかく津波と一緒に)。何マイルにもわたる真の水ダムを建設する必要があります。幸いなことに、デジタルの世界では、かなり良いダムを構築することは、実際の生活で行うよりもはるかに簡単です。と呼ばれるものとan HTTPS server
、このタスクを全体的に非常によく達成するサーバー側プログラミング言語がいくつかあります。確かにシェルよりもはるかに優れています。