Se, como você diz, "precisa ser executado na inicialização de uma conta de usuário sem supervisão", ele terá necessariamente acesso a todos os arquivos aos quais a conta de usuário não gerenciada em questão tem acesso.
Você pode criar uma conta de usuário sem registro dedicada com o objetivo de executar o script. Defina as permissões no arquivo de chave secreta para que somente essa conta de usuário dedicada possa lê-lo. Mas parece que você precisa executar o programa com uma conta de usuário pré-existente específica para que isso não funcione para você.
Existem outras soluções, como executá-lo em um chroot()
que tem acesso à chave secreta, mas se isso é viável ou não depende do que ele faz e o que mais, além do arquivo de chave secreta, ele precisa acesso a.
Você não precisará usar sudo
em nenhum caso porque /etc/rc.local
é executado como root, portanto você pode su
diretamente para a conta na qual você escolheu executar o programa.
EDIT após esclarecimento da questão:
It needs to execute every time a user of any sort logs in.
Eu vejo. Isso é bem diferente de executá-lo apenas uma vez na inicialização usando /etc/rc.local
como você declarou originalmente!
Sua melhor aposta neste caso provavelmente será tentar incorporar a chave secreta no binário em vez de acessá-la como um arquivo externo, ter o binário possuído pelo root e executável mas não legível por outros usuários (permissões como rwx--x--x
Os usuários não poderão obter acesso à chave (a menos que comprometam a raiz no sistema), mas podem executar o binário.
Se você não pode incorporar a chave secreta no binário, então você pode fazer o setuid binário para algum usuário que pode acessar a chave secreta ... mas tome todo o cuidado com a escrita dos binários setuid.