Entenda o relacionamento entre sudo, sudoers e sudoers.d

Publicado por Silvio Bonilha em 19/09/2012

[ Hits: 15.489 ]

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]

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

Programação para Arduino

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

Leitura recomendada

GAIM com suporte a SSL no Slackware

Configuração no Nagios 3 para adicionar comentários aos hosts

Bug no Wayland do Fedora 25

Mostrar ou ocultar ícones na Área de Trabalho do Debian MATE

Cedilha (ç) não funciona no Debian 10 Buster

  

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