bolche
(usa Ubuntu)
Enviado em 13/09/2011 - 18:22h
Um jeito é usar o SUID bit.
Primeiro, o dono do script deve ser o root:
# chown root:root meuscript.sh
Então você liga o SUID bit:
# chmod u+s meuscript.sh
Isso faz com que o programa seja executado como o dono do script, ou seja, root, e não como o usuário atual.
Porém, tem um probleminha: por motivos de segurança, a maioria das distribuições não permite que você crie scripts com SUID, só executáveis compilados. Dá pra contornar isso, mas eu não recomendo. Veja
http://nixshell.wordpress.com/2007/04/21/suid-shell-scripts-setting-the-sticky-bit/ e
http://www.tuxation.com/setuid-on-shell-scripts.html para detalhes.
O jeito mais simples de resolver isso é implementar o seu script e uma linguagem como C. Crie o arquivo programa.c com o seguinte conteúdo:
#include <stdlib.h>
#include <unistd.h>
int main() {
system("killall wvdial");
sleep(20);
system("wvdial vivo");
return 0;
}
Compile o programa com
$ gcc programa.c -o programa
E então faça esse esquema de SUID.
$ sudo chown root:root programa
$ sudo chmod u+s programa
Agora qualquer usuário pode executá-lo como se fosse root!