Linuxのホームディレクトリでファイルの実行を無効にする方法はありますか?私の目標は、悪意のあるスクリプトなどからシステムを保護することです。もちろん、chmodを使用して実行ビットとそのサブディレクトリの両方を削除することもできますが、そのまま/home/user
変更するのは簡単です。だから、でのみ実行を許可し、他のディレクトリでは実行を許可しないと思いました。私のシステムはDebian 8です。user
/home/user
bin
/usr/bin
usr/sbin
答え1
/home
別のパーティションの場合は、オプションを使用してマウントできますnoexec
。これにより、「悪意のある」スクリプトだけでなく、ユーザーが作成したすべてのスクリプトも無効になり、ユーザーのUNIXシステム機能のほとんどが中断(または試行)されます。 UNIXユーザーの場合、タスクを完了するためのスクリプトを書くのは非常に一般的なことです。
bash myscript.sh
それでもスクリプトを書いたり、背中を使ってperl myscript.pl
実行したりすることはできません。ユーザーに最小限の信頼性がない場合は、ユーザーにシェルを提供しないか、または
/bin/rbash
。/bin/bash
答え2
これを行う1つの方法は、ユーザーに制限されたシェルを設定することです。たとえば、次のようにします。lshell
。また、見ることができます限られた殻。
デフォルトでは、ログインシェルをに設定してから/usr/bin/lshell
各bash
ユーザーごとに設定して、/etc/lshell.conf
特定のタスクのみを実行できるようにすることができます。
ただし、これにより、拡張構成なしでユーザーが使用できるほとんどのプログラムが中断される可能性があります。また、一部のプログラムが制限されたシェルを削除するのに役立つカスタムコマンドを実行できるようにすることもできます。
したがって、システムに正しい権限が設定されている場合(sudo
アクセスなしでpolkit
許可されている項目も確認)、システムの残りの部分に影響を与えずに標準のログインシェルを使用できる必要があります。
信頼できないユーザーがシステムにアクセスできることを知るもう1つの方法は、毎日システム全体のイメージを再作成することです。しかし、ほとんどの状況ではそれほど実用的ではありません。