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