O problema com as outras sugestões é que
- eles só funcionam quando você tem acesso à LAN corporativa (ou VPN)
- você precisa manter o arquivo sudoers em todos os computadores o tempo todo
- como bônus, eles não funcionaram para mim -
Em vez disso, eu queria algo que
- armazena em cache as credenciais e o acesso sudo
- é gerenciado centralmente
A solução real está usando SSSD e estendendo o esquema do AD. Dessa maneira, o SSSD busca configurações do sudo e credenciais do usuário periodicamente no AD e mantém um cache local delas. As regras do sudo são então armazenadas nos objetos do AD, onde você pode restringir as regras para computadores, usuários e comandos - tudo isso sem nunca tocar em um arquivo do sudoers nas estações de trabalho.
O tutorial exato é longo demais para ser explicado aqui, mas você pode encontrar o guia passo a passo e alguns scripts para ajudar na automação aqui:
TL; DR:
DE ANÚNCIOS
Pegue a versão mais recente do sudo , obtenha o arquivo doc / schema.ActiveDirectory e importe-o (certifique-se de modificar o caminho do domínio de acordo com o seu nome de domínio):
ldifde -i -f schema.ActiveDirectory -c "CN=Schema,CN=Configuration,DC=X" "CN=Schema,CN=Configuration,DC=ad,DC=foobar,DC=com" -j .
Verifique-o com o ADSI Edit: abra o contexto de nomenclatura do esquema e procure a classe sudoRole .
Agora crie a UO sudoers na raiz do seu domínio, esta UO manterá todas as configurações do sudo para todas as suas estações de trabalho Linux. Sob esta UO, crie um objeto sudoRole. Para criar o objeto sudoRole, você precisa usar o ADSI Edit, mas, uma vez criado, você pode usar Usuários e Computadores do Active Directory para modificá-lo.
Vamos supor que eu tenho um computador chamado foo32linux , um usuário chamado stewie.griffin e eu quero que ele execute todos os comandos com o sudo nesse comp. Nesse caso, eu crio um objeto sudoRole na UO sudoers . Para o sudoRole, você pode usar qualquer nome que desejar - eu continuo com o nome do computador, pois uso regras por computador. Agora defina seus atributos da seguinte maneira:
- sudoHost : foo32linux
- sudoCommand : ALL
- sudoUser : stewie.griffin
Para comandos, você também pode usar entradas específicas, como / bin / less ou qualquer outra coisa.
SSSD
Adicione ao seu /etc/sssd/sssd.conf , pelo menos:
[sssd]
services = nss, pam, sudo
[domain/AD.FOOBAR.COM]
cache_credentials = True
O SSSD atualiza seu cache local com as regras atualizadas a cada poucas horas, mas a maneira mais simples de testá-lo é apenas reiniciar o computador. Em seguida, efetue login com o usuário AD e verifique:
sudo -l
Ele deve listar todas as entradas relacionadas que você adicionou a esse usuário e computador. Mole-mole!
%Domain^Admins ALL=(ALL) ALL