[SP-pm] Executar comando como root

Pedro pedro em seitel.com.br
Terça Julho 19 04:29:18 PDT 2005


Pois é amigos.. o Cron nao resolveria pois ao cadastrar um usuário no 
sistema, este precisaria de um tempo para ser ativado.. e se eu colocar o 
script pra rodar em prazos muito curtos, o servidor vai ficar o tempo todo 
dando reload em serviços, dai nao resolve né :D
Quanto ao SetUID, se outro usuário por ventura executasse o script 
manualmente, o que ocorreria era uma busca no banco de dados, a reescrição 
de arquivos de conf e o reload nos serviços... isso nao chegaria a causar 
perdas, o problema é se o usuário conseguir editar o arquivo... Eis a 
questão, o usuário conseguiria alterar este arquivo? Em caso negativo, 
concordam que isso nao deixaria falhar de segurança em meu servidor/sistema?

Grato mais uma vez..

Jim.

----- Original Message ----- 
From: "Luis Campos de Carvalho" <monsieur_champs em yahoo.com.br>
To: <saopaulo-pm em mail.pm.org>
Sent: Monday, July 18, 2005 9:49 PM
Subject: Re: [SP-pm] Executar comando como root


Pedro wrote:
> Olá,
>
> Sou novo na lista e ainda sei quase nada de Perl.
>
> Estou desenvolvendo um sisteminha aqui na empresa onde uma interface php
> terá que chamar um script em perl. A questão é que como é o apache quem
> executa o script, o script fica sem permissões para executar comandos de
> root. Feria como fazer o Perl executar comandos de root mesmo sendo
> chamado pelo apache? (nao quero usar o sudo)
>

   Hum. Se você não quer usar sudo, fica tudo mais complicado.
   Mas, já que você é o programador e sabe o que está fazendo, vamos lá:
existe uma "capacidade" do linux (do unix, seja lá qual sabor for) que é
a de instruir o sistema a rodar programas como outro usuário.

   Chamamos isso de "set-uid" (i.é, "ajustar o UserID"). Quando um
programa com essa capacidade é chamado, tudo acontece como se quem o
tivesse chamado fosse o usuário "setuid", não quem realmente o está
chamando. :-)

   Para ficar simples: faça seu script ser setuid para o root, assim:

   Passo 1: mude o owner e grupo de seu programa para o owner e grupo do
usuário que você deseja que rode o programa como "setuid". No nosso
caso, para o root.

   chown $(id -u root):$(id -g root) /caminho/para/o/script.pl

   Passo 2: Ajuste os bits setuid do seu script, para que o sistema
saiba o que fazer quando um usuário qualquer (o Apache, por exemplo)
chamar este script:

   chmod +s /caminho/para/o/script.pl

   e voilá! Seu programa agora executará como root, não importa qual
usuário você use para fazer a chamada.

   MUITO CUIDADO COM ISSO: qualquer pessoa que invocar o script, e não
apenas o Apache, terá a capacidade de executar o programa como "root".
Com as devidas precauções de segurança, isso não chega a ser um
problema. VOCÊ FOI AVISADO!

   Se tiver mais alguma coisa que possamos fazer por você, por favor avise!
   Putamplexos e até breve!
-- 
=======================================================
   Luis Campos de Carvalho is BsC in Computer Science,
   Certified Oracle DBA, UNIX and Linux lover, Perl
   Fanatic and Leader of the Sao Paulo Perl Mongers
   http://br.geocities.com/monsieur_champs/
=======================================================




_______________________________________________________
Yahoo! Acesso Grátis - Internet rápida e grátis.
Instale o discador agora! http://br.acesso.yahoo.com/
_______________________________________________
SaoPaulo-pm mailing list
SaoPaulo-pm em pm.org
http://mail.pm.org/mailman/listinfo/saopaulo-pm 



Mais detalhes sobre a lista de discussão SaoPaulo-pm