Entenda o relacionamento entre sudo, sudoers e sudoers.d

Publicado por Silvio Bonilha em 19/09/2012

[ Hits: 14.972 ]

Blog: https://www.facebook.com/BMfiloinfo/

 


Entenda o relacionamento entre sudo, sudoers e sudoers.d



Pessoal, utilizo o Ubuntu 12.04 e me deparei com uma situação em que o comando sudo retornou com a informação de que o usuário com o qual eu estava logado não estaria no grupo "sudoers".

Isto aconteceu e não sei exatamente o motivo, talvez por causa da atualização do sistema. Recorri às algumas orientações pela Internet, inclusive tutoriais de ajuda no Viva o Linux.

Como resolver este o problema?

Então, descobri que a partir do sudo versão 1.7.2p1-1, o padrão do arquivo /etc/sudoers havia sido modificado, e que a versão 1.8.5p2-1 estaria com bug (talvez esta seja a versão que eu tenha recebido na atualização).

A alteração inclui um diretório com o nome sudoers.d, e este diretório é relacionado no arquivo "sudoers" na linha 28, como segue:

# Includedir /etc/sudoers.d

A linha vem, por padrão, comentada. Ao descomentar esta linha, o sistema forçará o sudo para ler e analisar todos os arquivos no diretório /etc/sudoers.d.

Este diretório não deve terminar com '~' e/ou conter um '.', o que impediria a sua leitura.

Note que deve existir pelo menos um arquivo no diretório /etc/sudoers.d, e todos os arquivos deste diretório devem ter a permissão "0440".

Ou seja, se executado o comando ls -la, as permissões do arquivo aparecerão conforme o exemplo:

-r--r-----

É de suma importância que o diretório e seus arquivos sejam protegidos com a permissão "0440".

Entendi que a ideia é fazer as alterações necessárias para usuários "sudo" neste diretório, não tendo necessidade de alterar o arquivos "/etc/sudoers", mas tudo indica que o bug permanece.

Entretanto, não há necessidade de utilizarmos esse diretório "/etc/sudoers.d", você pode continuar atribuindo as permissões no próprio arquivo /etc/sudoers.

Resolvi meu problema da seguinte forma:

1. Entrei com usuário root, usando:

su - root

2. Digitei a senha de root, editei o arquivo /etc/sudoers, para estes casos utilizo o Nano, mas poderia ser utilizado o Vim ou o Vi e também o GEdit, vai da sua preferência.

3. Incluí no arquivo "/etc/sudoers", abaixo da linha que inicia com "root", o meu "login name", como no exemplo abaixo:

root    ALL=(ALL:ALL) ALL
login_name    ALL=(ALL:ALL) ALL

Desta forma, resolvi o caso.

Acredito que não seja somente importante resolver os problemas, mas também entendê-los.

Outras dicas deste autor

Moodle no Ubuntu Server 14.04 - "Extensão php curl deve ser instalado e habilitado Ubuntu" [Resolvido]

Programação para Arduino

Como corrigir erro na instalação do TeamViewer (ttf-mscorefonts-installer)

Instalação de Java para uso com banco Itaú

Leitura recomendada

Configurando rede no Debian

Inicialização em modo texto puro - Red Hat/Fedora

Instalando temas no KDE

Teclado sem pipe (barra vertical) [Resolvido]

Applet de rede no Gnome 3 (ArchLinux)

  

Comentários
[1] Comentário enviado por lcavalheiro em 19/09/2012 - 14:49h

Pra fazer isso com mais segurança você tem que usar o comando visudo, seja invocando-o como root (# visudo) ou com o sudo ($ sudo visudo). Editar diretamente o arquivo é gambiarra e das perigosas.

[2] Comentário enviado por bonilhasilvio em 19/09/2012 - 15:34h

lcavalheiro, obrigado pela contribuição. No meu caso o sudo estava sendo bloqueado, conforme citei no inicio do meu texto, por esse motivo é que utilizei o recurso indicado.

[3] Comentário enviado por lcavalheiro em 19/09/2012 - 15:36h

Eu te entendo, mas o visudo não queria rodar nem como root? Se for este o caso, ainda tem um caroço nesse seu angu...

[4] Comentário enviado por albfneto em 19/09/2012 - 15:59h

boa dica.favoritada

[5] Comentário enviado por bonilhasilvio em 19/09/2012 - 16:17h

lcavalheiro, vamos entender sua preocupação.
O arquivo "/etc/sodoers" é responsável para dar privilégio de root para outros usuários, obviamente é um arquivo de suma importância. O recurso "visudo" edita o "sodoers" criando um arquivo temporário. O "visudo" analisa esse arquivo temporário e se houver erro no script o usuário será informado desse erro antes de concluir definitivamente as alterações no arquivo "sodoers". Por esse motivo a melhor escolha seria o uso do "visudo". Fora isso, não há caroço, nem angu.

[6] Comentário enviado por albfneto em 23/09/2012 - 22:46h

apenas uma curiosidade minha de leigo, pq sou usuario de desktops meus apenas, mesmo na fac, não administro rede, nem intranet.

então meus sudoers , minhas senhas de root e user são só minhas, do meu micro,onde eu coloquei linux.

Para quem administra redes, e nenhum usuario comum terá uma senha de root.

não seria interessante que além de só editar com visudo, o arquivo sudoers seja escondido, hidden, para que ninguém tente editá-lo, ou ele fica só nos servidores, e não no terminais dos users normais?

e se o user normal fizer "sudo su"? não fica root?

[7] Comentário enviado por bonilhasilvio em 24/09/2012 - 12:02h

albfneto,
Não sei se entendi direito sua dúvida, mas vamos lá:
primeiro - o sudoers não está relacionado a um usuário e sim a um sistema.
segundo - o administrador de rede é um usuário que sabe a senha de root do servidor e das estações. Se temos somente desktop (desconectado de rede), pelo menos um usuário desse desktop deve ser o administrador do sistema, portanto deve ter senha de root. Em diversas distros a senha de root será a mesma do usuário que instalou o sistema. O usuário root pode criar outros usuários que não tenham privilégio de root e portanto não poderão usar o recurso "sudo".
terceiro - o sudoers é o módulo que determina quais usuários devem possuir os privilégios de usuário root ou recursos "sudo".
quarto - só poderão alterar o arquivo sudoers usuários que tenham privilégio de root, pois esse arquivo deve ser de propriedade do root e protegido com permissão "0440", ou seja, apenas para leitura. Não há necessidade de que seja um arquivo "hidden". Se for colocado como arquivo "hidden", muito provável que o usuário não consiga mais acessar com direitos de root. Se for o caso faça uma experiência em uma máquina virtual.
quinto: para se tornar usuário com permissões de root não basta digitar na linha de comando "sudo su", para isso precisa-se da senha de root.
OBS: Lembre-se que, por padrão, ao digitar a senha para sudo ela permanecerá ativa por 5 minutos.
Na dúvida leia o manual do "sudoers"
https://www.sudo.ws/sudo/sudoers.man.html



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts