script permissão para usuario

1. script permissão para usuario

Lucas Doná Sfalcin
lucasdona

(usa Linux Mint)

Enviado em 13/09/2011 - 17:57h

Boa tarde galera do VoL...
Como faço para deixar um usuário comum executar um script que dentro desse script tenha comandos que só o super usuario pode executar? exemplo
 ##meu script
killall wvdial
sleep 20
wvdial vivo


Mesmo eu dando permissão para o usuario executar este script ele até conseguirá executar, mas ao chegar no "killall" dará permissão negada. Como resolver este problema?
Abraços...


  


2. Re: script permissão para usuario

Perfil removido
removido

(usa Nenhuma)

Enviado em 13/09/2011 - 18:00h

usa o comando "sudo" :

sudo script

se não estiver com o sudo habilitado acesse o link abaixo e veja como habilita-lo para o usuário que deseja que execute o script:

http://www.hardware.com.br/dicas/sux-sudo-permissoes.html


3. Re: script permissão para usuario

Lucas Doná Sfalcin
lucasdona

(usa Linux Mint)

Enviado em 13/09/2011 - 18:04h

sudo script pedirá a senha, e é justamente isso que não pode.


4. Re: script permissão para usuario

Perfil removido
removido

(usa Nenhuma)

Enviado em 13/09/2011 - 18:14h

pedirá a senha do usuário que vai executar o script


5. Re: script permissão para usuario

Eduardo
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!


6. Re: script permissão para usuario

Perfil removido
removido

(usa Nenhuma)

Enviado em 13/09/2011 - 18:33h

ótima dica amigo, esqueci desse bit de segurança que ajuda para certas necessidades..


7. Re: script permissão para usuario

Lucas Doná Sfalcin
lucasdona

(usa Linux Mint)

Enviado em 13/09/2011 - 18:39h

E se eu utilizasse o shc para encapsular meu script, será que funcionaria?


8. Re: script permissão para usuario

Geraldo Albuquerque
AprendiNoLinux

(usa Ubuntu)

Enviado em 13/09/2011 - 19:00h

A dica do @bolche deve resolver seu problema com certeza.
Já tentei compilar os scripts mas sem sucesso. Um dia eu acerto rsrs.

Vale lembrar que o uso de setUID não é recomendável e só deve ser usado em questões diferenciadas. Eu nunca usei para falar a verdade.
Já andei lendo alguns artigos no VOL que pedem para remover o SetUID de qualquer arquivo ou Scripts por questões de segurança.

Veja este bom material sobre o setUID http://daemoniolabs.wordpress.com/2011/08/04/setuid-em-shell-scripts/

[Editado] A opção de montar um compilado parece ser um bom caminho :)


9. Re: script permissão para usuario

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 13/09/2011 - 22:32h

Eu prefiro o sudo, mas tem como configurar para executar o comando sem senha... através da tag "ALL = NOPASSWD: comando".


10. Re: script permissão para usuario

Lucas Doná Sfalcin
lucasdona

(usa Linux Mint)

Enviado em 14/09/2011 - 09:26h

Entendi..mas então poderia ser feito de outra forma, tudo que inicio no /etc/rc.local já diz que é o root que inicia, só que neste caso meu script não poderia ficar ai porque as mensagens gráficas não aparecem na tela, pois no rc.local não iniciam telas gráficas. Já tentei criar um script de inicialização no /etc/init.d que não funcionou e meu sistema até parou de iniciar, então, como iniciar esse script como root junto com o sistema? Dessa forma resolveria todos os problemas.


11. Re: script permissão para usuario

Lucas Doná Sfalcin
lucasdona

(usa Linux Mint)

Enviado em 14/09/2011 - 10:30h

É, com esse esquema de criar um executavel a partir do "c" até que funcionou, mas o problema é que o usuario comum pode deletar o arquivo se ele quiser, mesmo estando dentro de /etc..


12. Re: script permissão para usuario

Lucas Doná Sfalcin
lucasdona

(usa Linux Mint)

Enviado em 14/09/2011 - 15:07h

Alias, funcionou nada, continua dando permissão negada nos comandos dentro do script...
o ALL=NOPASSWD: comando tmb nao funcinou, dá a mesma coisa, permissão negada....
Como executar esse script como root mesmo, mas iniciando junto com o sistema, aparecer as mensagens graficas na tela e tudo? isso resolveria meu problema tmb.



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts