agregar contenido local en /etc/sudoers.d/ en lugar de modificar directamente el archivo sodoers a través de visudo

32

¿Puede por favor dirigirme a algunos ejemplos e instrucciones más detalladas en /etc/sudoers.d/

Me gustaría dar permiso a algunos grupos para sudo algunos comandos, pero de manera adecuada para no crear lagunas innecesarias en el modelo de seguridad de Ubuntu en una máquina multiusuario.

En la antigüedad hice algunas personalizaciones simples de sudoers, pero aparentemente ahora /etc/sudoers.d/ es una forma más adecuada y me gustaría entenderlo mejor.

Pawel Debski
fuente

Respuestas:

43

Como dice esta pregunta , /etc/sudoerses un archivo de configuración de todo el sistema que se puede cambiar automáticamente por las actualizaciones del sistema y es muy frágil a cambios inadecuados. Potencialmente, puede perder el acceso o hacer que su sistema no se pueda iniciar con un cambio incorrecto.

$ 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

Al contrario de lo que cabría esperar, la #includedirdirectiva no es un comentario . Tiene el efecto de hacer sudoque también lea y analice cualquier archivo en el /etc/sudoers.ddirectorio (que no termine en '~' o contenga un carácter '.').

$ 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.
#

A diferencia de /etc/sudoerslos contenidos de las /etc/sudoers.dactualizaciones del sistema de supervivencia, por lo que es preferible crear un archivo allí que modificarlo /etc/sudoers.

Es posible que desee editar archivos en este directorio con el 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

Tenga en cuenta que visudopuede utilizar un editor diferente en lugar de nanolo descrito en https://help.ubuntu.com/community/Sudoers

Aquí hay algunos enlaces más que encontré útiles:

Pawel Debski
fuente
44
No es cierto que los errores en los archivos /etc/sudoers.dno puedan derribar sudo. Esos archivos están concatenados a /etc/sudoers. Las mismas reglas se aplican a esos archivos.
tobltobs
2
Así es que PUEDE derribar el sistema mediante un archivo incorrecto, sin embargo, es MENOS PROBABLE. #includedir no es simplemente una simple concatenación estúpida, si bien se incluyen algunas comprobaciones para que se detecten los errores más obvios y se pueda recuperar fácilmente. Sin embargo, tenga cuidado: siempre puede lastimarse con un cuchillo afilado, así que
manipúlelo
44
@RichardRiley ver unix.stackexchange.com/questions/244064/…
Xunnamius