Windows2012 から Centos7 への NFS への apache ユーザー アクセス

Windows2012 から Centos7 への NFS への apache ユーザー アクセス

Windows 2012 サーバーから Centos7 Web サーバーに NFS 共有をマウントしました。

Web サーバーで NFS 共有からファイルを作成し、読み取るようにしたいと考えています。以前は Windows 2008 と Centos6 でも同様のソリューションを使用していましたが、サーバーをアップグレードした後、苦労しています。

UID と GID は W2012 NFS オプションで設定されており、正しいです。

[root@centos external]# ll
drwxrwxrwx  2 apache www-data 4096 Sep 17 16:15 NFSShare


[root@centos external]# df -h
windowsserver:/NFSShare 50G   19G   31G  38% /var/www/external/NFSShare

[root@centos external]# getfacl NFSShare/
# file: NFSShare/
# owner: apache
# group: www-data
user::rwx
group::rwx
other::rwx

NFS 共有とその権限は、root ユーザーで機能します。

[root@centos NFSShare]# touch test.txt
[root@centos NFSShare]# ll
total 1
-rwxrwxrwx 1 apache www-data  8 Sep 17 16:15 test2.txt
-rw-r--r-- 1 apache www-data  0 Sep 24 11:10 test.txt

しかし、PHP を使用して Web サイトから読み取りまたは書き込みを行おうとすると、権限が拒否されます。

PHP コード (フォルダーを作成してファイルを読み取ろうとしています):

// Try create a folder    
mkdir('/var/www/external/NFSShare/123');

// Try to read from file
$file = '/var/www/external/NFSShare/test2.txt';
$homepage = file_get_contents($file);
echo $homepage;

PHP エラーログ:

[root@centos external]# tail /var/log/httpd/website-error_log

[Thu Sep 24 10:21:03.632156 2015] [:error] [pid 15286] [client 172.27.xxx.xxx:56198] PHP Warning:  mkdir(): Permission denied in /var/www/website/modules/users/view/admin/test.php on line 6
[Thu Sep 24 10:21:03.645438 2015] [:error] [pid 15286] [client 172.27.xxx.xxx:56198] PHP Warning:  file_get_contents(/var/www/external/NFSShare/test2.txt): failed to open stream: Permission denied in /var/www/website/modules/users/view/admin/test.php on line 15

SSH から Apache ユーザーとして実行しようとすると、同じ問題が発生します。

[root@centos NFSShare]# su -s /bin/sh apache -c "touch /var/www/external/NFSShare/test.txt"
touch: cannot touch ‘/var/www/external/NFSShare/test.txt’: Permission denied

現時点では、Windows 側で「Everyone」に NTFS 権限を付与し、Centos サーバーで CHMOD 0777 を可能な限り付与し、SELinux をオフにして、これによる問題を排除しようとしています。

Apache ユーザーが NFS 共有を読み書きできない理由について、誰か分かるでしょうか?

アップデート#1:

apache ユーザーでファイルを作成するときに、「tail -f /var/log/audit/audit.log」をチェックしました。たとえば、/external または /external/NFSShare にファイルを作成すると、NFSShare で権限が拒否され、ログに違いが見られません。

「tcpdump -i any dst windowsserver」をチェックしたところ、root ユーザーでファイルを作成すると NFS 要求が届きますが、apache ユーザーで試すと何も届きません。つまり、Windows サーバーに何かが送信される前に Centos サーバーが要求を拒否しているようです。

関連情報