<div>Fabricio,</div>
<div>&nbsp;</div>
<div>Você pode realizar essa tarefa sem utilização do Perl. Existem um utilitario que pode gerencia isso. Chamasse &quot;sudo&quot;.</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>&nbsp;</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> &lt;<a href="mailto:cascavel-pm-request@pm.org">cascavel-pm-request@pm.org
</a>&gt; 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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <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 &quot;Re: Contents of Cascavel-pm digest...&quot;<br><br><br>Tópicos de Hoje:<br><br>&nbsp;&nbsp;1. Re: como garantir file lock para outros programas?
<br>&nbsp;&nbsp;&nbsp;&nbsp; (Breno G. de Oliveira)<br>&nbsp;&nbsp;2. Daemon perl + interface web (Fabricio Veiga)<br>&nbsp;&nbsp;3. Re: Daemon perl + interface web (Daniel Ruoso)<br>&nbsp;&nbsp;4. Re: Daemon perl + interface web (Marco A P D´Andrade)<br>&nbsp;&nbsp;5. Boas práticas de programação em Perl
<br>&nbsp;&nbsp;&nbsp;&nbsp; (Nilson Santos Figueiredo Junior)<br>&nbsp;&nbsp;6. setuid ? (Solli Moreira Honorio)<br>&nbsp;&nbsp;7. Re: Daemon perl + interface web (Fabricio Veiga)<br>&nbsp;&nbsp;8. Re:Boas práticas de programação em Perl (Solli Moreira Honorio)<br>&nbsp;&nbsp;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: &quot;Breno G. de Oliveira&quot; &lt;<a href="mailto:breno@clavis.com.br">
breno@clavis.com.br</a>&gt;<br>Subject: Re: [Cascavel-pm] como garantir file lock para outros<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; programas?<br>To: Cascavel Perl Mongers &lt;<a href="mailto:cascavel-pm@pm.org">cascavel-pm@pm.org</a>&gt;<br>Message-ID: &lt;
<a href="mailto:43D75C16.4050303@clavis.com.br">43D75C16.4050303@clavis.com.br</a>&gt;<br>Content-Type: text/plain; charset=ISO-8859-1<br><br>Alceu R. de Freitas Jr. wrote:<br>&gt;<br>&gt; Eu testei esse script contra programas como useradd e
<br>&gt; smbpasswd (do Samba). Para minha surpresa ambos<br>&gt; puderam alterar os arquivos sem maiores problemas.<br>&gt;<br>&gt; Eu chequei a documentação e o Perl pode usar as<br>&gt; funções de C flock, lockf e fcntl para fazer o file
<br>&gt; locking, usando a primeira que ele encontrar.<br>&gt;<br>&gt; Eu não chequei o código C desses programas que eu<br>&gt; testei mas eu duvido que eles não usem file locking<br>&gt; para evitar problemas com corrupção do arquivo.
<br>&gt;<br>&gt; Alguém já lidou com esse tipo de problema? É possível<br>&gt; ter alguma segurança nesse sentido com programas<br>&gt; feitos em outras linguagens, mesmo o file locking do<br>&gt; Perl sendo consultivo?<br>
&gt;<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 &quot;alguma<br>segurança&quot; 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&lt;-------------<br>/* Obs: alguns #includes e verificacoes de erros<br>&nbsp;&nbsp;foram omitidos para facilitar legibilidade do codigo */
<br><br>#include &lt;fcntl.h&gt;<br><br>int main(void)<br>{<br>&nbsp;&nbsp; int fd;<br>&nbsp;&nbsp; struct flock fl = { F_WRLCK, SEEK_SET, 0, 0, 0 };<br>&nbsp;&nbsp; fl.l_pid = getpid();<br><br>&nbsp;&nbsp; fd = open(&quot;a.txt&quot;, O_WRONLY);<br>&nbsp;&nbsp; fcntl(fd, F_SETLKW, &amp;fl);
<br><br>&nbsp;&nbsp; printf(&quot;ganhei o lock!!!\n&quot;);<br>&nbsp;&nbsp; sleep(30);<br>&nbsp;&nbsp; close(fd);<br>}<br>------------8&lt;-------------<br><br>O programa funciona exatamente como o seu código Perl: abre um arquivo<br>para escrita (no caso, &quot;
a.txt&quot;) 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>&quot;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.&quot;<br><br>o Linus continua a explicação assim:<br><br>&quot;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.&quot;
<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&lt;-------------<br>/* Obs: alguns #includes e verificacoes de erros<br>&nbsp;&nbsp;foram omitidos para facilitar legibilidade do codigo */<br><br>#include &lt;sys/file.h&gt;
<br><br>int main(void)<br>{<br>&nbsp;&nbsp; int fd;<br><br>&nbsp;&nbsp; fd = open(&quot;a.txt&quot;, O_WRONLY);<br>&nbsp;&nbsp; flock(fd, LOCK_EX);<br><br>&nbsp;&nbsp; printf(&quot;ganhei o lock!!!\n&quot;);<br>&nbsp;&nbsp; sleep(30);<br>&nbsp;&nbsp; close(fd);<br>}<br>------------8&lt;-------------
<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 &quot;dono&quot; 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 &lt;
<a href="mailto:fabricioveiga@milnegocios.com.br">fabricioveiga@milnegocios.com.br</a>&gt;<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: &lt;
<a href="mailto:43D7B768.9010508@milnegocios.com.br">43D7B768.9010508@milnegocios.com.br</a>&gt;<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.&nbsp;&nbsp;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 &lt;<a href="mailto:daniel@ruoso.com">daniel@ruoso.com</a>&gt;<br>Subject: Re: [Cascavel-pm] Daemon perl + interface web
<br>To: Cascavel Perl Mongers &lt;<a href="mailto:cascavel-pm@pm.org">cascavel-pm@pm.org</a>&gt;<br>Message-ID: &lt;<a href="mailto:1138212288.7811.4.camel@cajazeiras.matriz.oktiva.com.br">1138212288.7811.4.camel@cajazeiras.matriz.oktiva.com.br
</a>&gt;<br>Content-Type: text/plain; charset=ISO-8859-1<br><br>Em Qua, 2006-01-25 às 15:37 -0200, Fabricio Veiga escreveu:<br>&gt; Estou montando uma aplicação para gerenciamento de emails, para criação<br>&gt; de contas, exclusão, alias, redirecionamentos e etc. Gostaria de fazer
<br>&gt; algo para não tenha que usar o usuário root para executar os daemons do<br>&gt; sistema.&nbsp;&nbsp;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 &lt;<a href="mailto:mda@embratel.net.br">mda@embratel.net.br</a>&gt;<br>Subject: Re: [Cascavel-pm] Daemon perl + interface web<br>To: Cascavel Perl Mongers &lt;<a href="mailto:cascavel-pm@pm.org">
cascavel-pm@pm.org</a>&gt;<br>Message-ID: &lt;<a href="mailto:43D7C01C.805@embratel.net.br">43D7C01C.805@embratel.net.br</a>&gt;<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 (&lt; 1024).<br><br><br>Sds,<br>Marco Antonio<br><br>Fabricio Veiga wrote:<br><br>&gt;Olá, boa tarde!<br>&gt;<br>&gt;Estou montando uma aplicação para gerenciamento de emails, para criação
<br>&gt;de contas, exclusão, alias, redirecionamentos e etc. Gostaria de fazer<br>&gt;algo para não tenha que usar o usuário root para executar os daemons do<br>&gt;sistema.&nbsp;&nbsp;Como devo proceder ?<br>&gt;<br>&gt;Obrigado!<br>
&gt;<br>&gt;<br>&gt;Fabrício Veiga<br>&gt;_______________________________________________<br>&gt;Cascavel-pm mailing list<br>&gt;<a href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org</a><br>&gt;<a href="http://mail.pm.org/mailman/listinfo/cascavel-pm">
http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br>&gt;<br>&gt;<br>&gt;<br>&gt;<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 &lt;<a href="mailto:acid06@gmail.com">
acid06@gmail.com</a>&gt;<br>Subject: [Cascavel-pm] Boas práticas de programação em Perl<br>To: Cascavel Perl Mongers &lt;<a href="mailto:cascavel-pm@pm.org">cascavel-pm@pm.org</a>&gt;<br>Message-ID:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;<a href="mailto:9a08c9b40601251018s33ca0541r3a926729e3c50d1e@mail.gmail.com">
9a08c9b40601251018s33ca0541r3a926729e3c50d1e@mail.gmail.com</a>&gt;<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 &quot;perlstyle&quot; 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 &quot;perlstyle&quot;, 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: &quot;Solli Moreira Honorio&quot; &lt;<a href="mailto:shonorio@terra.com.br">shonorio@terra.com.br</a>&gt;<br>Subject: [Cascavel-pm] setuid ?<br>To: <a href="mailto:cascavel-pm@pm.org">
cascavel-pm@pm.org</a><br>Message-ID: &lt;<a href="mailto:ITNWGZ$8E0B832BEBBA444DE3515A7AE86F14ED@terra.com.br">ITNWGZ$8E0B832BEBBA444DE3515A7AE86F14ED@terra.com.br</a>&gt;<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 &lt;<a href="mailto:fabricioveiga@milnegocios.com.br">fabricioveiga@milnegocios.com.br</a>&gt;<br>Subject: Re: [Cascavel-pm] Daemon perl + interface web<br>To: Cascavel Perl Mongers &lt;
<a href="mailto:cascavel-pm@pm.org">cascavel-pm@pm.org</a>&gt;<br>Message-ID: &lt;<a href="mailto:43D7C950.3090207@milnegocios.com.br">43D7C950.3090207@milnegocios.com.br</a>&gt;<br>Content-Type: text/plain; charset=ISO-8859-1
<br><br>Marco A P D´Andrade escreveu:<br><br>&gt;Fabricio,<br>&gt;<br>&gt;Nas praticas mais recentes, vc não utiliza contas de sistema para<br>&gt;administrar usuarios de correio, quando são somente de correio...<br>&gt;<br>
&gt;Dependendo se seu MTA (Uso postfix), podem ser utilizadas bases LDAP,<br>&gt;MySQL, PostgreSQL, entre outras, que dispensam acessos root.<br>&gt;<br>&gt;Um daemon, caso necessário, poderá ser feito com qualquer usuario, desde
<br>&gt;que não necessite de portas baixas (&lt; 1024).<br>&gt;<br>&gt;<br>&gt;Sds,<br>&gt;Marco Antonio<br>&gt;<br>&gt;Fabricio Veiga wrote:<br>&gt;<br>&gt;<br>&gt;<br>&gt;&gt;Olá, boa tarde!<br>&gt;&gt;<br>&gt;&gt;Estou montando uma aplicação para gerenciamento de emails, para criação
<br>&gt;&gt;de contas, exclusão, alias, redirecionamentos e etc. Gostaria de fazer<br>&gt;&gt;algo para não tenha que usar o usuário root para executar os daemons do<br>&gt;&gt;sistema.&nbsp;&nbsp;Como devo proceder ?<br>&gt;&gt;<br>
&gt;&gt;Obrigado!<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;Fabrício Veiga<br>&gt;&gt;_______________________________________________<br>&gt;&gt;Cascavel-pm mailing list<br>&gt;&gt;<a href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org
</a><br>&gt;&gt;<a href="http://mail.pm.org/mailman/listinfo/cascavel-pm">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;<br>&gt;<br>&gt;<br>&gt;
<br>&gt;<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: &quot;Solli Moreira Honorio&quot; &lt;<a href="mailto:shonorio@terra.com.br">shonorio@terra.com.br
</a>&gt;<br>Subject: Re:[Cascavel-pm] Boas práticas de programação em Perl<br>To: &quot;cascavel-pm&quot; &lt;<a href="mailto:cascavel-pm@pm.org">cascavel-pm@pm.org</a>&gt;<br>Message-ID: &lt;<a href="mailto:ITNWTM$21E4B4A4CFC7618498CA29D057010A59@terra.com.br">
ITNWTM$21E4B4A4CFC7618498CA29D057010A59@terra.com.br</a>&gt;<br>Content-Type: text/plain; charset=iso-8859-1<br><br>&gt; 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 &lt;<a href="mailto:joenio@gmail.com">joenio@gmail.com</a>&gt;<br>Subject: Re: [Cascavel-pm] Boas práticas de programação em Perl<br>To: Cascavel Perl Mongers &lt;<a href="mailto:cascavel-pm@pm.org">cascavel-pm@pm.org
</a>&gt;<br>Message-ID: &lt;<a href="mailto:65934b450601251104j165e21e1s@mail.gmail.com">65934b450601251104j165e21e1s@mail.gmail.com</a>&gt;<br>Content-Type: text/plain; charset=ISO-8859-1<br><br>&gt; Gostaria de saber se existe algum interesse na publicação desse texto
<br>&gt; 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