Activar /etc/rc.local en Fedora Linux


Una de las razones por las que me gusta tener Ubuntu en mis servidores, es por la existencia del script especial de arranque en /etc/rc.local que me ayuda a automatizar algunas tareas relevantes al bootear dichas computadoras.

Para los que no sepan qué es este script, se trata de un script de arranque especial que corre tras haber cargado todos los servicios del sistema y los comandos ahí escritos se corren como root automáticamente entonces. Esto es particularmente útil en servidores pero también ayuda en computadoras de escritorio que tienen que correr algunos comandos manualmente tras arrancar para ajustar ciertos settings. Claro que por ejemplo podríamos ejecutar dichos comandos al arranque del escritorio con la GUI indicada para ello en c/u de los entornos existentes, pero entonces no correrían como root y hay veces que los necesitamos correr con permisos de superusuario sin tener que trastear en el sudoers... Para eso está este script.

Activándolo en Fedora:

1. su -
2. wget https://spideroak.com/share/PBSW433EMVZXS43UMVWXG/78656e6f6465/srv/CDN/xenodecdn/rc.local -O /etc/rc.d/rc.local
3. chown -R root:root /etc/rc.d/rc.local
4. chmod +x /etc/rc.d/rc.local
5. systemctl unmask rc-local.service

Listo. Eso es todo, ya tenemos activado rc.local en nuestro sistema Fedora... Por defecto el script no hace nada, así que te toca a ti ponerle los comandos deseados para que los ejecute en el momento del booting. Yo por ejemplo lo uso para iniciar TOR/Privoxy en Fedora al arrancar mi sistema, ya que dicho proceso requiere correr los siguientes comandos (como root) al inicio del mismo:

setenforce 0
service tor start
service privoxy start
setenforce 1

Meto esos comandos en mi rc.local y al arrancar ya tengo TOR + Privoxy habilitados junto con SELinux (que de principio es el culpable de que dichos servicios no inicien aún habiéndolos habilitado vía systemctl previamente)

¿Ven la utilidad de rc.local? Cabe destacar que toda tarea que involucre GUI's (o que se pueda ejecutar como usuario normal) debe excluirse de rc.local y ponerse más bien al inicio de tu entorno de escritorio; Como ya expliqué arriba, todos los escritorios tienen una sección para manipular las "aplicaciones al inicio". Si dicha tarea no ejecutara de dicho modo, puedes correrla desde rc.local pero especificando que la quieres correr como un usuario estándar con un comando como:

sudo -u 'usuario' -i comando

Reemplazando la palabra 'usuario' por el nombre del usuario deseado, debe quedar entrecomillado también.

Otro punto que cabe destacar es que rc.local no carga todos los PATH's del sistema, so si por alguna razón algún comando no te corre aún poniéndolo en el script, pero si te corre ya "logueado" deberás exportar el PATH indicado como parte de tu rc.local también para que dicho comando se pueda correr al inicio del sistema.