Permissões Sudo por grupos ldap via nslcd

7

Eu tenho um problema com minhas permissões sudo em um MS ActiveDirectory para a configuração de autenticação / autorização LDAP do Debian.

O que eu tenho até agora
Eu configurei o nslcd com libpam-ldap via ldaps e o ssh login está funcionando muito bem.

getent passwd myuser
myuser:*:10001:10015:myuser:/home/myuser:/bin/bash

No meu Servidor ActiveDirectory, o Pacote Unix é instalado, o que adiciona os atributos necessários, como posixGroup, posixAccount, gid, gidNumber, uid, uidNumber e assim por diante.

Meu exemplo de usuário é assim:
(Eu escolho 10000+ para estar no lado seguro)

cn: myuser
uid: myuser
uidNumber: 10015
gidNumber: 10000

Eu posso restringir logins SSH adicionando o seguinte ao /etc/nslcd.conf

filter passwd (&(objectClass=posixAccount)(|(memberOf=CN=group1,OU=groups,DC=domain,DC=com)(memberOf=CN=group2,OU=groups,DC=domain,DC=com)))

Isso especifica que apenas usuários com objecClass = posixAccount e grupo group1 ou group2 podem efetuar login.

Até aí tudo bem. No entanto, não posso dizer ao sudo para usar esses grupos.

Aqui está o que eu tentei
em / etc / sudoers

// This one works, but only because the user has gidNumber=10000 set. 
// It doesn't matter if a group with this ID actually exist or not. 
// So it's not really permission by LDAP group.
%#10000 ALL=(root) ALL


// This is what I want, but it doesn't work.
%group1 ALL=(root) ALL

O problema
De alguma forma, eu preciso dizer ao sudo para pegar o nome de usuário solicitante, verificar a que grupos-ldap ele pertence e depois ver se as permissões para esse grupo são suficientes para executar o comando ou não.

Não tenho a menor ideia de por onde começar. Tudo o resto funciona até agora e só estou preso com permissões sudo. Pensei em mapear o campo users gidNumber para o campo groups gidNumber, mas não sei se mapear um campo de usuário para um campo de grupo é possível.

Eu não penso assim, já que o mapeamento no nslcd é especificado assim

map passwd field1 field2

e passwd informam ao nslcd que ele tem que mapear os campos do usuário. Em vez de passwd eu poderia usar grupos, mas não os dois.

    
por mohrphium 12.05.2014 / 18:38

2 respostas

7

Desculpe pelo longo post, mas parece funcionar. Acabei de ter um erro de digitação no arquivo sudoers. Demorei um pouco para encontrá-lo, já que a sintaxe ainda estava correta, mas não consegui executar nenhum comando.

No entanto, está funcionando agora.

 // Problem was that one ALL was missing, allowing me to execute no root cmds.
 %group1 ALL=(root) !/bin/su

 // Fixed it
 %group1 ALL=(root) ALL, !/bin/su

Atualização: Eu percebi um pouco tarde mas também mudei o seguinte em /etc/nsswitch.conf

sudoers:        ldap files

Eu só não achei que fosse a correção porque ainda tinha o erro de sudoers mencionado acima.

Problema resolvido:)

    
por 12.05.2014 / 18:58
1

Eu fui com atribuir grupos locais aos usuários por meio do pam_group para obter a mesma funcionalidade. Em /etc/security/groups.conf , adicionei a seguinte linha

*;*;%administrators;Al0000-2400;adm,sudo,lpadmin

Assim, qualquer usuário LDAP que pertença ao grupo LDAP administrators será mapeado para os grupos adm , sudo e lpadmin locais na caixa. Parece mais simples do que ter que instalar o sudo-ldap , a menos que esteja faltando alguma coisa?

    
por 13.09.2015 / 17:10