Esta é uma resposta tardia, mas você pode executá-la em cada login E executá-la como root (ou qualquer outro usuário que você queira), fazendo o seguinte:
- Escreva seu script, com os comandos que você deseja executar como root, e salve-o, por exemplo como
/path/to/root-script.sh
. -
Faça root (ou o usuário desejado) o proprietário do script.
chown root:root /path/to/root-script.sh'
-
Defina o bit setuid no script, com outras permissões desejadas. (certifique-se de que não é universalmente gravável, etc.)
chmod 4755 /path/to/root-script.sh
O
4
significa definir o bit setuid, o que fará com que o script seja executado como o proprietário do script. Isso é o que osudo
usa para garantir a execução como root. -
Para garantir que ele seja executado em cada login, execute o conjunto de bits fixos
root-script.sh
de/etc/profile
. O/etc/profile
deve ser executado independentemente do shell usado pelo usuário. Observe que isso se aplicará apenas a logins interativos, no entanto.
Editar . Como observado por Scott nos comentários, esta solução geralmente NÃO funciona em nenhum sistema moderno com qualquer script diferente do Perl < 5.12.0. Os kernels modernos ignorariam os scripts com um bit setuid, a menos que tenham sido corrigidos, o que não seria recomendado por razões de segurança.
Em vez disso, o setuid geralmente funciona apenas em binários compilados e [versões antigas do Perl] [ link
que pode usar (Perl < 5.12.0) com suidperl
.
Esta questão do Unix / Linux SE tem uma resposta completa do motivo pelo qual o setuid é ignorado por scripts shebang, com seu resumo: DR;
Setuid shebang is insecure but usually ignored. If you run a program with privileges (either through sudo or setuid), write native code or perl, or start the program with a wrapper that sanitizes the environment (such as sudo with the env_reset option).