[Cascavel-pm] Digest Cascavel-pm, volume 130, assunto 3 - 2. Daemon perl + interface web (Fabricio Veiga)

Juliano Dantas juliano.dantas em gmail.com
Quarta Janeiro 25 11:25:45 PST 2006


Fabricio,

Você pode realizar essa tarefa sem utilização do Perl. Existem um utilitario
que pode gerencia isso. Chamasse "sudo".
Um usuario pode ter todas as permissões de root, porém, não sendo root.
Espero ter ajudado.


Em 25/01/06, cascavel-pm-request em pm.org <cascavel-pm-request em pm.org>
escreveu:
>
> Enviar submissões para a lista de discussão Cascavel-pm para
>        cascavel-pm em pm.org
>
> Para se cadastrar ou descadastrar via WWW, visite o endereço
>        http://mail.pm.org/mailman/listinfo/cascavel-pm
> ou, via email, envie uma mensagem com a palavra 'help' no assunto ou
> corpo da mensagem para
>        cascavel-pm-request em pm.org
>
> Você poderá entrar em contato com a pessoa que gerencia a lista pelo
> endereço
>        cascavel-pm-owner em pm.org
>
> Quando responder, por favor edite sua linha Assunto assim ela será
> mais específica que "Re: Contents of Cascavel-pm digest..."
>
>
> Tópicos de Hoje:
>
>   1. Re: como garantir file lock para outros programas?
>      (Breno G. de Oliveira)
>   2. Daemon perl + interface web (Fabricio Veiga)
>   3. Re: Daemon perl + interface web (Daniel Ruoso)
>   4. Re: Daemon perl + interface web (Marco A P D´Andrade)
>   5. Boas práticas de programação em Perl
>      (Nilson Santos Figueiredo Junior)
>   6. setuid ? (Solli Moreira Honorio)
>   7. Re: Daemon perl + interface web (Fabricio Veiga)
>   8. Re:Boas práticas de programação em Perl (Solli Moreira Honorio)
>   9. Re: Boas práticas de programação em Perl (Joenio Marques)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Wed, 25 Jan 2006 09:08:06 -0200
> From: "Breno G. de Oliveira" <breno em clavis.com.br>
> Subject: Re: [Cascavel-pm] como garantir file lock para outros
>        programas?
> To: Cascavel Perl Mongers <cascavel-pm em pm.org>
> Message-ID: <43D75C16.4050303 em clavis.com.br>
> Content-Type: text/plain; charset=ISO-8859-1
>
> Alceu R. de Freitas Jr. wrote:
> >
> > Eu testei esse script contra programas como useradd e
> > smbpasswd (do Samba). Para minha surpresa ambos
> > puderam alterar os arquivos sem maiores problemas.
> >
> > Eu chequei a documentação e o Perl pode usar as
> > funções de C flock, lockf e fcntl para fazer o file
> > locking, usando a primeira que ele encontrar.
> >
> > Eu não chequei o código C desses programas que eu
> > testei mas eu duvido que eles não usem file locking
> > para evitar problemas com corrupção do arquivo.
> >
> > Alguém já lidou com esse tipo de problema? É possível
> > ter alguma segurança nesse sentido com programas
> > feitos em outras linguagens, mesmo o file locking do
> > Perl sendo consultivo?
> >
>
> Oi Alceu,
>
> eu também procuro a algum tempo uma boa maneira de implementar file
> locking com Perl. Respondendo a sua pergunta sobre ter "alguma
> segurança" com programas feitos em outras linguagens, vale lembrar que o
> locking é voluntário, ou seja, se o outro programa não implementar
> locking ele vai conseguir escrever no arquivo numa boa (como vc mesmo
> lembrou).
>
> Também duvido que o samba não implemente locking, mas pra garantir
> testei seu programa contra esse codigo em C que fiz implementando
> locking via fcntl():
>
> ------------8<-------------
> /* Obs: alguns #includes e verificacoes de erros
>   foram omitidos para facilitar legibilidade do codigo */
>
> #include <fcntl.h>
>
> int main(void)
> {
>    int fd;
>    struct flock fl = { F_WRLCK, SEEK_SET, 0, 0, 0 };
>    fl.l_pid = getpid();
>
>    fd = open("a.txt", O_WRONLY);
>    fcntl(fd, F_SETLKW, &fl);
>
>    printf("ganhei o lock!!!\n");
>    sleep(30);
>    close(fd);
> }
> ------------8<-------------
>
> O programa funciona exatamente como o seu código Perl: abre um arquivo
> para escrita (no caso, "a.txt") e dorme por 30 segundos.
>
> Embora o programa em Perl funcione contra si mesmo e o em C idem, eles
> não funcionam entre si. Ou seja, se eu travo o arquivo com o código
> Perl, o código C acha que não há locking algum, e vice-versa.
>
> Após certa pesquisa, achei a resposta para tal comportamento na
> documentação do kernel Linux:
>
> "The solution I have chosen, after much experimentation and discussion,
> is to make flock() and fcntl() locks oblivious to each other. Both can
> exist, and neither will have any effect on the other."
>
> o Linus continua a explicação assim:
>
> "I wanted the two lock styles to be cooperative, but there were so many
> race and deadlock conditions that the current solution was the only
> practical one. It puts us in the same position as, for example, SunOS
> 4.1.x and several other commercial Unices. The only OS's that support
> cooperative flock()/fcntl() are those that emulate flock() using
> fcntl(), with all the problems that implies."
>
> Ou seja, se o programa em C faz seu locking via fcntl(), o feito em Perl
> só enxerga essa trava se tiver usado a mesma função - o que não foi o
> caso, já que usamos a função flock() - e vice-versa.
>
> Para confirmar, troquei a chamada do meu programa em C para usar flock()
> ao invés de fcntl() e ele ficou assim:
>
> ------------8<-------------
> /* Obs: alguns #includes e verificacoes de erros
>   foram omitidos para facilitar legibilidade do codigo */
>
> #include <sys/file.h>
>
> int main(void)
> {
>    int fd;
>
>    fd = open("a.txt", O_WRONLY);
>    flock(fd, LOCK_EX);
>
>    printf("ganhei o lock!!!\n");
>    sleep(30);
>    close(fd);
> }
> ------------8<-------------
>
> O teste foi um sucesso, e o seu programa Perl agora encontra o lock
> feito em C e vice-versa!
>
> Infelizmente, como pôde ser constatado, testar locking de programas que
> não os seus é inviável (senão impossível) sem que saibamos exatamente
> qual o tipo de locking empregado (como foi o seu caso no samba), ou sem
> um sistema operacional que faça locking mandatório (nesse caso, qualquer
> locking bloquearia chamadas de sistema para escrita - e isso não costuma
> dar muito certo).
>
> Uma solução seria usar o flock() e o fcntl() logo depois no mesmo
> arquivo, mas isso gera deadlock em sistemas com flock emulado ou que
> usem a mesma syscall para ambas as funções. Para contornar esse
> problema, se déssemos o flock() mas o fcntl() bloqueasse, pediríamos o
> PID do processo "dono" do lock e, caso seja o próprio programa, esse
> poderia continuar normalmente.
>
> Infelizmente não pude continuar esse teste pois não me entendi com a
> sintaxe da função fcntl() no Perl...
>
> Espero ter ajudado!
>
> []s
>
> breno
>
>
>
> ------------------------------
>
> Message: 2
> Date: Wed, 25 Jan 2006 15:37:44 -0200
> From: Fabricio Veiga <fabricioveiga em milnegocios.com.br>
> Subject: [Cascavel-pm] Daemon perl + interface web
> To: cascavel-pm em pm.org
> Message-ID: <43D7B768.9010508 em milnegocios.com.br>
> Content-Type: text/plain; charset=ISO-8859-1
>
> Olá, boa tarde!
>
> Estou montando uma aplicação para gerenciamento de emails, para criação
> de contas, exclusão, alias, redirecionamentos e etc. Gostaria de fazer
> algo para não tenha que usar o usuário root para executar os daemons do
> sistema.  Como devo proceder ?
>
> Obrigado!
>
>
> Fabrício Veiga
>
>
> ------------------------------
>
> Message: 3
> Date: Wed, 25 Jan 2006 15:04:48 -0300
> From: Daniel Ruoso <daniel em ruoso.com>
> Subject: Re: [Cascavel-pm] Daemon perl + interface web
> To: Cascavel Perl Mongers <cascavel-pm em pm.org>
> Message-ID: <1138212288.7811.4.camel em cajazeiras.matriz.oktiva.com.br>
> Content-Type: text/plain; charset=ISO-8859-1
>
> Em Qua, 2006-01-25 às 15:37 -0200, Fabricio Veiga escreveu:
> > Estou montando uma aplicação para gerenciamento de emails, para criação
> > de contas, exclusão, alias, redirecionamentos e etc. Gostaria de fazer
> > algo para não tenha que usar o usuário root para executar os daemons do
> > sistema.  Como devo proceder ?
>
> Praticamente todo MTA suporta virtual domains, desta forma, você pode
> conseguir que todos os emails sejam encaminhados para o seu sistema. E o
> seu sistema não precisa rodar como root... o Rodolfo Sikora tem *um
> pouco* de experiência nisso (só uns 6 ou 7 anos...)...
>
> daniel
>
>
>
> ------------------------------
>
> Message: 4
> Date: Wed, 25 Jan 2006 16:14:52 -0200
> From: Marco A P D´Andrade <mda em embratel.net.br>
> Subject: Re: [Cascavel-pm] Daemon perl + interface web
> To: Cascavel Perl Mongers <cascavel-pm em pm.org>
> Message-ID: <43D7C01C.805 em embratel.net.br>
> Content-Type: text/plain; charset=iso-8859-1; format=flowed
>
> Fabricio,
>
> Nas praticas mais recentes, vc não utiliza contas de sistema para
> administrar usuarios de correio, quando são somente de correio...
>
> Dependendo se seu MTA (Uso postfix), podem ser utilizadas bases LDAP,
> MySQL, PostgreSQL, entre outras, que dispensam acessos root.
>
> Um daemon, caso necessário, poderá ser feito com qualquer usuario, desde
> que não necessite de portas baixas (< 1024).
>
>
> Sds,
> Marco Antonio
>
> Fabricio Veiga wrote:
>
> >Olá, boa tarde!
> >
> >Estou montando uma aplicação para gerenciamento de emails, para criação
> >de contas, exclusão, alias, redirecionamentos e etc. Gostaria de fazer
> >algo para não tenha que usar o usuário root para executar os daemons do
> >sistema.  Como devo proceder ?
> >
> >Obrigado!
> >
> >
> >Fabrício Veiga
> >_______________________________________________
> >Cascavel-pm mailing list
> >Cascavel-pm em pm.org
> >http://mail.pm.org/mailman/listinfo/cascavel-pm
> >
> >
> >
> >
>
>
> --
> Marco Antonio P D'Andrade
> Gerencia de Servidores Internet
> Suporte a Servicos, Redes e Sistemas de Gerencia IP - OPS38E
> Embratel - Rio de Janeiro - RIT 521-4898
>
>
>
>
> ------------------------------
>
> Message: 5
> Date: Wed, 25 Jan 2006 16:18:21 -0200
> From: Nilson Santos Figueiredo Junior <acid06 em gmail.com>
> Subject: [Cascavel-pm] Boas práticas de programação em Perl
> To: Cascavel Perl Mongers <cascavel-pm em pm.org>
> Message-ID:
>        <9a08c9b40601251018s33ca0541r3a926729e3c50d1e em mail.gmail.com>
> Content-Type: text/plain; charset=ISO-8859-1
>
> Pessoal,
>
> Eu escrevi um texto em português sobre boas práticas de programação em
> Perl. Ele é fortemente baseado na manpage "perlstyle" e numa
> apresentação que pode ser encontrada em:
> http://www.cpan.org/modules/by-authors/id/TOMC/scripts/perlstyle-talk.gz
>
> O texto ficou meio grandinho (~400 linhas) mas cobre muitas coisas.
> Gostaria de saber se existe algum interesse na publicação desse texto
> na Tekneeq (suponho que não, por ser muito grande) ou se alguém tem
> alguma outra idéia do que fazer com ele.
>
> Como eu disse, ele é bem na linha do "perlstyle", alguns pedaços
> chegam a ser uma simples tradução do mesmo. Mas ficou legal e cobre um
> vazio existente: material de qualidade sobre Perl em português.
>
> -Nilson Santos F. Jr.
>
>
> ------------------------------
>
> Message: 6
> Date: Wed, 25 Jan 2006 15:53:23 -0300
> From: "Solli Moreira Honorio" <shonorio em terra.com.br>
> Subject: [Cascavel-pm] setuid ?
> To: cascavel-pm em pm.org
> Message-ID: <ITNWGZ$8E0B832BEBBA444DE3515A7AE86F14ED em terra.com.br>
> Content-Type: text/plain; charset=iso-8859-1
>
> Pessoal,
>
> Na documentação, é comentado que um 'setuid' é mais seguro em Perl do que
> em C. Legal, o que é um setuid ?
>
> Abraços,
>
> Solli
>
>
>
> ------------------------------
>
> Message: 7
> Date: Wed, 25 Jan 2006 16:54:08 -0200
> From: Fabricio Veiga <fabricioveiga em milnegocios.com.br>
> Subject: Re: [Cascavel-pm] Daemon perl + interface web
> To: Cascavel Perl Mongers <cascavel-pm em pm.org>
> Message-ID: <43D7C950.3090207 em milnegocios.com.br>
> Content-Type: text/plain; charset=ISO-8859-1
>
> Marco A P D´Andrade escreveu:
>
> >Fabricio,
> >
> >Nas praticas mais recentes, vc não utiliza contas de sistema para
> >administrar usuarios de correio, quando são somente de correio...
> >
> >Dependendo se seu MTA (Uso postfix), podem ser utilizadas bases LDAP,
> >MySQL, PostgreSQL, entre outras, que dispensam acessos root.
> >
> >Um daemon, caso necessário, poderá ser feito com qualquer usuario, desde
> >que não necessite de portas baixas (< 1024).
> >
> >
> >Sds,
> >Marco Antonio
> >
> >Fabricio Veiga wrote:
> >
> >
> >
> >>Olá, boa tarde!
> >>
> >>Estou montando uma aplicação para gerenciamento de emails, para criação
> >>de contas, exclusão, alias, redirecionamentos e etc. Gostaria de fazer
> >>algo para não tenha que usar o usuário root para executar os daemons do
> >>sistema.  Como devo proceder ?
> >>
> >>Obrigado!
> >>
> >>
> >>Fabrício Veiga
> >>_______________________________________________
> >>Cascavel-pm mailing list
> >>Cascavel-pm em pm.org
> >>http://mail.pm.org/mailman/listinfo/cascavel-pm
> >>
> >>
> >>
> >>
> >>
> >>
> >
> >
> >
> >
> Bom, na realidade, gostaria de fazer uma IDE para Postfix, usando php,
> mysql e perl. E que gostaria de estar desenvolvendo aplicações próprias
> para cada tipo de serviço. Prentendo mais tarde, desenvolver algo
> parecido para Bind-Dns.
>
>
> ------------------------------
>
> Message: 8
> Date: Wed, 25 Jan 2006 16:00:58 -0300
> From: "Solli Moreira Honorio" <shonorio em terra.com.br>
> Subject: Re:[Cascavel-pm] Boas práticas de programação em Perl
> To: "cascavel-pm" <cascavel-pm em pm.org>
> Message-ID: <ITNWTM$21E4B4A4CFC7618498CA29D057010A59 em terra.com.br>
> Content-Type: text/plain; charset=iso-8859-1
>
> > vazio existente: material de qualidade sobre Perl em português.
> Isto sim que é modéstia, hein :) !!! Brincadeira a parte, mesmo com a
> publicação do texto no Tekneeq, tenho
> interesse em publicar no SPPM (http://sao-paulo.pm.org/).
>
> Solli
>
>
>
> ------------------------------
>
> Message: 9
> Date: Wed, 25 Jan 2006 17:04:58 -0200
> From: Joenio Marques <joenio em gmail.com>
> Subject: Re: [Cascavel-pm] Boas práticas de programação em Perl
> To: Cascavel Perl Mongers <cascavel-pm em pm.org>
> Message-ID: <65934b450601251104j165e21e1s em mail.gmail.com>
> Content-Type: text/plain; charset=ISO-8859-1
>
> > Gostaria de saber se existe algum interesse na publicação desse texto
> > na Tekneeq (suponho que não, por ser muito grande)
>
> Nao sei se posso falar pela Tekneeq, mas acho uma boa colocar la!
>
> Sds,
> Joenio Marques
> - Salvador Perl Mongers
>
>
> ------------------------------
>
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
>
> Fim da Digest Cascavel-pm, volume 130, assunto 3
> ************************************************
>



--
Juliano Dantas Almeida Silva
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/cascavel-pm/attachments/20060125/0d95146e/attachment-0001.html


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