montagens CIFS e Kerberos - permissões de acesso ou melhores práticas

3

Atualmente, nossos clientes do Ubuntu se conectam a compartilhamentos cifs durante a inicialização do sistema via / etc / fstab. Isto tem as seguintes desvantagens:

  • As senhas são escritas em texto simples como opção de montagem
  • A senha deve expirar, mas se ocorrer, o / etc / fstab deve ser alterado em todos os clientes. Então, a maioria das senhas usadas para montagens simplesmente não expiram no momento
  • O compartilhamento CIFS é montado sob o usuário de conexão e suas permissões, portanto, o usuário realmente trabalhando com o compartilhamento no Ubuntu não é exibido. Um efeito colateral é um borrão de permissões, porque os usuários do Ubuntu não estão listados nas permissões do sistema de arquivos do Windows.

O que eu já testei com sucesso em nossos clientes do Ubuntu: Usando a autenticação do kerberos no login do usuário - assim, há um ticket do kerberos disponível para o usuário.

Usando esse ticket do kerberos para (sudo) montar o compartilhamento cifs dentro de um serviço do sistema

  • PRO: Funciona no login gráfico, assim como no ssh
  • PRO: o compartilhamento está acessível como o sistema de arquivos local
  • CON: Se eu montar em um ponto de montagem global como / servers / mymount, preciso ter cuidado para não sobrecarregar montagens de usuários múltiplos. E o usuário de conexão seria aquele que teria permissões para qualquer usuário seguinte.

Usando esse tíquete do kerberos para montar dinamicamente o compartilhamento dos navegadores de arquivos nautilus e thunar

  • PRO: Se a conexão com o compartilhamento for estabelecida por meio do navegador de arquivos, nenhum script ou serviço extra será necessário
  • PRO: O compartilhamento é montado no contexto do usuário, portanto, definitivamente com a permissão do usuário. Se o usuário não tiver permissão, ainda existe a possibilidade de conectar o compartilhamento com outro usuário.
  • PRO: As montagens podem ser automatizadas por / etc / profile usando o gvfs-mount
  • PRO: Não são necessários direitos sudo, o usuário pode montar e montar gvfs como desejar, muito intuitivo via navegador de arquivos
  • CON: Não há ponto de montagem real, comandos unix padrão como ls, cp e assim por diante não funcionam. Eu teria que usar alternativas gvfs- *. Neste ponto, a solução acima com mount.cifs parece ser melhor.

Então, o que eu gostaria é acessar o compartilhamento cifs como eu acessar um compartilhamento nfs.

  • Nenhuma senha usada durante a montagem
  • As permissões do usuário de acesso devem ser usadas
  • O sistema de arquivos deve se comportar como o sistema de arquivos local (os comandos unix padrão devem funcionar)

Eu poderia montar um compartilhamento CIFS várias vezes, separadamente para cada usuário, em seu diretório pessoal, mas

Existe uma maneira de montar o compartilhamento CIFS durante a inicialização pelo usuário root, não especificando um usuário de conexão e, em seguida, usando as permissões de um usuário de acesso (por exemplo, via kerberos ticket) ?

Obrigado antecipadamente, Bastian

    
por user2149308 19.04.2018 / 09:49

1 resposta

1

Use a opção automount + multiuser de mount.cifs

Você pode conseguir isso usando o automount e a opção multiusuário para mount.cifs. Instale os pacotes necessários:

sudo apt install autofs keyutils cifs-utils

O exemplo a seguir supõe que o servidor cifs exporte um compartilhamento que é nomeado após o usuário que está acessando-o. Normalmente, isso seria adequado para diretórios pessoais.

Adicione isso ao seu /etc/auto.master :

/cifs /etc/auto.cifs

Em /etc/auto.cifs coloque isso:

*   -fstype=cifs,multiuser,cruid=${UID},sec=krb5    ://server.domain/&

Certifique-se de substituir server.domain pelo seu servidor de arquivos. Você também pode usar um compartilhamento fixo dessa maneira. Basta substituir o * por um nome fixo e também o & .

Um detalhe importante na configuração acima é o cruid=${UID} . Isso fará com que o kernel procure um ticket do kerberos no contexto do usuário que está acessando o compartilhamento. Caso contrário, estaria tentando cache de tickets de raízes.

Finalmente, recarregue o automount:

sudo service autofs reload

Se você tiver um tíquete do kerberos, ele montará o sistema de arquivos /cifs/$USER no primeiro acesso. Isso significa que você precisa digitar explicitamente e. g. cd /cifs/myuser ou uma ação semelhante em um navegador de arquivos GUI. Para evitar isso, você poderia colocar links simbólicos apontando para isso de outro lugar e dizer aos usuários para acessá-los.

Se você estiver usando um compartilhamento fixo (não usando * e & ), é claro que você teria que digitar cd /cifs/sharename .

O acesso subsequente de outros usuários ao mesmo compartilhamento estará usando as permissões deles , possibilitados pela opção multiuser . Nenhuma montagem adicional será feita, mas a existente será reutilizada.

De mount.cifs (8) :

   multiuser
       Map user accesses to individual credentials when accessing
       the server. By default, CIFS mounts only use a single set of
       user credentials (the mount credentials) when accessing a
       share. With this option, the client instead creates a new
       session with the server using the user's credentials whenever
       a new user accesses the mount. Further accesses by that user
       will also use those credentials. Because the kernel cannot
       prompt for passwords, multiuser mounts are limited to mounts
       using sec= options that don't require passwords.

Também é possível adicionar os mapas automount necessários a um servidor LDAP para gerenciamento central, mas isso provavelmente está além do escopo desta resposta.

Na sua pergunta, você pediu que a montagem fosse montada como root na inicialização. Tecnicamente isso é feito aqui na forma de uma montagem de suporte de lugar para autofs. Praticamente a montagem real é feita apenas no primeiro acesso por um usuário.

Estamos usando essa configuração para ~ 100 clientes no meu local de trabalho para acessar um grande sistema de arquivos Lustres e funciona de forma confiável.

    
por Sebastian Stark 19.04.2018 / 10:31