como obter acesso rw para o diretório montado do php?

1

UPDATE2

Se eu fizer ls dentro do diretório montado, o script php funcionará pelo menos uma vez. Estranho, não é.

Eu quero acessar um diretório do meu script PHP montado a partir de

  • servidor de dados (Linux datadev 2.6.22.18-0.2-default # 1 SMP 2008-06-09 13:53:20 +0200 x86_64 x86_64 x86_64 GNU / Linux)

  • em wwwdev (Linux www.dev 2.6.22.19-0.1-padrão # 1 SMP 2008-10-14 22:17:43 +0200 x86_64 x86_64 x86_64 GNU / Linux)

via nfs

  • / etc / exports é como (tentei algumas coisas que não funcionaram para mim)

    • / var / lib / firebird / data 10.0.0.20 (rw, no_root_squash)
    • / var / lib / firebird / data 10.0.0.20 (rw, setuid, no_root_squash)

    • / var / lib / firebird / data -mapall = roda de wwwrun: 10.0.0.20 (rw)

    • / var / lib / firebird / dados 10.0.0.20 (rw, all_squash, anonuid = 30, anongid = 100)

  • / etc / fstab é como

    • 10.0.0.21:/var/lib/firebird/data/var/lib/firebird/dados padrões nfs 0 0

Eu posso acessar o diretório do shell, mas php me dá um erro Permission denied (errno 13) se eu fizer chdir ('/ var / lib / firebird / data');

[root][wwwdev /var/lib/firebird/data] ls -la
total 44G
-rw-rw---- 1 firebird firebird   64M Jun 10 15:43 ?
-rw-rw---- 1 firebird firebird  307M Jun 15 10:27 ?OQben.gdb
drwxr-xr-x 2 firebird firebird   16K Jul 21 16:55 ./
drwxr-xr-x 3 firebird wheel     4.0K Jul 21 11:36 ../

-

[root][datadev /var/lib/firebird/data] ls -la
total 44G  
-rw-rw---- 1 firebird firebird   64M Jun 10 15:43 ?
-rw-rw---- 1 firebird firebird  307M Jun 15 10:27 ?OQben.gdb
drwxr-xr-x 2 firebird firebird   16K Jul 21 16:55 ./
drwxr-x--- 4 firebird firebird  4.0K May  7 12:19 ../

meu script php pode editar o arquivo config.ini

root][wwwdev /var/lib/edumate/imacs/radek/3.0] ls -la
total 128K
drwxr-xr-x 19 wwwrun wheel 4.0K Jul 21 16:27 ./
drwxr-xr-x  6 wwwrun wheel 4.0K Jul 19 14:28 ../
-rw-r--r--  1 wwwrun wheel 1.8K Jul 21 15:08 config.ini

UPDATE

Eu quero algo que já esteja funcionando para mim. Eu montei o diretório do meu mac para o mesmo servidor wwwdev. O wwwdev é um cliente do nfs em ambos os casos. / etc / exports no mac tem essa linha em /Users/radek/Sites -mapall=root:wheel -network 10.0.0.0 -mask 255.255.255.0

    
por Radek 21.07.2010 / 09:05

4 respostas

1

Como outros sugeriram, você deve modificar as permissões dos diretórios exportados para permitir que o usuário da web (wwwrun) a quantidade mínima de acesso a eles. O que exatamente você as altera depende do seu sistema e das necessidades de segurança.

Se, por algum motivo, você não puder modificar as permissões do diretório, poderá adicionar o usuário da Web (wwwrun) ao grupo (firebird) na máquina local. Eu não tenho certeza de como o NFS lidará com isso se os GIDs diferirem nas duas caixas, mas podemos classificar isso se for o caso.

Essa provavelmente não é a maneira mais segura de fazer isso, mas não tenho certeza sobre suas restrições para isso.

Apenas curioso ... qual é a razão pela qual o servidor da Web precisará de acesso direto a esse local? Se esta é a localização dos seus arquivos de banco de dados, ele pode abrir uma nova avenida de corrupção de dados se você não for extremamente cuidadoso. Não seria melhor usar um conector Firebird / InterBase?

    
por 29.07.2010 / 02:43
1

Para alterar as permissões para a unidade montada, certifique-se de que o usuário do Apache tenha permissão de acesso no arquivo fstab.

A conta de usuário do Apache é especificada no arquivo de configuração do Apache (httpd.conf) e pode ser algo como "www-data" (dependendo da configuração).

Veja este artigo: Como editar e entender o / etc / fstab

EDIT1

Se não houver problema com fstab, a próxima parada é com o SELinux.
De documentação de políticas do Nfs Selinux :

SELinux policy is customizable based on least access required. So by default SElinux policy does not allow nfs to share files.

If you want to share files read/write you must set the nfs_export_all_rw boolean.

setsebool -P nfs_export_all_rw 1

Para ter certeza absoluta de que o SELinux não está interferindo, veja Como desabilitar o SELinux .

EDIT2

A próxima e última etapa que posso encontrar é verificar se você exportou corretamente os compartilhamentos do servidor NFS. Aqui estão algumas referências que podem apontar o caminho:

Erro de "permissão negada" na montagem NFS
Carregar recursos do NFS

    
por 23.07.2010 / 16:28
0

Normalmente, o Apache está sendo executado por um usuário diferente (por exemplo, www ). Você está acessando os diretórios via root ... e é claro que tem permissão para fazer isso.

Altere as permissões na pasta montada para refletir que o usuário do Apache tem permissão para inseri-las.

    
por 21.07.2010 / 09:33
0

nosso sysadmin resolveu o problema para mim. Ele diz que ele

  • criou o novo grupo xyz no servidor e no cliente nfs e depois adicionou o firebird e wwwrun neste grupo
  • desmontar o dir e configurar o usuário, grupo, permissão exatamente igual em ambos (servidor e cliente)
  • montou de novo e funciona desde ...
por 02.08.2010 / 07:48

Tags