Differences between revisions 21 and 22
Revision 21 as of 2020-07-22 13:23:24
Size: 10532
Editor: fioddor
Comment: Se alinea con la versión 47 en inglés del 02 de febrero de 2020.
Revision 22 as of 2020-07-22 13:30:37
Size: 10560
Editor: fioddor
Comment: marca tecnicismos
Deletions are marked like this. Additions are marked like this.
Line 10: Line 10:
~+Sudo+~ es un programa diseñado para facilitar a los administradores del sistema permitir a algunos usuarios ejecutar órdenes como [[root]] (u otro usuario). La filosofía básica es permitir a las personas realizar su trabajo otorgandoles los mínimos privilegios posibles. Sudo también es una vía efectiva para registrar quien ejecutó tal orden y cuando. ~+Sudo+~ es un programa diseñado para facilitar a los administradores del sistema permitir a algunos usuarios ejecutar órdenes como [[root]] (u otro usuario). La filosofía básica es permitir a las personas realizar su trabajo otorgándoles los mínimos privilegios posibles. Sudo también es una vía efectiva para registrar quien ejecutó tal orden y cuando.
Line 14: Line 14:
Usar {{{sudo}}} es más seguro que abrir una sesión de root por varias razones, algunas son:

 * Nadie necesita conocer la contraseña de root y por omisión {{{sudo}}} solicita la contraseña del usuario actual. Sudo permite ceder temporalmente privilegios adicionales a usuarios específicos y luego quitárselos sin necesidad de cambiar la contraseña.
Usar {{{sudo}}} es más seguro que abrir una sesión de `root` por varias razones, algunas son:

 * Nadie necesita conocer la contraseña de `root` y por omisión {{{sudo}}} solicita la contraseña del usuario actual. Sudo permite ceder temporalmente privilegios adicionales a usuarios específicos y luego quitárselos sin necesidad de cambiar la contraseña.
Line 20: Line 20:
Por estas razones, escalar a root usando {{{sudo -i}}} o {{{sudo su}}} debería caer en desuso porque cancela lo anteriormente indicado. Por estas razones, escalar a `root` usando {{{sudo -i}}} o {{{sudo su}}} debería caer en desuso porque cancela lo anteriormente indicado.
Line 54: Line 54:
Alternativamente se puede escalar primero a root (Por ej.: `sudo su -`) y a continuación ejecutar las órdenes sin el prefijo `sudo`: Alternativamente se puede escalar primero a `root` (Por ej.: `sudo su -`) y a continuación ejecutar las órdenes sin el prefijo `sudo`:
Line 69: Line 69:
En Debian Squeeze, si se le da a root una contraseña vacía durante su instalación, se instalará {{{sudo}}} y el primer usuario podrá emplearlo para escalar a permisos de root (se le añade al grupo '''sudo'''). El sistema configurará también {{{gksu}}} y {{{aptitude}}} para emplear {{{sudo}}}. Aún así [[#Verificar_la_pertenencia_a_sudo|compruebe si su membresía es efectiva]]] tras ingresar con el usuario creado durante la instalación. En Debian Squeeze, si se le da a `root` una contraseña vacía durante su instalación, se instalará {{{sudo}}} y el primer usuario podrá emplearlo para escalar a permisos de `root` (se le añade al grupo '''sudo'''). El sistema configurará también {{{gksu}}} y {{{aptitude}}} para emplear {{{sudo}}}. Aún así [[#Verificar_la_pertenencia_a_sudo|compruebe si su membresía es efectiva]]] tras ingresar con el usuario creado durante la instalación.
Line 79: Line 79:
(o escalar primero a root como en la sección anterior). A continuación ingrese con el usuario nuevo y [[#Verificar_la_pertenencia_a_sudo|compruebe si su membresía es efectiva]]]. (o escalar primero a `root` como en la sección anterior). A continuación ingrese con el usuario nuevo y [[#Verificar_la_pertenencia_a_sudo|compruebe si su membresía es efectiva]]].
Line 88: Line 88:
# Este archivo TIENE que editarse como root mediante la orden 'visudo'. # Este archivo TIENE que editarse como 'root' mediante la orden 'visudo'.
Line 112: Line 112:
# Regla por omisión para root. # Regla por omisión para 'root'.
Line 168: Line 168:
Sí, el archivo {{{/etc/sudoers}}} esta protegido contra escritura intencionadamente, ¡incluso para root! Sí, el archivo {{{/etc/sudoers}}} esta protegido contra escritura intencionadamente, ¡incluso para `root`!
Line 174: Line 174:
Si al hacer {{{sudo}}} surgen problemas y $HOME (y los ajustes del perfil) no funciona como se espera porque el nuevo HOME es /root, sepa que la configuración de {{{sudo}}} en Squeeze restablece todas las variables de entorno. Para restablecer el comportamiento anterior de mantener la variable de entorno $HOME del usuario se puede añadir esto al archivo de configuración {{{/etc/sudoers}}}: Si al hacer {{{sudo}}} surgen problemas y `$HOME`(y los ajustes del perfil) no funciona como se espera porque el nuevo `HOME` es {{{/root}}}, sepa que la configuración de `sudo` en Squeeze restablece todas las variables de entorno. Para restablecer el comportamiento anterior de mantener la variable de entorno $HOME del usuario se puede añadir esto al archivo de configuración {{{/etc/sudoers}}}:
Line 182: Line 182:
Si se quiere exigir la contraseña de root para emplear sudo en vez de la del usuario se puede añadir la linea: Si se quiere exigir la contraseña de `root` para emplear sudo en vez de la del usuario se puede añadir la linea:

Translation(s): العربية - English - Español - Français - Italiano - Русский

(!) ?Discussion


Root > sudo


Sudo es un programa diseñado para facilitar a los administradores del sistema permitir a algunos usuarios ejecutar órdenes como root (u otro usuario). La filosofía básica es permitir a las personas realizar su trabajo otorgándoles los mínimos privilegios posibles. Sudo también es una vía efectiva para registrar quien ejecutó tal orden y cuando.

¿Porque sudo?

Usar sudo es más seguro que abrir una sesión de root por varias razones, algunas son:

  • Nadie necesita conocer la contraseña de root y por omisión sudo solicita la contraseña del usuario actual. Sudo permite ceder temporalmente privilegios adicionales a usuarios específicos y luego quitárselos sin necesidad de cambiar la contraseña.

  • Es fácil ejecutar mediante sudo únicamente órdenes que requieren privilegios especiales y trabajar el resto del tiempo como usuario sin privilegios. Esto reduce los daños que pueda causar un error.

  • A efectos de auditoría y registro, cuando se ejecuta sudo se registran el nombre original del usuario y la orden.

Por estas razones, escalar a root usando sudo -i o sudo su debería caer en desuso porque cancela lo anteriormente indicado.

Usuarios y sudo

La configuración por omisión de Debian permite a los usuarios del grupo sudo ejecutar cualquier orden mediante el prefijo sudo.

Verificar la pertenencia a sudo

Un usuario puede comprobar si pertenece o no a un grupo sudo usando las órdenes id o groups. Por ej., el usario foo debería ver una respuesta a

  • $ groups

como

  • foo sudo

Si sudo no consta en la respuesta es que no es miembro del grupo. Análogamente, la orden id debería producir una respuesta más completa y variable con esta pinta:

  • uid=1001(foo) gid=1001(foo) groups=1001(foo),27(sudo)

Agregar un usuario existente al grupo mediante la línea de órdenes

Para agregar al usuario existente foo al gruposudo:

  • $ sudo adduser foo sudo

Alternativamente se puede escalar primero a root (Por ej.: sudo su -) y a continuación ejecutar las órdenes sin el prefijo sudo:

  • # adduser foo
    # adduser foo sudo

El sistema lee los grupos de cada usuario al ingresar por lo que tras añadirle a un grupo el usuario tiene que salir y reingresar para hacer efectiva su nueva membresía. Es frecuente que la gente se añada a si misma a un grupo y experimente problemas porque se le olvida reingresar y el sistema no se entera. Compruebe si su membresía es efectiva.

Crear usuarios con sudo

También se pueden crear usuarios a la vez que se les agrega al grupo sudo:

Crear un usuario nuevo al instalar el sistema operativo

En Debian Squeeze, si se le da a root una contraseña vacía durante su instalación, se instalará sudo y el primer usuario podrá emplearlo para escalar a permisos de root (se le añade al grupo sudo). El sistema configurará también gksu y aptitude para emplear sudo. Aún así compruebe si su membresía es efectiva] tras ingresar con el usuario creado durante la instalación.

Crear un usuario nuevo desde la línea de órdenes

Un usuario del grupo sudo puede crear otro (por ejemplo otrousuario) e ingresarle al mismo tiempo en el grupo sudo desde la línea de órdenes:

  • $ sudo adduser otrousuario -G sudo

(o escalar primero a root como en la sección anterior). A continuación ingrese con el usuario nuevo y compruebe si su membresía es efectiva].

Resumen de configuración

Si desea permitir a ciertos usuarios ejecutar determinados programas, este es un ejemplo rápido (para mas información lea el estupendo manual).

# /etc/sudoers
#
# Este archivo TIENE que editarse como 'root' mediante la orden 'visudo'.
#
# Lea la página man para más detalles sobre cómo redactar un archivo 'sudoers'.
#

Defaults        env_reset

# Especificación del alias del host
User_Alias      MYADMINS = jdoe

# Especificación del alias del usuario

# Especificación del alias de Cmnd
Cmnd_Alias      SHUTDOWN = /sbin/reboot, /sbin/poweroff
Cmnd_Alias      PKGMGMT = /usr/bin/dpkg, /usr/bin/apt-get, /usr/bin/aptitude

# Especificación de los privilegios del usuario

# Los usuarios listados arriba (MYADMINS) pueden ejecutar el administrador de paquetes y reiniciar el sistema.
MYADMINS ALL = PKGMGMT, SHUTDOWN

# Los usuarios del grupo wheel pueden ejecutar cualquier orden suplantando a cualquier usuario.
#%wheel ALL= ALL

# Regla por omisión para 'root'.
root    ALL=(ALL) ALL

Problemas y consejos

PATH no establecido

Un error típico al instalar un paquete podría mostrar:

dpkg: warning: 'ldconfig' not found in PATH or not executable.
dpkg: warning: 'start-stop-daemon' not found in PATH or not executable.
dpkg: error: 2 expected programs not found in PATH or not executable.
Note: root's PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin.

El archivo /etc/sudoers empaquetado contiene esta linea:

Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

Las versiones anteriores no incluyeron esa linea. Si la máquina tenía un /etc/sudoers modificado localmente (como la mayoría) y luego se actualizó el sistema manteniéndolo, esta nueva línea necesaria faltará. La línea hace que al emplear sudo no se cambie el PATH y con toda probabilidad el PATH no se establezca adecuadamente y le falten los directorios del sistema. La solución es combinar nuestros cambios locales con el nuevo archivo /etc/sudoers del paquete. O mejor llevar tus cambio locales al nuevo /etc/sudoers.d/ con un nombre único como /etc/sudoers.d/sudoers-locales. Ver 639841 para más detalles.

Lo sentimos, el usuario jdoe no tiene permitido ejecutar...

Una sesión típica es similar a esta:

  • $sudo test
    
    We trust you have received the usual lecture from the local System
    Administrator. It usually boils down to these three things:
    
        #1) Respect the privacy of others.
        #2) Think before you type.
        #3) With great power comes great responsibility.
    
    [sudo] password for jdoe: 
    Sorry, user jdoe is not allowed to execute '/usr/bin/test' as root on localhost.

El mensaje significa lo que dice: el usuario no tiene permitido ejecutar esa orden en esa máquina. Una razón para la confusión sobre esto es que el administrador acaba de añadir al usuario jdoe a un grupo privilegiado, pero el usuario continúa usando una sesión vieja, que no tiene la nueva información de los grupos, y por supuesto no tiene los derechos de sudo. Se suele recomendar a la gente que salga y vuelva a entrar al sistema, aunque a veces suele bastar con un reinicio de sesión in situ mediante su - $USER.

La directiva include

El archivo estándar /etc/sudoers en Squeeze finaliza con la línea:

  •  #includedir /etc/sudoers.d

Esto hace posible a otros paquetes proveer fragmentos en /etc/sudoers.d/<nombre_del_paquete> que modifican la configuración de sudo. Puede parecer que se deba eliminar el signo ("almohadilla" o "hashtag"), pero ¡no, el '#' es parte de la directiva!

El archivo sudoers está protegido contra escritura

Sí, el archivo /etc/sudoers esta protegido contra escritura intencionadamente, ¡incluso para root!

La explicación habitual es que se configuró así para asegurar que los administradores sólo lo editen mediante la orden visudo. Sin embargo esta teoría no se sostiene. Tener el modo 0440 no hace nada por impedir sudo nano /etc/sudoers - la mayoría de los editores de texto te permitirán editar el archivo sin quejarse del bit de protección contra escritura. Además, si te lo cargas, arreglarlo sería algo tán simple como su -c visudo, que es nada comparado con el tipo de procedimiento de recuperación por el que habría que pasar si se rompiera algo como /etc/inittab (mode 0644). Así que si hay alguna buena razón para los permisos heterodoxos, es un misterio - se aceptan explicaciones.

Comportamiento de HOME (y ajustes del perfil) incorrecto

Si al hacer sudo surgen problemas y $HOME(y los ajustes del perfil) no funciona como se espera porque el nuevo HOME es /root, sepa que la configuración de sudo en Squeeze restablece todas las variables de entorno. Para restablecer el comportamiento anterior de mantener la variable de entorno $HOME del usuario se puede añadir esto al archivo de configuración /etc/sudoers:

Defaults env_keep += HOME

Exigir la contraseña de root

Si se quiere exigir la contraseña de root para emplear sudo en vez de la del usuario se puede añadir la linea:

Defaults   rootpw

No pedir contraseña

Si se quiere permitir a los miembros del grupo sudo ejecutar órdenes sin que se les pida contraseña se puede añadir la linea:

%sudo ALL=(ALL) NOPASSWD: ALL

Para más información lea el registro de cambio en origen para la versión 1.7.4.

Personalizar el tiempo de validez de las credenciales

Por omisión, tras pedir la contraseña sudo recuerda las credenciales durante 15 minutos. Se puede alterar este comportamiento empleando la orden visudo y personalizando el tiempo de validez para un usuario:

Defaults:usuario timestamp_timeout=30

Ver también