Linux NFS cria máscara e força o equivalente do usuário

10

Eu tenho dois servidores Linux:

fileserver
Debian 5.0.3 (2.6.26-2-686)
Samba versão 3.4.2

apache
Ubuntu 10.04 LTS (2.6.32-23-genérico)
Apache 2.2.14

Eu tenho um número de compartilhamentos do Samba em fileserver para que eu possa acessar arquivos de PCs com Windows. Eu também estou exportando /data/www-data para o servidor apache , onde o tenho montado como /var/www .

A configuração está ok, exceto quando eu for criar arquivos na montagem NFS. Acabo com arquivos que não podem ser lidos pelo Apache ou que não podem ser modificados por outros usuários no meu sistema.

Com o Samba, posso especificar force user , force group , create mask e directory mask , e isso garante que todos os arquivos sejam criados com permissões adequadas para meu servidor web Apache. Não consigo encontrar uma maneira de fazer isso com o NFS. Existe uma maneira de forçar permissões e propriedade com o NFS - estou faltando algo óbvio?

Embora eu tenha passado bastante tempo com o Linux, e estou me livrando do Windows, eu ainda não consegui segurar as permissões do Linux ... Se esse não é o jeito certo de fazer as coisas, eu estou aberto a sugestões alternativas.

    
por Mike 14.07.2010 / 16:43

2 respostas

11

Dado que você vem do Windows, você descobrirá que o NFS é ... diferente.

O problema que você está enfrentando é bastante comum. O NFS está passando o UID e o GID dos arquivos / diretórios para frente e para trás entre as máquinas com a suposição de que os IDs do usuário e do grupo são mapeados de forma idêntica em ambos . Isso significa que você pode obter uma situação em que o UID / GID no servidor é passado de volta para um cliente NFS, mas não pode ser igualado no /etc/passwd ou /etc/group do cliente, o que significa sem acesso.

No passado (distante), isso foi co-patrocinado com NIS e NIS +, embora existam outros esquemas que foram inseridos neste framework (sendo um deles o Winbind do Samba). No entanto, isso requer um servidor de ID central, seguido por muitas permissões de correção manual.

Existem maneiras diferentes de corrigir isso, mas o mais barato / rápido é criar um grupo com o mesmo número de ID de grupo em ambas as máquinas - digamos, ID de grupo 50000 - e definir os bits de grupo no servidor de arquivos enquanto adiciona usuário para o grupo no cliente; Em seguida, use as permissões de grupo nos arquivos para controlar o acesso. Não é uma ótima solução, mas vai funcionar. Observe que você pode ter problemas com serviços que explicitamente alteram seu grupo em tempo de execução (também conhecido como privledge drop) e talvez seja necessário alterar a configuração que controla o grupo que é assumido no tempo de execução para assegurar que é o que você criou.

Para os arquivos que chegam por meio de um compartilhamento do Windows (também conhecido como Samba), simplesmente force o grupo a ser o mesmo que você criou. Dessa forma, todos os arquivos recebem automaticamente o GID "correto".

    
por 15.07.2010 / 01:19
8

Você também pode usar a opção all_squash , que torna anônimo (usuário e grupo) todos os arquivos exportados & pasta e anexá-los a um GID & UID.

/data/www-data apache(rw,all_squash,anonuid=<your UID>,anongid=<your GID>,sync)

O problema é que todos os usuários no servidor apache verão seu ponto de montagem com nobody nobody como usuário & grupo, e poderia escrever na montagem (mas de qualquer maneira, no servidor Samba, os arquivos serão criados como <your UID> / <your GID> ).

    
por 20.03.2012 / 17:41