shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Permissão de execução


From: Guilherme Gall
Subject: Re: [shell-script] Permissão de execução
Date: Mon, 11 Aug 2008 00:15:18 -0300

Cristiano,

O ponto equivale ao comando 'source'. Ele executa o programa passado
por parâmetro no ambiente da shell atual, sem criar uma sub shell.

Exemplo:

$ cat exemplo.sh
VAR="Olá mundo"
$ echo $VAR

$ chmod +x exemplo.sh
$ ./exemplo.sh #exemplo.sh definiu um valor para VAR em uma sub shell
$ echo $VAR #portanto, ela não existe mais nesse ponto

$ source exemplo.sh # exemplo.sh foi executado no ambiente da shell atual
$ echo $VAR # portanto, VAR passa a ter o valor que foi definido para
ela por exemplo.sh
Olá mundo

Quanto ao uso do 'source' ser um problema de segurança, lembre-se que
executar qualquer coisa através dele não te dá mais permissões do que
as que você já tinha. Por exemplo, vou tentar remover o arquivo
/var/log/messages, que só dá permissões de escrita para o root:

$ cat exemplo2.sh
rm -f /var/log/messages
$ . exemplo2.sh # usei ponto no lugar de 'source' para você ver que
são equivalentes
rm: imposível remover `/var/log/messages': Permissão negada

Saudações,
-- 
Guilherme Magalhães Gall



2008/8/10 Cristiano Ferrari <address@hidden>:
> Salve honoráveis, boa noite.
>
> Sempre que escrevo um código em um script que possa ser reutilizado em
> outros (tipo funções, por exemplo) ou que possa compartilhar
> parâmetros com outros scripts, como váriáveis, eu costumo por estes
> trechos em arquivos separados e incorporá-los usando o comando: '.
> /fullpath/arquivo.sh' no código do script (meio sem saber extamente o
> porquê do '. ' antes do endereço do arquivo).
>
> Eu sempre dei, previamente, permissão de execução para este arquivo de
> parâmetros/funções, mas hoje, ao esquecer de dar permissão a um novo
> arquivo destes, percebi que ela não é necessária (!!!) para que este
> arquivo seja executado.
>
> Isso nunca havia me ocorrido, mas me chamou a atenção para um detalhe:
> este tipo de comportamento não compromete a segurança?
>
> Afinal, se eu tentar chamar o arquivo diretamente (ex:
> '/fullpath/parametros.sh'), seja via outro script ou diretamente no
> prompt, o shell nega a execução, mas se chamá-lo usando '.
> /fullpath/parametros.sh' ele é executado, inclusive no prompt (e eu
> nem preciso ser root para isso).
>
> Talvez eu esteja confundindo conceitos ou usando o '. /arquivo'
> indevidamente.
>
> Então, alguém, por favor, poderia me explicar por que eu consigo
> executar um arquivo sem permissões de execução apenas acrescentando um
> '. ' antes dele?
>
> Abraço
>
> Cristiano Ferrari
>
>
> ------------------------------------
>
> ---------------------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de programação, como 
> perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio 
> aviso.
> ---------------------------------------------------------------------
> Sair da lista: address@hidden
> ---------------------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em 
> http://www.listas-discussao.cjb.net
> ---------------------------------------------------------------------
> Servidor Newsgroup da lista: news.gmane.org
> Grupo: gmane.org.user-groups.programming.shell.brazil
>
> Links do Yahoo! Grupos
>
>
>


reply via email to

[Prev in Thread] Current Thread [Next in Thread]