Controlar los usuarios que pueden programar tareas en Ubuntu Server 20.04 LTS

Publicado por P. Ruiz en

De forma predeterminada, en Ubuntu Server 20.04 LTS todos los usuarios pueden crear tareas programadas. No obstante, esta característica puede no ser adecuada en todos los contextos, por lo que el administrador tiene la posibilidad de quitarle esa facultad a cualquier usuario del sistema.

Para lograr ese propósito, pueden utilizarse dos archivos diferentes, llamados cron.allow y cron.deny, que se encuentran dentro del directorio /etc.

Cuando necesites usar los archivos cron.allow y cron.deny, puede que aún no existan de forma predeterminada en tu sistema, pero no te preocupes, puedes crearlos usando cualquier editor de textos.

En el caso de que no exista ninguno de los archivos, el comportamiento predeterminado de Ubuntu es permitir que todos los usuarios del sistema puedan crear tareas programadas.

La idea general es utilizar el archivo cron.allow para que solo puedan crear tareas programadas los usuarios relacionados dentro de él.

Así, por ejemplo, si incluimos el nombre de la cuenta usuario dentro del archivo cron.allow, comprobaremos que ahora no se podrán programar tareas para ningún otro usuario.

Para lograrlo, editamos el archivo:

sudo nano /etc/cron.allow

Escribimos la orden y pulsamos la tecla Intro.

Controlar-los-usuarios-que-pueden-programar-tareas-en-Ubuntu-Server-20-04-LTS-004

Cuando se abra el editor de textos, solo tenemos que escribir el nombre del usuario.

Cuando terminemos, salimos del editor pulsando las teclas ctrl + x y asegurándonos de guardar los cambios

Controlar-los-usuarios-que-pueden-programar-tareas-en-Ubuntu-Server-20-04-LTS-005

Aunque aquí solemos utilizar el editor nano, también podríamos haber añadido el nombre del usuario al archivo con una orden tan sencilla como esta:

sudo echo usuario >> /etc/cron.allow

A partir de este momento, cuando tratemos de crear una tarea programada para cualquier otro usuario, obtendremos un error.

… El sistema nos informa de que el usuario no puede utilizar crontab.

Controlar-los-usuarios-que-pueden-programar-tareas-en-Ubuntu-Server-20-04-LTS-006

Sin embargo, no tendremos dificultades al crear una tarea programada para la cuenta usuario

Repetimos el comando para el único usuario habilitado.

Controlar-los-usuarios-que-pueden-programar-tareas-en-Ubuntu-Server-20-04-LTS-007

Y comprobamos que el editor se abre sin ningún problema.

Solo tendremos que escribir la tarea y guardar los cambios

Controlar-los-usuarios-que-pueden-programar-tareas-en-Ubuntu-Server-20-04-LTS-008

La otra opción es permitir la creación de tareas programadas a todos los usuarios, salvo a un número reducido, que relacionaremos dentro del archivo cron.deny.

La forma más sencilla de comprobar su funcionamiento  consiste en utilizar privilegios administrativos para crear el archivo /etc/cron.deny e incluir el nombre de un usuario.

Para lograrlo, podemos usar de nuevo el editor nano.

sudo nano /etc/cron.deny

Como cabe esperar, el sistema nos pide la contraseña de administración. La escribimos y pulsamos la tecla Intro.

Controlar-los-usuarios-que-pueden-programar-tareas-en-Ubuntu-Server-20-04-LTS-001

… Y, como antes, solo tenemos que escribir el nombre de la cuenta.

Cuando terminemos, salimos del editor pulsando las teclas ctrl + x y asegurándonos de guardar los cambios

Controlar-los-usuarios-que-pueden-programar-tareas-en-Ubuntu-Server-20-04-LTS-002

Cuando tratemos de crear una tarea programada desde la cuenta usuario, obtendremos un error como el de la imagen siguiente…

Se producirá el error incluso cuando tratemos de crear la tarea programada para el usuario usando privilegios de root.

Controlar-los-usuarios-que-pueden-programar-tareas-en-Ubuntu-Server-20-04-LTS-003

Si aparece el mismo usuario en cron.allow y en cron.deny, el primero tiene preferencia, por lo que el usuario podrá usar el comando crontab con normalidad.

Por último, aclarar dos detalles:

  1. Cuando necesitamos incluir varios nombres de cuentas en los archivos cron.allow o cron.deny, deberemos escribir cada nombre de cuenta en una línea distinta del archivo.

  2. En lugar de una cuenta de usuario, podemos utilizar la palabra ALL para representarlas a todas.

Y esto es todo por el momento. Espero que te resulte útil.