adicionando conteúdo local em /etc/sudoers.d/ em vez de modificar diretamente o arquivo sodoers via visudo

32

Você pode me indicar alguns exemplos e instruções mais detalhadas sobre /etc/sudoers.d/

Eu gostaria de dar permissão a algum grupo para sudo alguns comandos, mas de maneira adequada para não criar brechas desnecessárias no modelo de segurança do Ubuntu em uma máquina multiusuário.

Nos tempos antigos, eu fazia algumas personalizações simples de sudoers, mas aparentemente agora o /etc/sudoers.d/ é uma maneira mais adequada e eu gostaria de entender melhor.

Pawel Debski
fonte

Respostas:

43

Como essa pergunta diz, /etc/sudoersé um arquivo de configuração em todo o sistema que pode ser alterado automaticamente por atualizações do sistema e é altamente frágil para alterações impróprias. Você pode potencialmente perder o acesso ou tornar seu sistema não inicializável com uma alteração imprópria.

$ sudo cat /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#

(... some other content ...)

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

Ao contrário do que você poderia esperar, a #includedirdiretiva não é um comentário . Isso tem como efeito sudotambém ler e analisar quaisquer arquivos no /etc/sudoers.ddiretório (que não terminam em '~' ou contêm um caractere '.').

$ ls -l /etc/sud*
-r--r----- 1 root root  755 sty 20 17:03 /etc/sudoers

/etc/sudoers.d:
total 7
-r--r----- 1 root root 958 mar 30  2016 README
$ sudo cat /etc/sudoers.d/README
#
# As of Debian version 1.7.2p1-1, the default /etc/sudoers file created on
# installation of the package now includes the directive:
# 
#   #includedir /etc/sudoers.d
# 
# This will cause sudo to read and parse any files in the /etc/sudoers.d 
# directory that do not end in '~' or contain a '.' character.
# 
# Note that there must be at least one file in the sudoers.d directory (this
# one will do), and all files in this directory should be mode 0440.
# 
# Note also, that because sudoers contents can vary widely, no attempt is 
# made to add this directive to existing sudoers files on upgrade.  Feel free
# to add the above directive to the end of your /etc/sudoers file to enable 
# this functionality for existing installations if you wish!
#
# Finally, please note that using the visudo command is the recommended way
# to update sudoers content, since it protects against many failure modes.
# See the man page for visudo for more information.
#

Ao contrário /etc/sudoers, o conteúdo das /etc/sudoers.datualizações do sistema Survival, portanto, é preferível criar um arquivo lá do que modificá-lo /etc/sudoers.

Você pode editar arquivos neste diretório com o visudocomando:

$ sudo visudo -f /etc/sudoers.d/veracrypt
  GNU nano 2.5.3        File: /etc/sudoers.d/veracrypt.tmp                      

# Users in the veracryptusers group are allowed to run veracrypt as root.
%veracryptusers ALL=(root) NOPASSWD:/usr/bin/veracrypt

Observe que visudopode usar um editor diferente em vez do nanodescrito em https://help.ubuntu.com/community/Sudoers

Aqui estão mais alguns links que eu achei úteis:

Pawel Debski
fonte
4
Não é verdade que erros nos arquivos /etc/sudoers.dnão possam derrubar o sudo. Esses arquivos são concatenados para /etc/sudoers. As mesmas regras se aplicam a esses arquivos.
tobltobs
2
É isso mesmo que você pode derrubar o sistema por arquivos impróprios, no entanto, é menos provável. #includedir não é apenas uma simples concatenação estúpida - incluindo a verificação de algumas etapas, para que os erros mais óbvios sejam detectados e você possa recuperar facilmente. Tenha cuidado no entanto - você sempre pode se machucar com uma faca afiada, então lidar com isso com cuidado ;-)
Pawel Dębski
4
@RichardRiley consulte unix.stackexchange.com/questions/244064/…
Xunnamius