[Cascavel-pm] Função system não executa o comando.

Rafael Lebrao Martins rafamv1 em ig.com.br
Sexta Janeiro 18 08:21:17 PST 2008


"Meu caro, teu caso é quase de camisa-de-força e umas férias de uns 5
anos no manicômio mais próximo ;) , mas eu vou tentar te colocar na
linha. Vamos aos comentários..."

Você é um idiota!

"Erro de conceito: nunca use permissões "777". Você não sabe o que
está fazendo."

Se estou setando as permissões para "777" é porque preciso que elas estejam
dessa forma.. EU SEI O QUE ESTOU FAZENDO.

Já resolvi o meu problema, mas obrigado pela sua imensa ajuda...



Em 18/01/08, Luis Motta Campos <luismottacampos em yahoo.co.uk> escreveu:
>
> Rafael Lebrao Martins wrote:
> > Bom dia, pessoal. Estou com um problema, a função system não está
> > funcionando nos meus códigos.. Coloquei em um código a linha abaixo:
> >
> > system (`chmod 777 -R /var/imm/chats`);
>
> AAAAAAHHHHH!!!!
>
> > Mas quando acesso a o caminho "/var/imm/chats", as permissões
> > continuam as mesmas... Alguém pode me ajudar?
>
> Meu caro, teu caso é quase de camisa-de-força e umas férias de uns 5
> anos no manicômio mais próximo ;) , mas eu vou tentar te colocar na
> linha. Vamos aos comentários...
>
> 1. Permissões:
>
> Certifique-se de que você pode executar o mesmo comando, com o mesmo
> usuário, à mão.
>
> Me envie o resultado de "ls -l /var/imm/chats"
>
> 2. Onde está o teu código? Eu vejo montes de erros nesta linha. Tantos
> que meus olhos estão até ardendo... :(
>
> 2.1. Erro de conceito: nunca use permissões "777". Você não sabe o que
> está fazendo.
> 2.2. Erro de programação: backticks (ou "crase") são operadores no perl.
> Nunca use para quotar strings no programa. Se você não sabe para que
> serve, não use - é perigoso.
> 2.3. Se você está construindo um programa, pretende rodar isso com
> frequência. Isso é um erro de conceito, você deveria configurar seus
> programas e sistema para permitir acesso apenas aos sistemas / programas
> que precisam de acesso, não construir um programa para abrir acesso
> irrestrito para alguma coisa.
> 2.4. usar "system()" sem conferir erros.
> 2.5. usar o operador de execução no shell (qx//, ou "`" - veja "perlop",
> secção "Regexp Quote-Like Operators") e passar o resultado para um
> "system()" - ou você é ninja, e podia estar me ensinando alguma coisa,
> ou você não faz idéia do que está fazendo. CUIDADO!
>
> 3. Sugestão: RTFM, e implementa mais ou menos assim, que deve ser
> seguro. ATENÇÃO: eu não testei isso, use por sua conta e risco.
>
> #!/usr/bin/perl
> use warnings;
> use strict;
>
> my @args = ( q{/usr/bin/chmod}, q{0777}, q{-R}, q{/var/imms/chats} );
> system(@args) == 0
> or die "system @args failed: $?";
>
> if ( $? == -1 ) {
>    print "failed to execute: $!\n";
> }
> elsif ( $? & 127 ) {
>    printf qq{child died with signal %d, %s coredump\n}, ( $? & 127 ),
>      ( $? & 128 ) ? 'with' : 'whitout';
> }
> else {
>    printf "child exited with value %d\n", $? >> 8;
> }
> __END__
>
> Espero que isso ajude.
> Se você tiver mais perguntas, eu estou à disposição.
>
> Putamplexos!
> --
> Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
> Perl fanatic evangelist, and amateur {cook, photographer}
>
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/cascavel-pm/attachments/20080118/c7340a00/attachment-0001.html 


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