.htaccess
ファイル保護を使用する必要があるWebサイトがあります。
しかし、私のウェブサイトにアクセスすると、正しいログインを無視し、権限拒否エラーが発生します。 Apacheサーバーのバージョン:Apache / 2.2.3
.htaccess
文書:
[root@server conf]# cat /home/molly/www/.htaccess
AuthName "Directory Auth for User Molly"
AuthType Basic
AuthUserFile /home/molly/.htpasswd
require user molly
権限:
[root@server conf]# ls -al /home/molly/www/.htaccess
-rwxr-xr-x 1 molly apache 116 Jan 13 18:12 /home/molly/www/.htaccess
[root@server conf]#
以前はファイル権限が644でしたがhtaccess
、いくつかの回避策を探してから755に変更しましたが、動作しませんでした。
同様に.htpasswd
、ファイル権限は次のとおりです。
[root@server conf]# ls -al /home/molly/.htpasswd
-rwxr-xr-x 1 molly apache 46 Jan 13 18:58 /home/molly/.htpasswd
[root@server conf]#
エラーログファイル:
[Wed Jan 14 11:59:29 2015] [error] [client 10.0.0.7] (13)Permission denied: Could not open password file: /home/molly/.htpasswd
[Wed Jan 14 11:59:29 2015] [error] [client 10.0.0.7] access to /~molly failed, reason: verification of user id 'molly' not configured
また、ユーザーディレクトリの権限を755に変更しましたが、機能しませんでした。
[root@server conf]# ls -ld /home/molly/
drwxr-xr-x 4 molly molly 4096 Jan 13 18:23 /home/molly/
[root@server conf]#
この奇妙なhtpasswd問題のため、前進できません。
多くの人がこの問題を経験したことを願っています。
答え1
(これは古い質問ですが、他の人には役に立つかもしれません...)
SELinuxに問題があると思われる場合は、一般的にSELinuxを完全に無効にせずに問題を簡単に解決する方法があります。
まず、SELinuxポリシー文書を含むパッケージがインストールされていることを確認してください。 RedHat/CentOS/OELでは名前がselinux-policy-doc
。
その後、標準ディストリビューションに含まれる各システムサービスには、SELinuxコンテキストタグとその特定のサービスに必要なその他の詳細を説明するマニュアルページがあります。彼らはすべて名前です<service name>_selinux
。
この場合、コマンドはですman httpd_selinux
。
一般に、マニュアルページのセクションには、BOOLEANS
必要に応じて簡単にオン/オフできるSELinuxの制限がたくさんあります。最も一般的な要件は、必要に応じて適切なブール値を調整することによって満たすことができます。ここにいくつかの例がありますhttpd
:
httpdが組み込みスクリプト(通常PHP)を使用できるようにするには、
httpd_builtin_scripting
ブール値を有効にする必要があります。デフォルトでは有効になっています。
setsebool -P httpd_builtin_scripting 1
httpd cgiのサポートを許可するには、httpd_enable_cgiブールを有効にする必要があります。デフォルトでは有効になっています。
setsebool -P httpd_enable_cgi 1
httpdがユーザーコンテンツを読み取ることを許可するには、httpd_read_user_contentブールを有効にする必要があります。デフォルトでは無効になっています。
setsebool -P httpd_read_user_content 1
httpdがホームディレクトリを読み取れるようにするには、httpd_enable_homedirsブール値を有効にする必要があります。デフォルトでは無効になっています。
setsebool -P httpd_enable_homedirs 1
httpdがcifsファイルシステムにアクセスできるようにするには、httpd_use_cifsブール値を設定する必要があります。デフォルトでは無効になっています。
setsebool -P httpd_use_cifs 1
httpdがnfsファイルシステムにアクセスできるようにするには、httpd_use_nfsブール値を有効にする必要があります。デフォルトでは無効になっています。
setsebool -P httpd_use_nfs 1
より多くのSELinuxブールがありますhttpd
。
ユーザーのホームディレクトリへのアクセスを許可するには、httpd
少なくともhttpd_read_user_content
。UserDir
httpd_enable_homedirs
サーバーエラーに関するこの質問も参照してください。
どちらもデフォルトで無効になっているため、2つのコマンドが必要です。
# setsebool -P httpd_read_user_content 1
# setsebool -P httpd_enable_homedirs 1
オプションは設定を永久に維持するように-P
指示するsetsebool
ため、追加のSELinux構成ファイルを編集する必要はありません。
答え2
問題が何であるかを確認するには、777権限を使用してから644または444に戻ってください。 777権限でも同じエラーが発生した場合は、SELinuxを無効にしてみてください。
/etc/selinux/config
SELINUX=disabled
もう一度機能しない場合は、.htpasswdを削除してみてください。これがうまくいけば、ルールやいくつかの構文エラーのように問題が.htpasswdにあることを意味します。