El problema con las otras sugerencias es que
- solo funcionan cuando tienes acceso a la LAN corporativa (o VPN)
- tienes que mantener el archivo sudoers en cada computadora todo el tiempo
- como beneficio adicional, no funcionaron para mí, en absoluto
En cambio, quería algo que
- almacena en caché tanto las credenciales como el acceso a sudo
- se gestiona de forma centralizada
La solución real es usar SSSD y extender el esquema AD. De esta forma, SSSD obtiene periódicamente configuraciones de sudo y credenciales de usuario de AD y mantiene una memoria caché local de ellas. Las reglas de sudo se almacenan en objetos AD, donde puede restringir las reglas a computadoras, usuarios y comandos, incluso, todo eso sin siquiera tocar un archivo de sudoers en las estaciones de trabajo.
El tutorial exacto es demasiado largo para explicarlo aquí, pero puede encontrar la guía paso a paso y algunos scripts para ayudar con la automatización aquí:
TL; DR:
ANUNCIO
Obtenga la última versión de sudo , obtenga el archivo doc / schema.ActiveDirectory , luego impórtelo (asegúrese de modificar la ruta del dominio de acuerdo con su nombre de dominio):
ldifde -i -f schema.ActiveDirectory -c "CN=Schema,CN=Configuration,DC=X" "CN=Schema,CN=Configuration,DC=ad,DC=foobar,DC=com" -j .
Verifíquelo con ADSI Edit: abra el contexto de nomenclatura de Schema y busque la clase sudoRole .
Ahora cree la unidad organizativa sudoers en la raíz de su dominio, esta unidad organizativa contendrá todas las configuraciones de sudo para todas sus estaciones de trabajo Linux. Debajo de esta unidad organizativa, cree un objeto sudoRole. Para crear el objeto sudoRole, debe usar ADSI Edit, pero una vez creado, puede usar Usuarios y equipos de Active Directory para modificarlo.
Supongamos que tengo una computadora llamada foo32linux , un usuario llamado stewie.griffin y quiero permitirle ejecutar todos los comandos con sudo en esa comp. En este caso, creo un objeto sudoRole debajo de la unidad organizativa sudoers . Para el sudoRole puede usar el nombre que desee: me quedo con el nombre de la computadora ya que uso las reglas por computadora. Ahora establezca sus atributos de la siguiente manera:
- sudoHost : foo32linux
- sudoCommand : ALL
- sudoUser : stewie.griffin
Para los comandos, también puede utilizar entradas específicas, como / bin / less o lo que sea.
SSSD
Agregue a su /etc/sssd/sssd.conf , al menos:
[sssd]
services = nss, pam, sudo
[domain/AD.FOOBAR.COM]
cache_credentials = True
SSSD actualiza su caché local con las reglas actualizadas cada pocas horas, pero la forma más sencilla de probarlo es simplemente reiniciar la computadora. Luego inicie sesión con el usuario de AD y verifique:
sudo -l
Debería enumerar todas las entradas relacionadas que agregó a ese usuario y computadora. ¡Pan comido!
%Domain^Admins ALL=(ALL) ALL