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 - de todo
Em vez disso, eu queria algo que
- armazena em cache as credenciais e o acesso sudo
- é gerenciado centralmente
A solução real está usando o SSSD e estendendo o esquema do AD. Dessa forma, o SSSD obtém as configurações do sudo e as credenciais do usuário periodicamente do AD e mantém um cache local delas. As regras sudo são então armazenadas em objetos AD, onde você pode restringir regras a computadores, usuários e comandos, até mesmo - tudo isso sem nunca tocar em um arquivo sudoers nas estações de trabalho.
O tutorial exato é muito longo para ser explicado aqui, mas você pode encontrar o guia passo-a-passo e alguns scripts para ajudar com a automação aqui:
- Integrando o Ubuntu ao Active Directory
TL; DR:
AD
Pegue a versão mais recente do sudo , obtenha o arquivo doc / schema.ActiveDirectory e, em seguida, importe-o (certifique-se de modificar o caminho do domínio de acordo com o nome do seu 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 com ADSI Edit: abra o contexto de nomeação Schema e procure pela classe sudoRole .
Agora, crie a UO sudoers em sua raiz de domínio. Essa UO manterá todas as configurações de sudo para todas as suas estações de trabalho Linux. Sob essa OU, crie um objeto sudoRole. Para criar o objeto sudoRole, é necessário usar o ADSI Edit, mas, depois de criado, você pode usar Usuários e Computadores do Active Directory para modificá-lo.
Vamos supor que eu tenha um computador chamado foo32linux , um usuário chamado stewie.griffin e eu quero deixá-lo executar todos os comandos com o sudo nessa composição. Nesse caso, eu crio um objeto sudoRole sob a UO sudoers . Para o sudoRole você pode usar qualquer nome que quiser - eu mantenho o nome do computador, já que eu uso regras por computador. Agora defina seus atributos da seguinte forma:
-
sudoHost : foo32linux
-
sudoCommand : ALL
-
sudoUser : stewie.griffin
Para os 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 reinicializar o computador. Em seguida, faça o login com o usuário AD e verifique:
sudo -l
Ele deve listar todas as entradas relacionadas adicionadas ao usuário e ao computador. Fácil-peasy!