Permissões Sudo por grupos ldap via nslcd

Permissões Sudo por grupos ldap via nslcd

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

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

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

No meu servidor ActiveDirectory, o pacote Unix está instalado, adicionando os atributos necessários como posixGroup, posixAccount, gid, gidNumber, uid, uidNumber e assim por diante.

Meu exemplo de usuário é assim:
(eu escolho 10.000+ para garantir a segurança)

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

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 somente usuários com objecClass=posixAccount e grupo group1 ou group2 podem efetuar login.

Até agora 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, preciso dizer ao sudo para pegar o nome de usuário solicitante, verificar a quais grupos ldap ele pertence e ver se as permissões desse grupo são suficientes para executar o comando ou não.

Infelizmente não tenho ideia por onde começar. Todo o resto funciona até agora e só estou preso às permissões do Sudo. Pensei em mapear o campo gidNumber dos usuários para o campo gidNumber dos grupos, mas não sei se é possível mapear um campo de usuário para um campo de grupo.

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

map passwd field1 field2

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

Responder1

Desculpe pela postagem longa, mas parece funcionar. Acabei de cometer um erro de digitação no arquivo sudoers. Demorei um pouco para encontrá-lo, pois 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: percebi um pouco tarde, mas também mudei o seguinte em /etc/nsswitch.conf

sudoers:        ldap files

Só não achei que fosse a solução porque ainda tinha o erro de digitação do sudoers mencionado acima.

Problema resolvido :)

Responder2

eu fui comatribuindo grupos locais a usuáriosatravés do pam_group para obter a mesma funcionalidade. Em /etc/security/groups.confeu adicionei a seguinte linha

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

Portanto, qualquer usuário LDAP que pertença ao grupo LDAP administratorsé mapeado para os grupos locais adm, sudoe lpadminna caixa. Parece mais simples do que instalar sudo-ldap, a menos que esteja faltando alguma coisa?

informação relacionada