Solución 1:
decirle a systemd que ejecute el servicio con sudo ?
sudo no tiene nada que ver.
Por lo general, le indica a systemd que ejecute un servicio como un usuario/grupo específico con un User= y Group= directiva en el [Service] sección del archivo de la unidad.
Configúrelos como root (o elimínelos, ya que la ejecución como root es la opción predeterminada).
Solución 2:
Para borrar, systemd los servicios del sistema se ejecutan como root de forma predeterminada, pero aún existe una diferencia entre el comportamiento predeterminado y la ejecución de un servicio del sistema con User=root .
Como se documenta en Variables de entorno en procesos generados, estas variables solo se establecen si User= está configurado:
$USER, $LOGNAME, $HOME, $SHELL
Probé para confirmar este hallazgo. Entonces, si desea ejecutar un servicio systemd como raíz que necesita una de las variables anteriores, debe configurar User=root .
Solución 3:
una solución temporal, pero funcionó en un abrir y cerrar de ojos:
/usr/bin/sudo /bin/bash -lc 'bundle exec rails server -e demo -p 80'
Puede ejecutarse con un usuario que tenga privilegios sudo en un archivo de unidad systemd así:
[Unit]
Description=Rails Webserver
After=syslog.target
[Service]
Type=simple
User=ubuntu
WorkingDirectory=/var/www/webserver
ExecStart=/usr/bin/sudo /bin/bash -lc 'bundle exec rails server -e demo -p 80'
Restart=always
KillSignal=SIGQUIT
[Install]
WantedBy=multi-user.target