web-dev-qa-db-ja.com

権限が拒否されました:Apacheで/var/run/httpd.pidを作成できませんでした

私はApacheとRedHat Enterprise 6を実行するWebサーバーのセットアップに取り組んでおり、PHP chroot jail環境内にあります。Apacheのchrootディレクトリは/ chroot/httpdです。私は this の例ですが、Apacheを起動すると、/ var/log/httpd/error_logに次のように表示されます。

[warn] ./mod_dnssd.c: No services found to register
[Mon Jul 25 13:14:31 2011] [notice] core dump file size limit raised to 4294967295 bytes
[Mon Jul 25 13:14:31 2011] [notice] SELinux policy enabled; httpd running as context unconfined_u:system_r:httpd_t:s0
[Mon Jul 25 13:14:31 2011] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Mon Jul 25 13:14:31 2011] [notice] Digest: generating secret for digest authentication ...
[Mon Jul 25 13:14:31 2011] [notice] Digest: done
[Mon Jul 25 13:14:31 2011] [notice] mod_chroot: changed root to /chroot/httpd.
[Mon Jul 25 13:14:31 2011] [error] (13)Permission denied: could not create /var/run/httpd.pid
[Mon Jul 25 13:14:31 2011] [error] httpd: could not log pid to file /var/run/httpd.pid
[Mon Jul 25 13:14:31 2011] [warn] ./mod_dnssd.c: No services found to register

また、SELinuxが有効になっており、指示に従って、コマンドを使用してhttpd_disable_transブール値を1に変更する必要があります

setsebool httpd_disable_trans 1

ただし、このようなブール値は/ selinux/booleansまたはシステムのどこにも見つかりません。コマンドは次のエラーを生成します。

Could not change active booleans: Invalid boolean

このブール値がシステムに存在せず、結果が得られない理由をウェブで調べました。 SELinuxがhttpdの起動を許可していないのか、それとも権限の問題なのか、私にはわかりません。権限を再確認したところ、問題はないようです。助言がありますか?

ありがとうございました。

更新: SELinuxが実際にこれらのエラーの原因であると判断しました。デフォルトのポリシーをEnforcingからPermissiveに変更すると、Apacheを正常に起動できます。問題は、システムでhttpd_disable_transが使用できないのはなぜですか?これにより、Apacheと共にSELinuxのセキュリティを維持できます。

また、余談ですが、Apacheがchroot環境内にある場合、/ chroot内にWebコンテンツをホストするか、そこからそこにあるシンボリックリンクを作成するのが最善ですか?私の目標は、/ usersの下に格納されているユーザーディレクトリ内のWebコンテンツを有効にする必要があることです。

pdate 2:関連すると思われるいくつかのApache構成行:

.....
ServerRoot /etc/httpd
LockFile /var/run/httpd.lock
CoreDumpDirectory /var/run
ScoreBoardFile /var/run/httpd.scoreboard

PidFile /var/run/httpd.pid
ChrootDir "/chroot/httpd"
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_alias_module modules/mod_authn_alias.so
LoadModule authn_anon_module modules/mod_authn_anon.so
LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_Host_module modules/mod_authz_Host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_owner_module modules/mod_authz_owner.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule ldap_module modules/mod_ldap.so
LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule include_module modules/mod_include.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule logio_module modules/mod_logio.so
LoadModule env_module modules/mod_env.so
LoadModule ext_filter_module modules/mod_ext_filter.so
LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule expires_module modules/mod_expires.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
LoadModule usertrack_module modules/mod_usertrack.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule mime_module modules/mod_mime.so
LoadModule dav_module modules/mod_dav.so
LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule info_module modules/mod_info.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
LoadModule actions_module modules/mod_actions.so
LoadModule speling_module modules/mod_speling.so
LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
LoadModule substitute_module modules/mod_substitute.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule cache_module modules/mod_cache.so
LoadModule suexec_module modules/mod_suexec.so
LoadModule disk_cache_module modules/mod_disk_cache.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule version_module modules/mod_version.so
LoadModule chroot_module      /usr/lib/httpd/modules/mod_chroot.so

Include conf.d/*.conf


User Apache
Group Apache
....
4
Bourne

どんな問題なのか分かります。これは私たちの環境です:

RedHat 5と最新のApache RPM

エラーログを見ると、「run」ディレクトリの下にhttpd.pidを作成できなかったというメッセージが表示されます。そのディレクトリには、読み取り/書き込み「httpd_sys_rw_content_t」(「/ etc/selinux/targeted/contexts/customizable_types」から検索する必要があった)の正しいコンテキストがあったため、意味がありませんでした。

私は(何時間も検索した後)エラーログでは完全なパスが得られないことに気付きましたが、Apacheが起動すると、chroot dirを "/ home/httpdjail"に設定します。

このフォルダの下に、別の「実行」ディレクトリが見つかりました。権限を次のように変更した後:

chcon -Rv -t httpd_sys_content_rw_t/home/httpdjail /

出来た!! ^^

「/ chroot/httpd」に適切な権限を与えると問題が解決すると思います。

この助けを願っています!

5
Jubei

無効なブール値については知りませんが、ログを確認することでSELinuxアクセス許可の問題を見つけることができます(/var/log/audit/audit.logを試してください)

ログには、httpd/Apacheによって使用されるコンテキスト/タイプと、SELinuxがアクセスを拒否するファイルが表示されると思います。また、ls -lZを試して特定のファイルのコンテキストを明らかにし、SELinux権限を再構成しようとする前にrestorecon -R -F -v(コンテキストの復元)を試してください。


Audit.logが冗長であることに対応して、そうです!ただし、既知のプロセスの特定のファイルを1つ探している場合は、それほど問題ではありません。/etc/hostsをロードしないApache(httpd)の例は次のとおりです。

type=AVC msg=audit(1311546944.235:1040): avc:  denied  { read } for  pid=1396 comm="httpd" 
name="hosts" dev=dm-0 ino=262931 
scontext=user_u:system_r:httpd_t:s0 
tcontext=system_u:object_r:initrc_tmp_t:s0 tclass=file

また、SELinux構成を編集せずにコンテキストが正常から抜け出した経験があることも注目に値します。例えばファイルがscpを介してアップロードされるとき、ディレクトリ間を移動するとき、および上記の例では、restoreconで修正できましたが、それを修正しました。

Audit.logで「httpd」の兆候を検索できます。お役に立てれば。

4
KCD

PostfixなどのMTAを使用している場合は、SElinuxの設定を維持することができます。

httpd_can_sendmail=1

このため、私はこれを行うことを提案します:

echo "httpd_disable_trans=1" >> /etc/selinux/targeted/modules/active/booleans.local
0
user170297

これを試して:

# echo "httpd_disable_trans=1" > /etc/selinux/targeted/booleans

そして、Apacheを再起動して何が起こるかを確認します。

0
quanta