Lecciones importantes a partir de experiencias sencillas

El servicio cron posee un mecanismo para controlar que los usuarios creen sus propios crontab como se muestra en la siguiente tabla:

/etc/cron.allow /etc/cron.deny Resultado
No existe No existe Solamente root
Existe Existe Solamente usuarios en cron.allow
Existe No existe Solamente usuarios en cron.allow
No Existe Existe Todos menos usuarios en cron.deny

Supongamos el siguiente escenario: un usuario está listado en ambos listados. De acuerdo a la tabla ese usuario podrá trabajar con crontabs. En realidad, ese depende de otros factores, consideremos el siguiente caso:

# ls -l   /etc/cron.{allow,deny} 
-rw-r-----. 1 root root    7 Apr 17 19:44 /etc/cron.allow
-rw-r-----. 1 root crontab 7 Apr 17 19:34 /etc/cron.deny

El archivo /etc/cron.allow no tiene permiso de lectura para otros, de manera que un usuario común no podrá usar el comando crontab. En dicho caso, será necesario o bien cambiar el grupo dueño del archivo o agregar permiso de lectura para el resto del mundo.

Este ejemplo puede parecer un tanto obvio: en general en Linux los archivos se crean automáticamente con permiso de lectura para otros. Sin embargo, hay otras situaciones un poco más complicadas. Por ejemplo, consideremos el viejo servicio atd. Dicho servicio usa un esquema de accesos similar a cron. Podemos usar la misma tabla de arriba y aplicarla para at.

Pronto nos encontramos con ciertas sutilezas, vamos ahora a este ejemplo:

# ls -l /etc/at.*                                                                                                                                              
-rw-r-----. 1 root daemon 151 Apr 17 19:22 /etc/at.deny

Supongamos que alguien de manera desprevenida, copia el archivo /etc/at.deny en /etc/at.allow y agrega al usuario distinto de root al listado de aquél último archivo. El usuario agregado no tendrá permisos para usar at. Esto se debe que el arhcivo /etc/at.allow no cumple con alguna de las dos condiciones: - Tener permiso de lectura para otros. - El dueño del archivo no es daemon.

A veces, descubrir este error no es tan obvio, por ejemplo, si probamos con el comando strace, vemos lo siquiente:

Comentarios

Comments powered by Disqus

MentorCruise