Como permitir gravar em uma partição NFS montada

5

Como você permite que uma permissão de usuário específica grave em uma partição NFS?

Eu montei um compartilhamento NFS no meu localhost (uma instalação do Fedora), e posso ler e escrever como root, mas não consigo escrever como o usuário do apache, apesar de todos os arquivos e diretórios no compartilhamento no meu localhost e host remoto são de propriedade do apache.

Por exemplo, eu o montei por meio dessa linha no meu / etc / fstab:

remotehost:/data/media     /data/media             nfs     _netdev,soft,intr,rw,bg        0 0

E os dois locais são de propriedade do apache:

[root@remotehost ~]# ls -la /data
total 24
drwxr-xr-x.  6 root    root    4096 Jan  6  2011 .
dr-xr-xr-x. 28 root    root    4096 Oct 31  2011 ..
drwxr-xr-x   4 apache  apache  4096 Jan 14  2011 media

[root@localhost ~]# ls -la /data
total 16
drwxr-xr-x   4 apache apache 4096 Dec  7  2011 .
dr-xr-xr-x. 27 root   root   4096 Jun 11 15:51 ..
drwxrwxrwx   5 apache apache 4096 Jan 31  2011 media

No entanto, quando tento escrever como o usuário do apache, recebo um erro de "Permissão negada".

[root@localhost ~]# sudo -u apache touch /data/media/test.txt'
touch: cannot touch '/data/media/test.txt': Permission denied

Mas é claro que funciona bem como root. O que estou fazendo errado?

    
por Cerin 12.06.2012 / 00:04

2 respostas

3

O NFS autoriza operações com base no ID do usuário, não no nome de usuário. Para poder gravar em /data/media no cliente NFS, é necessário garantir que apache on localhost e apache on remotehost tenham os mesmos IDs de usuário numéricos.

As listagens de arquivos na postagem não confirmam isso.

De fato, a listagem localhost diz que o mountpoint /data/media é de propriedade de apache @ localhost.

[root@localhost ~]# ls -la /data
 ...
 drwxrwxrwx   5 apache apache 4096 Jan 31  2011 media

A listagem remota mostra que recurso compartilhado /data/media é de propriedade de apache @ remotehost.

[root@remotehost ~]# ls -la /data
drwxr-xr-x   4 apache  apache  4096 Jan 14  2011 media

Se IDs de usuário numéricos de apache @ localhost e apache @ remotehost diferirem, o diretório não será gravável.

Você pode usar o comando ls -lna para verificar IDs de usuário numéricos.

Isto é apenas um palpite. Não há nada no OP que confirme especificamente que há um desacordo nos IDs do usuário.

    
por 12.06.2012 / 05:26
0
  • A exportação é gravável (verifique /etc/exports no servidor)? Como você encontrará em exports(5) :

       rw     Allow both read and write requests on this NFS volume.
              The default is to disallow any request which changes the filesystem.
              This can also be made explicit by using the ro option.
    
  • (Provavelmente não relevante, mas eu não sei muito sobre as políticas existentes do SELinux) Você está usando o SELinux no servidor? Você pode verificar com getenforce , pode querer tentar novamente após setenforce 0 (desfazer com setenforce 1 ).

  • Eu notei que os UIDs coincidem. Mas acredito que vale a pena mencionar que, para garantir que usuários e grupos sejam correspondidos por nomes em vez de IDs, você pode configurar o serviço idmap em ambos os hosts.
por 05.07.2012 / 21:24