
Debido a los permisos conflictivos y en constante cambio en las unidades montadas (que no se pueden resolver fácilmente debido a la estructura de desarrollo de los programas), existe un script que debe ejecutarse con permisos de root.
Esto se puede hacer sudo /usr/serverm1/lsintd
y proporciona buenos resultados. Sin embargo, deseamos ejecutar este script automáticamente al inicio.
La ejecución del script con nuestro usuario principal al inicio da como resultado un volcado de memoria debido a permisos insuficientes. Por lo tanto, pensamos que podríamos configurarlo en crontab como @reboot /usr/serverm1/lsintd
(como se sugiereaquí, sin embargo, esto lo ejecuta con ajustes y configuración desde la raíz (que no existe).
TLDR: ¿Cómo podemos ejecutar el script exactamente como se ejecutaría con el comando sudo /usr/serverm1/lsintd
al inicio?
También intenté aplicar chmod u+x
al binario, sin embargo, esto todavía resultó en un volcado de núcleo como si se ejecutara con permisos regulares (idea tomada depermitir que un usuario ejecute un script con permisos de root).
Nota al margen:Admito que esto es en cierto modo un problema XY, sin embargo, debido a la estructura de desarrollo lenta y mal organizada de algunos de los otros servicios en nuestro servidor, no tenemos forma de resolver los problemas de raíz y, en cambio, debemos solucionarlo.
Respuesta1
Una forma sería crear una unidad systemd.
Todas las opciones posibles las puedes encontrar aquí:www.freedesktop.org/.../systemd.unit.html
pero voy a presentar un ejemplo simple:
1.Creemos un script bash que escribirá la fecha y hora de cada inicio del sistema en el archivo: /root/file
solo root
el usuario tiene permisos para escribir y editar archivos en /root
el directorio.
Voy a cambiar de usuario root
con sudo su -
Vamos a crear un script /root/timelog.sh
y hacerlo ejecutable.chmod +x /root/timelog.sh
#!/bin/bash
if ! [ /root/file ]; then touch /root/file; fi
echo $(date) >> /root/file
2.Ahora necesitamos el System Unit
archivo:/etc/systemd/system/timelog.service
[Unit]
Description=timelog.service
[Service]
Type=oneshot
ExecStart=/root/timelog.sh
[Install]
WantedBy=multi-user.target
3.La última tarea es asegurarse de que se inicie con el sistema:
systemctl enable timelog