web-dev-qa-db-ja.com

ユーザーが特定のプログラムを実行できないようにする

ユーザーがLinuxコンピューターで特定のプログラムを実行できないようにすることは可能ですか?ホワイトリスト方式はありますか?ブラックリスト?

5
Ivan

簡単な解決策は、システムバイナリの実行権限を削除することです。ユーザーが書き込みアクセス権のあるディレクトリからコンパイルしたり実行したりできないようにする場合は、別のパーティションを作成し、noexecオプションを使用してそれらのファイルシステムをマウントできます。

manマウント(noexecオプション)

マウントされたファイルシステムでバイナリを直接実行しないでください。 (最近まで、/ lib/ld * .so/mnt/binaryのようなコマンドを使用してバイナリを実行することが可能でした。このトリックはLinux2.4.25/2.6.0以降失敗します。)

これを実現する別の方法では、 AppArmor または SELinux のようなものを使用する必要があると思います。

8
Zoredache

これに対する答えは、ブラックリストまたはホワイトリストのどちらのソリューションが必要かによって異なります。

ホワイトリストは実際にはかなり簡単です。 Ubuntuや他の多くのディストリビューションが使用しているのと同じアプローチを使用してください。特定のプログラムまたはプログラムのグループのグループを作成し、実行可能ファイルのグループをそれに設定してから、ユーザーがアクセスできるようにする場合は、そのグループにユーザーを追加します。これは、Sudo、プリンター、およびその他のホスト全体へのアクセスがUbuntu(およびその他のディストリビューション)で行われる方法です。

ブラックリストは実際には難しいですが、それはそれほど悪いことではありません。ブラックリストは本質的に安全性が低いと思います。実際、私はそれを処理しない方法が疑似ホワイトリストのようなものだとは本当に考えられません。つまり、全員が関連するグループのメンバーであり、不要なものを削除するだけです。

3
cletus

グループを使用し、プログラムの実行を拒否します。それともそれ以上のものをお探しですか?

0
squillman

おそらく、標準の* nix権限とグループと一緒に何かをハックすることができます。

ただし、それ以上のものが必要な場合は、POSIXACLをグーグルで検索することをお勧めします。ほとんどの(すべて?)主要なLinuxファイルシステムはそれらをサポートしており、多くの追加の制御と粒度を提供します。

0

シェルへのアクセスを制限したい場合は、rbashをご覧ください。これは、ユーザーにさまざまな制限を提供します。 PAMのlimits.conf(Ubuntuでは/etc/securit/limits.conf)もご覧ください。 3番目のオプションは、ユーザーがアクセスできるバイナリとライブラリを正確に決定する、ユーザー用のjail/chroot環境を作成することです。

他の人も、これを達成するためにパーミッション、noexec、ACLを使用することを指摘しています。本当にあなたのニーズに依存します、どの解決策が最良であるか。

0
Andrioid

おそらくそうではありません。それは「特定のプログラム」が何を意味するかによります。ユーザーが便利なインタラクティブシェルを持っている場合、ユーザーは必要なほとんどすべてのソフトウェアをインストールできます。ただし、インストール済みのソフトウェアの特定のコピーを実行できないようにする場合は、通常のファイル権限で問題なく機能します。たとえば、グループ「xmmsblacklist」、chmod 705/usr/bin/xmms、chgrp xmmsblacklist/usr/bin/xmmsを作成し、そのグループにユーザーを追加します。

0
carlito