次のように このリンク Fedora 14からSELinuxを完全にオフにすることができますが、httpdデーモンに対してのみSELinuxを無効にするにはどうすればよいのでしょうか。 system-config-selinuxをインストールしていません。会社のファイアウォールポリシーにより、パッケージをインストールするには、 pkgs.org からRPMを検索する必要があります。これを整理する方法はありますか?
編集:
Summary:
SELinux is preventing /opt/ibm/cognos/c10/cgi-bin/cognos.cgi "execute" access to
/opt/ibm/cognos/c10/cgi-bin/libIBJStreamsDLL.so.
Detailed Description:
SELinux denied access requested by /opt/ibm/cognos/c10/cgi-bin/cognos.cgi.
/opt/ibm/cognos/c10/cgi-bin/cognos.cgi is mislabeled.
/opt/ibm/cognos/c10/cgi-bin/cognos.cgi default SELinux type is bin_t, but its
current type is bin_t. Changing this file back to the default type, may fix your
problem.
If you believe this is a bug, please file a bug report against this package.
Allowing Access:
You can restore the default system context to this file by executing the
restorecon command. restorecon '/opt/ibm/cognos/c10/cgi-bin/cognos.cgi'.
Fix Command:
/sbin/restorecon '/opt/ibm/cognos/c10/cgi-bin/cognos.cgi'
Additional Information:
Source Context unconfined_u:system_r:httpd_t:s0
Target Context unconfined_u:object_r:usr_t:s0
Target Objects /opt/ibm/cognos/c10/cgi-bin/libIBJStreamsDLL.so [
file ]
Source cognos.cgi
Source Path /opt/ibm/cognos/c10/cgi-bin/cognos.cgi
Port <Unknown>
Host mm2Fedora.syd.cog
Source RPM Packages
Target RPM Packages
Policy RPM selinux-policy-3.9.7-3.fc14
Selinux Enabled True
Policy Type targeted
Enforcing Mode Enforcing
Plugin Name restore_source_context
Host Name mm2Fedora.syd.cog
Platform Linux mm2Fedora.syd.cog 2.6.35.6-45.fc14.i686 #1
SMP Mon Oct 18 23:56:17 UTC 2010 i686 i686
Alert Count 18
First Seen Fri 15 Apr 2011 02:12:44 PM EST
Last Seen Fri 15 Apr 2011 02:33:11 PM EST
Local ID 409e250f-049f-49c0-89f6-7155e4643868
Line Numbers
Raw Audit Messages
node=mm2Fedora.syd.cog type=AVC msg=audit(1302841991.999:22392): avc: denied { execute } for pid=28242 comm="cognos.cgi" path="/opt/ibm/cognos/c10/cgi-bin/libIBJStreamsDLL.so" dev=dm-0 ino=138263 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:usr_t:s0 tclass=file
node=mm2Fedora.syd.cog type=SYSCALL msg=audit(1302841991.999:22392): Arch=40000003 syscall=192 success=no exit=-13 a0=0 a1=1bc08 a2=5 a3=802 items=0 ppid=27923 pid=28242 auid=500 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=1 comm="cognos.cgi" exe="/opt/ibm/cognos/c10/cgi-bin/cognos.cgi" subj=unconfined_u:system_r:httpd_t:s0 key=(null)
助言されたように、提案された修正コマンドを実行します:/sbin/restorecon '/opt/ibm/cognos/c10/cgi-bin/cognos.cgi'
何度も、残念ながら。 SELinuxを完全に無効にすることで、このWebアプリが機能することを確認できます。私は現在、このトピックについて自分で調査しています。SELinuxをグローバルに有効にして、httpdに対してのみ無効にする方法が好きです。最善のアプローチである必要はありませんが、これは私と私のチームにとっては問題ないテストケースにすぎません。
私がFedora 13から得たヒント SELinux FAQはここにあります なので、私はsystem-config-selinuxに方法があると個人的に信じています。詳細は分かりません。 ...
私の以前のコメントを回答に、人気の需要に変換する;)
You-learn-something-everyday部門から:ダンウォルシュが昨日プレゼンテーションをするのを見ました。そこで彼は、FedoraとEL6の新しいリリースでアプリケーションの制限を無効にする新しい方法を説明しました。遷移を無効にするようにブール値を設定することはありません(すべてを機能させるために設定する必要があるブール値のカスケードが発生する場合があります)が、特定のタイプを許可モードにします。これを行うには、「semanage permissive -a TYPE」コマンドを実行します(この場合、「semanage permissive -a httpd_t」)。これにより、httpd_tのSELinuxはオンのままになりますが、許容モードになります。 – wzzrd 5月20日、2011年5月20日8:45
Fedora 14の場合、el6と同様に、次のコマンドを実行することで、http SELinuxモジュールをアンロードできると思います
semodule -r httpd
おそらく、httpdをinitrc_t
またはunconfined_t
として実行します。
これがF14で機能しない場合は、次のようにSELinuxブール値(el5からの「古い」方法)をオフにできます。
setsebool httpd_disable_trans 1
そして使う
setsebool -P httpd_disable_trans 1
恒久的にする
質問は完全に明確ではありません-あなたの意図は正確に何ですか?
Selinux自体の代わりにファイアウォールを使用するため、HTTPポートを開こうとしているのではないと想定します。
では、httpdデーモンに通常のドキュメントルートの下にないディレクトリへの書き込みを許可したいとお考えですか?
その場合、Selinuxの権限を確認し、アクセスするディレクトリに設定する必要があります。
ここにそれについて読む場所があります:
http://wiki.centos.org/HowTos/SELinux
FedoraとCentosの両方がRed Hatに関連しているため、これは重要です。
[編集]
これを試してください:
chcon -t textrel_shlib_t ThePathToTheFile
それはこの投稿でPabloTwoによって提案されました:
http://www.fedoraforum.org/forum/showthread.php?t=252552
これは、この投稿でもIBMによって提案されました。
https://www-304.ibm.com/support/docview.wss?uid=swg2145455
単一のサービスでどのようにSELinuxをオフにするのかわかりません-できないと思います。
しかし、実行できることは、runconを使用して、Apacheプロセスを制約のないコンテキストで実行するように設定することです。
Runconは、selinuxのsudoersと考えることができます。プロセスを実行するコンテキストを指定できます。
次のようなものを追加して、Apache起動スクリプトを変更する必要があります。
runcon unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
実際にApacheを呼び出すhttpd起動スクリプトの部分。
私のFedora FC14ホストでは、次の行を変更します。
LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS
次のようなものを読むには:
LANG=$HTTPD_LANG daemon --pidfile=${pidfile} runcon unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 $httpd $OPTIONS
PS私は実際にこれをApache起動スクリプトでテストしていません。したがって、上記は正確にどこに配置する必要があるかについての推測ですが、runconを使用して、プロセスを以前に制約なしで実行できるようにしたので、動作します、あなたはちょうど正しい場所を見つける必要があります。
HttpdのSELinuxをグローバルに無効にするブール値はありません。そうは言っても、使用する必要のある関連ファイルのコンテキストについては、httpd_selinux(8)
のマニュアルページをお読みください。あなたの場合あなたが欲しいhttpd_sys_script_exec_t
またはhttpd_unconfined_script_exec_t
、およびchcon
を使用して一時的にテストに設定し、semanage
を使用して永続的に設定できます。
GBrowse2を使用していたときにも同じ問題がありました。 GBrowse2は一時ファイルをウェブルート以外の場所に保存し、ウェブルート外のセッションにロックを設定します。 GBrowse2はApacheで実行されるため、SELinux dintを使用すると、httpdがwebroot外のディレクトリにアクセス/変更できます。私は前の投稿で提供されたリンクをたどりました:
"ここにそれを読む場所があります: http://wiki.centos.org/HowTos/SELinux "
問題をどのように解決するかについての完全な指示はありませんが、それは私を大いに助けました(セクション4:SELinuxアクセス制御)。 SELinuxがwebrootファイルと非webrootファイルをどのように区別するかについてのアイデアを与えてくれました。非webrootフォルダー/ファイルのタイプを、httpdプロセスタイプと互換性のあるタイプに変更する必要があります。このタイプは、SELinuxエラーの詳細で提供されるコマンド(semanageおよびrestoreconコマンド)を使用して設定できます。非Webルートフォルダーのタイプを修正した後、GBrowse2はタイプが変更された非Webルートフォルダーに新しいファイルをスムーズに作成できました。