miércoles, 29 de enero de 2020

Configuración de sudo en openSUSE


Configurar sudo y administrar el sistema con él


openSUSE, al igual que la práctica totalidad de distribuciones GNU/Linux, conciencia desde el principio a los usuarios sobre la necesidad de no utilizar el sistema con privilegios de administrador (al que se llama root). Además, se recomienda el uso del comando sudo para ejecutar comandos. Esto es más seguro porque se puede seleccionar qué comandos puede ejecutar un determinado usuario o grupo de usuarios, y también porque la ejecución de dichos comandos con sudo queda registrada en el archivo /var/log/messages (aunque también se tiene la opción de elegir el archivo donde se hará el registro).

 

Configuración de sudo

En openSUSE, sudo se instala de forma predeterminada, pero no se configura por defecto. Así que, para poder usarlo, los usuarios deben introducir la contraseña del administrador cuando quieran ejecutar un comando con sudo. De esta forma, cualquier usuario puede ejecutar sudo si conoce la contraseña del administrador del sistema. Sin embargo, desde el punto de vista de la seguridad, no es una buena práctica que los usuarios conozcan la contraseña del administrador. Aunque esto es sobre todo importante en sistemas compartidos por varios usuarios, no está de más hacerlo también aunque se sea el único usuario del sistema. Este es el motivo por el que se realizará la configuración de sudo.
Para permitir el uso de sudo a una cuenta de un usuario se debe editar el archivo /etc/sudoers desde una terminal:
sudo /usr/sbin/visudo
desde la que también se puede lanzar un editor de texto gráfico si resulta más cómodo, en cuyo caso la orden depende del escritorio que se esté usando:
  • en los escritorios GNOMELXDE y Xfce (cambia gedit por leafpad si usas LXDE o Xfce)
EDITOR=gedit gnomesu /usr/sbin/visudo
·       en el escritorio KDE
kdesu bash -c "EDITOR=kwrite visudo"
Como cuando se haga esto sudo estará aún sin configurar, debes de introducir la contraseña de administrador.

Permitir el uso de sudo a los usuarios

Habiendo ejecutado alguno de los comandos comentados antes para abrir el archivo /etc/sudoers, lo siguiente es buscar la línea que comienza por #%wheel, donde el prefijo % de wheel indica que wheel es un grupo (se pueden ver los grupos que hay definidos en el sistema con la orden cat /etc/group). Es decir, en vez de añadir uno a uno a los usuarios que puedan usar sudo, lo que se va a hacer es permitírselo a todos los usuarios que pertenezcan al grupo wheel. El # al principio de la línea la convierte en un comentario, esto es, una línea que se ignora por completo como si no existiera. Por tanto, para que se tenga en cuenta hay que eliminarlo y dejar la línea como sigue:
%wheel        ALL=(ALL)       ALL
Guarda y cierra el archivo. Si lo has editado con sudo /usr/sbin/visudo hazlo mediante esta secuencia de comandos:
:wq
Los dos puntos que aparecen al principio no mostrarán, solo sirven para que wq sea interpretado por el editor por defecto (vim) como una orden, guardar y salir en este caso. Si lo has editado mediante gedit o KWrite, hazlo de la manera habitual en un editor de textos gráfico.
A continuación hay que denegar a todos los usuarios la posibilidad de ejecutar sudo, salvo a aquellos a los que se establezca que lo pueden hacer (añadiéndolos más tarde al grupo wheel). Para esto hay que convertir en comentarios las siguientes líneas, añadiendo el símbolo # al principio de la línea.
#Defaults targetpw    # ask for the password of the target user i.e. root
#ALL ALL=(ALL) ALL # WARNING! Only use this together with 'Defaults targetpw'!
Guarda y cierra el archivo. Por último, añade el nombre del usuario o usuarios que desees al grupo wheel. Ejecuta el siguiente comando una vez por cada usuario que quieras añadir al grupo, cambiando cada vez nombre_de_usuario por el usuario al que quieras agregar.
su -c "/usr/sbin/usermod -G wheel nombre_de_usuario"
Si se prefiere, también se puede hacer esto último de forma gráfica con el módulo de YaST Gestión de usuarios y grupos. Para que los cambios tengan efecto es necesario reiniciar o cerrar y volver a iniciar sesión. Es por eso que en este último comando se usó el comando su en vez de sudo. A partir de entonces, cuando se ejecute sudo se utilizará la contraseña del usuario que lo invoque en vez de la del administrador del sistema.

Ejecutar aplicaciones gráficas con permisos de administrador

Si quiere ejecutar un programa con de interfaz gráfica, como por ejemplo KWrite para editar un archivo, el método más cómodo es pulsar Alt+F2 y escribir en el diálogo que aparece lo siguiente, dependiendo del escritorio que se use:
·       en los escritorios GNOME, LXDE y Xfce (cambia gedit por leafpad si usas LXDE o Xfce)
gnomesu <comando>
·       en el escritodio KDE
kdesu <comando>
Los comandos que pueden ejecutar los usuarios normales están en /usr/bin, así que para ejecutar KWrite, por ejemplo, se usaría como ruta /usr/bin/kwriteLos comandos que pueden ejecutar los usuarios normales están en /usr/bin, así que para ejecutar KWrite, por ejemplo, se usaría como ruta /usr/bin/kwritedonde <comando> es el nombre del programa que se quiera ejecutar. En caso de que no funcione así, prueba a usar la ruta completa al archivo ejecutable. En GNOME también se puede ejecutar el siguiente comando en una consola:
xhost +; sudo gedit --display=:0; xhost -
Este método se puede usar incluso para ejecutar visudo, pero hay que cambiar levemente las órdenes por:
·       en los escritorios GNOME, LXDE y Xfce (cambia gedit por leafpad si usas LXDE o Xfce)
bash -c "EDITOR=gedit gnomesu /usr/sbin/visudo"
·       en el escritorio KDE
kdesu bash -c "EDITOR=kwrite visudo"
Por comodidad, se puede modificar de nuevo el archivo /etc/sudoers si se ejecutan con frecuencia programas con interfaz gráfica desde la consola para poder hacerlo con sudo. Los pasos a seguir son los siguientes:
·       Abrir el archivo /etc/sudoers como se aprendió antes.
·       Añadir EDITOR VISUAL DISPLAY XAUTHORITY a la línea Defaults env_keep = (dentro de las comillas).
·       Añadir la línea Defaults editor = "/usr/bin/gedit:/usr/bin/joe", cambiando gedit por el editor gráfico que se quiera (kwrite en KDE, por ejemplo).
·       Añadir [ $DISPLAY ] && export VISUAL="gedit" || export EDITOR="joe" al nuestro archivo ~/.bashrc (~ es una forma abreviada de hacer referencia a nuestro directorio de usuario), cambiando gedit por el editor gráfico que se quiera.