¿Cómo configurar correctamente el archivo sudoers en Debian Wheezy?

10

He visto muchas publicaciones de blog que dicen que es suficiente

aptitude install sudo
su root
adduser USERNAME sudo

Pero eso solo protege aptitude, en otras palabras:

  • aptitude install sendmaille pedirá una contraseña, debe sudoejecutaraptitude

  • apt-get install sendmailno pedirá contraseña, no se sudonecesitan privilegios

  • Si edita archivos protegidos, como los archivos etcque contiene no solicitará contraseña, no sudonecesita privilegios

  • Puede ejecutar y detener servicios como apache, no solicitará contraseña, no sudonecesita privilegios

¿Cómo arreglar esto? Este es mi archivo 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.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:$

# Host alias specification

# User alias specification

# Cmnd alias specification

Esta es la salida de sudo -l:

Matching Defaults entries for root on this host:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User root may run the following commands on this host:
    (ALL : ALL) ALL
    (ALL : ALL) ALL
Lynob
fuente
3
Después su root, inicia sesión como rootusuario, por lo que tiene acceso completo a todo. Para volver a ser un usuario habitual que tiene que usar sudopara operaciones privilegiadas, cierre la sesión del shell como root.
depquid
Soy nuevo en Linux, pero el wiki de Debian dice: adduser username sudo wiki.debian.org/sudo
AntiCZ

Respuestas:

16

No ha agregado ninguna regla de sudo, por lo que no puede usar sudo para nada.

El comando adduser USERNAME sudoagrega el usuario especificado al grupo llamado sudo. Debe existir un grupo con ese nombre; crearlo con addgroup sudosi no lo hace. Después de agregar al usuario al grupo, el usuario debe cerrar sesión y volver a iniciarla para que la membresía del grupo surta efecto.

sudoNo es un nombre de grupo especial. Es una convención permitir a los usuarios en el grupo llamado sudoejecutar comandos como root a través de la sudoutilidad. Esto requiere la siguiente línea en el sudoersarchivo:

%sudo ALL = (ALL) ALL

Ejecute visudopara editar el archivo sudoers, nunca lo edite directamente.

No tengo idea de por qué crees que "eso solo protege la aptitud". No hay nada especial en la aptitud. Una vez que haya autorizado a un usuario para ejecutar comandos como root, ese usuario puede ejecutar sudo aptitude …o sudo apt-get …o sudo service …, o sudoediteditar archivos que requieren permiso de root para editar. Estar en el archivo sudoers no cambia directamente los privilegios de su usuario, lo que hace es que le permite sudoejecutar comandos para ejecutar como root. Los comandos se ejecutan como root solo cuando los ejecuta sudo. Algunos programas pueden hacerlo automáticamente, especialmente los programas GUI donde la interfaz de usuario se ejecuta sin privilegios especiales y solo el backend se ejecuta como root, pero los comandos ejecutados como root siempre se ejecutan por sudo.

Gilles 'SO- deja de ser malvado'
fuente
Ha corrido sudo -lcomo root. Incluso si hay definiciones útiles para los usuarios, no se habrían mostrado. Por lo tanto, su suposición "No ha agregado ninguna regla de sudo" puede estar equivocada.
Hauke ​​Laging
@HaukeLaging No entiendo tu comentario. "No ha agregado ninguna regla de sudo" no es una suposición: el sudoersarchivo está en la pregunta.
Gilles 'SO- deja de ser malvado'
Estaba a punto de deprimirme, dándome cuenta de que estaba demasiado concentrado en la sudo -lsalida, pero por suerte ... Parece que el contenido de la pregunta no puede ser todo el archivo porque no es consistente con la salida. Al menos mi sudoversión no dice "El usuario root puede ejecutar los siguientes comandos" sudoerssin una definición de comando (como la de la pregunta).
Hauke ​​Laging
@HaukeLaging Tienes razón, lo verifiqué con wheezy y de hecho sudo -lsolo dice "El usuario root no puede ejecutar sudo en darkstar". Y el sudogrupo está en el archivo sudoers por defecto en wheezy. Las entradas requeridas pueden haberse movido a un archivo debajo /etc/sudoers.d. En cualquier caso, sea lo que sea que contenga el archivo sudoers, no haría lo que Fischer supone.
Gilles 'SO- deja de ser malvado'
4

Lo que pudo haber sucedido es: sudo está almacenando en caché su contraseña. Entonces, después de haber completado correctamente la implementación de sudo en su sistema, debe ingresar la contraseña para el primer comando, y luego se almacena en la memoria caché durante algún tiempo. Si eso sucede y ejecutas la secuencia

sudo aptitude install sendmail
sudo apt-get install sendmail

Luego, deberá proporcionar una contraseña en el primer comando, pero no en el segundo (al menos mientras esté dentro del tiempo de espera). Esto puede parecer que está protegiendo solo el primer comando, pero no el segundo. Sin más información (transcripciones de shell completas), no hay forma de saber ...

Josef
fuente
Si. El uno no excluye al otro. La respuesta correcta explica muy bien cómo configurar sudo correctamente y, en ese sentido, responde a la pregunta. No explica por qué, en palabras de la pregunta, "eso solo protege la aptitud". Gilles se escribe a sí mismo: "No tengo idea de por qué crees que" eso solo protege la aptitud "". Como dije, para comprender realmente ese fenómeno, se necesita más información. Creo que un voto negativo es un poco duro dado que mi respuesta es objetivamente correcta, aborda la pregunta original y llena un vacío en la respuesta existente.
Josef
Buena idea, esta puede ser la fuente de la confusión de Fischer.
Gilles 'SO- deja de ser malvado'
0

Si sigues la respuesta anterior, vas por el camino correcto. Al menos en mi Debian Jessie, hice un enlace suave a / usr / bin del comando en la ruta / sbin. Por ejemplo: / sbin / ifup, pongo un enlace suave (ln -s) a / usr / bin y puedo usarlo.

Otra cosa importante es poner NOPASSWD así:

User_Alias NET = goviedo
Cmnd_Alias ETH = /sbin/ifup
NET ALL = NOPASSWD:ETH
Gonzalo Oviedo
fuente