
Devido a permissões conflitantes e em constante mudança nas unidades montadas (que não podem ser facilmente resolvidas devido à estrutura de desenvolvimento dos programas), existe um script que deve ser executado com permissões de root.
Isso pode ser feito sudo /usr/serverm1/lsintd
e fornece bons resultados. No entanto, desejamos executar este script automaticamente na inicialização.
A execução do script em nosso usuário principal na inicialização resulta em um core dump devido a permissões insuficientes. Portanto, pensamos que poderíamos configurá-lo no crontab como @reboot /usr/serverm1/lsintd
(como sugeridoaqui, no entanto, isso é executado com configurações e configurações do root (que é inexistente).
TLDR: Como podemos executar o script exatamente como seria executado com o comando sudo /usr/serverm1/lsintd
na inicialização?
Eu também tentei aplicar chmod u+x
ao binário, mas isso ainda resultou em um core dump como se fosse executado com permissões regulares (ideia tirada depermitir que um usuário execute um script com permissões de root).
Nota:Admito que este é um problema XY, no entanto, devido à estrutura de desenvolvimento lenta e mal organizada de alguns dos outros serviços em nosso servidor, não temos como resolver os problemas raiz e devemos, em vez disso, solucionar isso.
Responder1
Uma maneira seria criar uma unidade systemd.
Todas as opções possíveis você encontra aqui:www.freedesktop.org/.../systemd.unit.html
mas vou apresentar um exemplo simples:
1.Vamos criar um script bash que irá gravar a data e hora de cada inicialização do sistema no arquivo: /root/file
Somente root
o usuário tem permissão para gravar e editar arquivos no /root
diretório.
Vou mudar o usuário para root
com sudo su -
Vamos criar um script /root/timelog.sh
e torná-lo executávelchmod +x /root/timelog.sh
#!/bin/bash
if ! [ /root/file ]; then touch /root/file; fi
echo $(date) >> /root/file
2.Agora precisamos do System Unit
arquivo:/etc/systemd/system/timelog.service
[Unit]
Description=timelog.service
[Service]
Type=oneshot
ExecStart=/root/timelog.sh
[Install]
WantedBy=multi-user.target
3. A última tarefa é garantir que ele será iniciado com o sistema:
systemctl enable timelog