Agregar el esquema Sudoers desde un archivo .ldif

Descargamos sudo.ldif y lo copiamos a /opt/sudo.ldif

dn: cn=sudo,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: sudo
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.1 NAME 'sudoUser' DESC 'User(s) who may  run sudo' EQUALITY caseExactIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.2 NAME 'sudoHost' DESC 'Host(s) who may run sudo' EQUALITY caseExactIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.3 NAME 'sudoCommand' DESC 'Command(s) to be executed by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.4 NAME 'sudoRunAs' DESC 'User(s) impersonated by sudo (deprecated)' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.5 NAME 'sudoOption' DESC 'Options(s) followed by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.6 NAME 'sudoRunAsUser' DESC 'User(s) impersonated by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.7 NAME 'sudoRunAsGroup' DESC 'Group(s) impersonated by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcObjectClasses: ( 1.3.6.1.4.1.15953.9.2.1 NAME 'sudoRole' SUP top STRUCTURAL DESC 'Sudoer Entries' MUST ( cn ) MAY ( sudoUser $ sudoHost $ sudoCommand $ sudoRunAs $ sudoRunAsUser $ sudoRunAsGroup $ sudoOption $ description ) )

Importamos el esquema a nuestra base Ldap

ldapadd -Y EXTERNAL -H ldapi:/// -f /opt/sudo.ldif
service slapd restart

Generamos una Unidad Organizacional y la configuración para el usuario Usuario1

##########################################
# ARCHIVO /opt/crearSudoers.ldif 
##########################################
dn: ou=Sudoers,dc=midominio,dc=com,dc=ar
objectClass: organizationalUnit
ou: Sudoers
 
dn: cn=defaults,ou=Sudoers,dc=midominio,dc=com,dc=ar
objectClass: top
objectClass: sudoRole
cn: defaults
description: Default sudoOption's go here
sudoOption: env_keep+=SSH_AUTH_SOCK
 
dn: cn=seguridad,ou=Sudoers,dc=midominio,dc=com,dc=ar
cn: seguridad
objectclass: top
objectclass: sudoRole
sudocommand: /sbin/iptables -L -n
sudohost: ALL
sudouser: usuario1

Agregamos dicha estructura al Ldap

ldapadd -x -D cn=admin,dc=midominio,dc=com,dc=ar -W -f /opt/crearSudoers.ldif

Debería quedar algo similar a la siguiente captura

Captura de pantalla de 2014-09-10 13:10:59

Configuracion del lado del cliente

Instalamos el sudo modificado para ldap, para esto debemos permitir que se elimine sudo

export SUDO_FORCE_REMOVE=yes
apt-get install sudo-ldap

Si ejecutamos sudo -V como root, vemos sus parámetros aplicados, buscamos “–with-ldap-conf-file=NOMBRE_ARCHIVO” (en mi caso /etc/sudo-ldap.conf) que es de donde toma el archivo de configuración y creamos un enlace simbolico a /etc/ldap.conf

ln -s /etc/ldap.conf /etc/sudo-ldap.conf

Definimos el path donde se encuentra la UO de sudoers agregando la siguiente linea en /etc/ldap.conf

sudoers_base ou=Sudoers,dc=midominio,dc=com,dc=ar
sudoers_debug 1

Solo falta modificar la configuración del nsswitch (en /etc/nsswitch.conf) para que busque primero en el archivo /etc/sudoers y en caso de no existir en el directorio Ldap.

sudoers: files ldap