RHEL5 インストールの Apache サーバーで実行される php スクリプトがあります。このスクリプトは、「rpm -q --info packagename」で exec を実行します。
問題は、パーミッシブ モードの selinux では適切に動作しますが、完全に有効にすると動作しません。したがって、それはselinuxの問題だと思います。
見つけた拒否されたエントリに基づいてルールを作成するために audit2allow から始めましたが、監査ログには拒否されなくなりましたが、selinux が有効になっているとまだ実行されません。
私の世界では、システムの実行が許可されるかどうかをシステムに問い合わせているようで、selinux が「これを試したら停止します」と言うと、したがって、システムは exec を実行しません。もしそうなら、私は新しいselinuxルールを作成できるという「拒否」を受け取ると思います。selinux が許可されているため、拒否されることはありませんが、動作します..
そのため、これを難しい方法で処理し、selinux のカスタム ルールを作成する必要があるようです。言ったし、私はそれを作った:
module php_rpm 1.0;
require {
type httpd_t;
type bin_t;
type rpm_exec_t;
type rpm_var_lib_t;
class file { execute execute_no_trans getattr read execmod };
class dir { getattr search };
}
#============= httpd_t ==============
allow httpd_t rpm_exec_t:file { execute execute_no_trans getattr read execmod };
allow httpd_t rpm_var_lib_t:dir { getattr search };
残念ながら、これは私の問題には何もしませんでしたが、おそらく私のselinuxルールを少し台無しにしました:P
selinux を有効にして php から rpm を実行しようとした人はいますか?