kerberos cifs montagem multiusuário do AD PDC

3

Estou tentando montar uma pasta cifs em um servidor Ubuntu com suporte multiusuário de um DC do Windows.

Eu posso obter tickets do usuário kerberos como root no servidor e montar o diretório com kerberos sem problemas. Mas eu não quero montar o diretório como um usuário, ele deve ser montado como multiusuário e acessível para todos os usuários no servidor.

Talvez esta seja apenas uma questão geral sobre o entendimento, talvez você possa me corrigir o que está errado aqui.

  • O servidor de montagem multiusuário precisa de um keytab do DC (exportação de ktpass para cifs / samba.domain)
  • O Samba usa este keytab para montar o multiusuário de compartilhamento do DC
  • O Winbind / kerberos autentica os usuários no DC e emite um ticket
  • O usuário pode acessar o compartilhamento com o ticket

Eu exportei um arquivo keytab no DC e o coloquei como o arquivo keytab global /etc/krb5.keytab

root@remote:/etc# klist -ke
Keytab name: FILE:/etc/krb5.keytab
KVNO Principal
---- --------------------------------------------------------------------------
   3 cifs/[email protected] (des-cbc-md5) 

Mas ainda não consigo montar o diretório porque a chave não está disponível     Erro de montagem (126): Chave necessária não disponível

syslog me mostra isso:

May 17 11:37:22 remote cifs.upcall: key description: cifs.spnego;0;0;3f000000;ver=0x2;host=nina.mbeya.domain.org;ip4=10.10.10.17;sec=krb5;uid=0x0;creduid=0x0;user=root;pid=0x599b
May 17 11:37:22 remote cifs.upcall: ver=2
May 17 11:37:22 remote cifs.upcall: host=nina.mbeya.domain.org
May 17 11:37:22 remote cifs.upcall: ip=10.10.10.17
May 17 11:37:22 remote cifs.upcall: sec=1
May 17 11:37:22 remote cifs.upcall: uid=0
May 17 11:37:22 remote cifs.upcall: creduid=0
May 17 11:37:22 remote cifs.upcall: user=root
May 17 11:37:22 remote cifs.upcall: pid=22939
May 17 11:37:22 remote cifs.upcall: find_krb5_cc: considering /tmp/krb5cc_1000
May 17 11:37:22 remote cifs.upcall: find_krb5_cc: /tmp/krb5cc_1000 is owned by 1000, not 0
May 17 11:37:22 remote cifs.upcall: krb5_get_init_creds_keytab: -1765328378
May 17 11:37:22 remote cifs.upcall: handle_krb5_mech: getting service ticket for cifs/nina.mbeya.domain.org
May 17 11:37:22 remote cifs.upcall: cifs_krb5_get_req: unable to resolve (null) to ccache
May 17 11:37:22 remote cifs.upcall: handle_krb5_mech: failed to obtain service ticket (-1765328245)
May 17 11:37:22 remote cifs.upcall: handle_krb5_mech: getting service ticket for host/nina.mbeya.domain.org
May 17 11:37:22 remote cifs.upcall: cifs_krb5_get_req: unable to resolve (null) to ccache
May 17 11:37:22 remote cifs.upcall: handle_krb5_mech: failed to obtain service ticket (-1765328245)

Agradeço qualquer entrada sobre isso.

Obrigado

    
por Meiko Watu 17.05.2013 / 10:39

1 resposta

3

Você observou que pode obter "tickets do usuário Kerberos como root", mas há um erro de "a chave não está disponível".

find_krb5_cc: /tmp/krb5cc_1000 is owned by 1000, not 0

Esse erro significa que o mount.cifs não tem acesso ao tíquete do Kerberos porque ele não é de propriedade do root (userid: 0), que chama o mount.cifs. Eu diria que a raiz dos tíquetes Kerberos obtida com a senha de um usuário foi designada para uso somente por esse usuário.

Agora, por que o mount quer que o ticket seja de propriedade do root? Esta parte da primeira linha:

uid=0x0;creduid=0x0;user=root;

pode ser o motivo. O Mount.cifs está sendo realizado como root. Você pode querer tentar mudar uid e creduid para o useruid do usuário.

Eu não sei de onde você está chamando o mount.cifs, então me desculpe se isso é um pouco vago. Você poderia, por favor, dar o comando mount.cifs que você está executando e suas opções?

Quanto ao compartilhamento ser "acessível para todos os usuários no servidor": Eu tenho pam_mount executado depois que um usuário faz o login e montar um compartilhamento com seu nome de usuário, senha e seu tíquete Kerberos, por isso não estou usando um keytab. Este é o comando mount que estou chamando:

mount -t cifs //<SERVER>/<VOLUME> <MOUNTPOINT> -o username=%(USER),sec=krb5,domain=<DOMAIN>,cruid=%(USERUID),uid=%(USERUID),gid=%(USERGID),rw

Adicione os usuários autorizados a um único grupo. Também defina file_mode = e dir_mode = para as permissões corretas para o grupo ter acesso de leitura / gravação ao arquivo, algo como 770.

    
por 30.07.2013 / 03:57