.htpasswd権限の問題

.htpasswd権限の問題

.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_contentUserDirhttpd_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にあることを意味します。

関連情報