Solaris NFS: permissões de usuário

1

Eu sou muito novo no NFS. Eu gostaria de ter certeza de que sou claro.

Se o servidor NFS compartilha um diretório rw , e todos os arquivos no diretório são permissões 700 e usuário / grupo para esses arquivos é root / root ,

No cliente, você teria que fazer login como root para vê-lo. Está correto?

Estou ciente de que um usuário não raiz no cliente poderia fazer uma conexão direta para substituir isso. (como em não use o mount, apenas use um hack de cliente do NFS.)

Parece realmente que qualquer pessoa que tenha acesso à máquina cliente deve ter acesso aos arquivos e que a máquina cliente deve estar ignorando as permissões. Apenas o servidor deve lidar com permissões.

Estou correto no meu entendimento? É normal ter esse tipo de layout? Existe uma maneira de ignorar as permissões no lado do cliente?

    
por George Bailey 28.12.2010 / 22:07

3 respostas

2

Eu diria que, no geral, você está correto em entender o NFS. Aqui estão alguns detalhes sobre os pontos que você mencionou:

Um servidor NFSv3 fornece apenas as permissões de propriedade e acesso de arquivos. Cabe ao cliente impor essas permissões para usuários específicos (ou seja, quando um processo com um UID específico está solicitando e operação fs).

Mesmo que você configure o NFSv4 com criptografia, autorização do Kerberos e LDAP (e o Krb e o LDAP servidores estão sendo executados de um host diferente), então a raiz do cliente ainda terá o potencial para pelo menos tanto privilégios fs quanto todos os usuários e grupos permitidos. Mas você pode obter proteção novamente para atividades de usuário não raiz e até mesmo outros hosts na rede privada.

Normalmente, os clientes terão muito sucesso em impor as permissões do usuário. Eu não estou ciente de qualquer método simples para ter a permissão de arquivo ignora para uma montagem NFS. Se você quiser, basta definir as permissões para u=rwx,g=rwx,o=rwx para todas as pastas e u=rw,g=rw,o=rw para todos os arquivos.

Off topic:

But be careful not to flip the setuid bit - that can actually end-up giving a root shell to regular users (e.g. www-data) on your client. Setuid can be disable completely with the "-o nosuid" option for NFS and non-NFS mounts.

Existe uma maneira de desabilitar / ativar o rootsquash para o Solaris sever (ele é chamado de algo diferente de rootquash na terminologia do Solaris - eu esqueci o que era).

Você pode fazer com que o servidor Solaris marque todo o compartilhamento como somente leitura, por exemplo:

zfs set sharenfs="[email protected]/16" tank/home/tabriz

Então, não importa o que o cliente faça, o fs não será gravável.

Provavelmente não é possível para um usuário não raiz em seu cliente abrir uma conexão direta com o servidor NFS, mesmo se o programa puder falar o protocolo NFS. Isso ocorre porque o cliente NFS geralmente é forçado a conectar portas privilegiadas de formulário e em clientes íntegros somente o root pode faça isso.

    
por 29.12.2010 / 08:21
1

A segurança do NFS é aplicada no cliente.

O NFS foi criado no passado, quando qualquer pessoa que se conectasse ao compartilhamento NFS estaria em uma rede confiável. Você realmente deve não usar o NFS se houver entidades não confiáveis que possam enviar pacotes para o serviço NFS.

Com isso fora do caminho, o NFS normalmente usará o padrão rootsquash, o que significa que a raiz no cliente (uid 0) é interpretada como nobody (uid 65535) no servidor.

Os arquivos no disco não estão realmente associados a um usuário (essa é uma regra geral, não específica do NFS). Eles estão associados a um uid . Se o usuário alice tiver uid 100 no servidor NFS e o usuário bob tiver uid 100 no cliente NFS, então o bob poderá acessar os arquivos de alice. Na verdade, no cliente, todos os arquivos serão exibidos como se fossem de propriedade de bob. Ou seja, o servidor NFS apenas apresenta metadados brutos para o cliente. Cabe ao cliente interpretar o que achar melhor.

O NFS não foi projetado para segurança. Nunca use o NFS em uma rede onde haja partes não confiáveis.

    
por 28.12.2010 / 22:46
1

O compartilhamento do diretório rw diz que o servidor deve permitir que qualquer pessoa com credenciais adequadas tenha acesso de leitura e gravação ao diretório e seu conteúdo.

Ao alterar as permissões no diretório e seu conteúdo para 700 e a propriedade para root / root, você efetivamente nega o acesso a todos. Isso ocorre porque, por padrão, o Solaris NFS mapeia o usuário raiz de máquinas clientes para ninguém.

Você pode encontrar a página man do Solars share_nfs aqui

    
por 02.09.2012 / 20:13