Adicionar usuário do domínio AD aos sudoers na linha de comando

10

Estou configurando uma VM do servidor Ubuntu 11.04 para uso como servidor de banco de dados. Tornaria a vida de todos mais fácil se pudéssemos fazer o login das pessoas usando credenciais do Windows e talvez até fazer a máquina funcionar com a segurança atual baseada em AD que temos em outro lugar.

A primeira parte disso foi realmente fácil de realizar - apt-get install likewise-opene eu estava praticamente nos negócios. O problema que estou enfrentando é colocar nossos administradores nos grupos de sudoers - não consigo obter nada para levar. Eu tentei:

a) usermod -aG sudoers [username]
b) adicionando os nomes de usuário em vários formatos (DOMÍNIO \ usuário, usuário @ domínio) ao arquivo sudoers.

Nada disso pareceu levar, ainda me disseram "DOMAIN \ user não está no arquivo sudoers. Este incidente será relatado".

Então, como adiciono usuários não locais aos sudoers?

Wyatt Barnett
fonte

Respostas:

6

Encontro esse problema e aqui está minha solução:

Editar /etc/sudoers: com as seguintes entradas

Primeiro verifique o usuário usando o ID do comando

#id <AD user>( #id domain\\aduser01 )

Resultados nos meus:

SMB\aduser01@linux01:~/Desktop$ id smb\\aduser02
uid=914883676(SMB\aduser02) gid=914883073(SMB\domain^users) groups=914883073(SMB\domain^users),1544(BUILTIN\Administrators),1545(BUILTIN\Users),914883072(SMB\domain^admins)

getent passwde gid NUMBERSnão funciona para mim. DOMAIN\\domain^usersfunciona para mim

%SMB\\domain^users ALL=(ALL) ALL

como todos sabemos, o usuário individual do AD também funciona

SMB\\<aduser01> ALL=(ALL) ALL
Jao Madn
fonte
2

temos um nome de domínio longo com sufixo .local,

mais perto do

%domainname\\group ALL=(ALL) ALL

nem o

%domainname.local\\group ALL=(ALL) ALL

trabalhou ...

mas se eu usar apenas o nome do grupo assim:

%Domain^Admins ALL=(ALL) ALL

funciona.

user387622
fonte
Esta foi a solução que funcionou no final. %Domain^Admins ALL=(ALL) ALL
Mjp
2

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!

bviktor
fonte
1
Pode demorar, mas, como os links se tornam inválidos, é regra que as partes essenciais sejam incluídas aqui, com o link para referência.
TheWanderer
Na verdade, eu adicionei as partes essenciais, ou seja, o conceito. Eu poderia escolher outras partes, mas elas são inúteis sem o resto e sem entender o quadro geral, então não entendo o ponto. Faria mais mal do que bem.
bviktor
é uma regra do AskUbuntu que alguém que vem junto precise ser capaz de analisar sua resposta e resolver o problema sem precisar acessar um site externo.
TheWanderer
1
Adicionadas informações mais relevantes.
bviktor
1

A melhor informação que pude encontrar sobre o assunto está aqui:

http://www.mail-archive.com/[email protected]/msg00572.html

Ele basicamente pede que você modifique seu /etc/sudoersarquivo com a configuração correta para permitir que as pessoas no grupo de seu administrador no AD tenham acesso a todos os privilégios.

Se você precisar ser seletivo e restringir pelo usuário, também poderá fazê-lo. Mas ele avisa que você deve ter certeza de descobrir qual é o nome do usuário no sistema linux usando o getend passwdcomando conforme mostrado.

Martin Owens -doctormo-
fonte
Obrigado realmente não conseguia descobrir onde procurar. Para o registro, DOMIAN \\ username funciona para indivíduos.
Wyatt Barnett
0

Usando o Centify direct , adicionei usuário de domínio ao arquivo / etc / sudoers.

(Usuário do domínio) ALL = (ALL) ALL

user160720
fonte
0

Eu uso o comando comum

sudo usermod -a -G sudo DOMAIN\username 

e substitua DOMAIN\userpor DOMAIN\\\username.

Paramanand Dubey
fonte