
Montei um compartilhamento NFS de um servidor Windows 2012 para um servidor web Centos7 que possuo.
Quero que meu servidor web crie e leia arquivos do compartilhamento NFS. Eu tive uma solução semelhante no Windows 2008 e no Centos6 anteriormente, mas estou tendo dificuldades depois de atualizar os servidores.
UID e GID estão definidos nas opções NFS do W2012 e estão corretos.
[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
O compartilhamento NFS e suas permissões funcionam com o usuário 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
Mas quando tento ler ou escrever no meu site com PHP, recebo permissão negada.
Código PHP (tentando criar uma pasta e ler um arquivo):
// 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;
Registro de erros do 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
O mesmo problema se eu tentar executar como usuário Apache a partir do ssh:
[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
No momento, tentei conceder permissões NTFS a "todos" no lado do Windows, CHMOD 0777 o máximo possível no servidor Centos e desliguei o SELinux - apenas para excluir quaisquer problemas com isso.
Alguém tem uma ideia de por que o usuário Apache não consegue ler ou gravar no compartilhamento NFS?
Atualização nº 1:
Verificado "tail -f /var/log/audit/audit.log" ao criar arquivos com o usuário Apache. Não consigo ver nenhuma diferença no log quando crio um arquivo no ex. /external ou em /external/NFSShare onde recebo permissão negada no NFSShare.
Verifiquei "tcpdump -i any dst windowsserver" onde recebo a solicitação NFS ao criar um arquivo com o usuário root, mas nada ao tentar com o usuário Apache. Parece que meu servidor Centos está negando a solicitação antes que qualquer coisa seja enviada ao servidor Windows.