quinta-feira, 29 de abril de 2010

Há semelhanças entre o MS-DOS e o Linux?

Sendo facto concordado por muitos que o MS-DOS se trata em parte de uma cópia dos sistemas Unix bem mais antigos, terá o MS-DOS bastantes semelhanças com os sistemas da família UNIX, como será o Linux. Vejamos algumas semelhanças ou mesmo comandos diferentes mas com funções similares:

MS-DOS Linux/UNIX

attribchmod
backuptar
cdcd
datedate
dirls
clsclear
copycp
delrm
deltreerm -R
editvi/pico/joe
exitexit
formatfdformat
ipconfigifconfig
mkdir/mdmkdir
more <>more file
moverename/mv
netstatnetstat
pingping
rmdirrmdir
timetime
tracerttraceroute
typecat/less
winstartx


Entre muitas outras semelhanças, para não falar dos utilitários como ftp, telnet, etc, ou não fosse o MS-DOS muito baseado no UNIX, apesar de não ser sequer minimamente tão poderoso quanto este último.

Fonte: http://www.comandoslinux.com/

Comandos Linux - Lista Rápida de Comandos para Linux/UNIX

Comandos de Controlo e Acesso
exit - Terminar a sessão, ou seja, a shell (mais ajuda digitando man sh ou man csh)
logout - Deslogar, ou seja, terminar a sessão actual, mas apenas na C shell e na bash shell
passwd - Mudar a password do nosso utilizador
rlogin - Logar de forma segura noutro sistema Unix/Linux
ssh - Sessão segura, vem de secure shell, e permite-nos logar num servidor através do protocolo ssh

slogin - Versão segura do rlogin
yppasswd - Mudar a password do nosso utilizador nas páginas amarelas (yellow pages)

Comandos de Comunicações

mail - Enviar e receber emails
mesg - Permitir ou negar mensagens de terminal e pedidos de conversação (talk requests)
pine - Outra forma de enviar e receber emails, uma ferramenta rápida e prática
talk - Falar com outros utilizadores que estejam logados no momento
write - Escrever para outros utilizadores que estejam logados no momento

Comandos de Ajuda e Documentação

apropos - Localiza comandos por pesquisa de palavra-chave
find - Localizar ficheiros, como por exemplo: find . -name *.txt -print, para pesquisa de ficheiros de texto por entre os ficheiros da directoria actual
info - Lança o explorador de informações
man - Manual muito completo, pesquisa informação acerca de todos os comandos que necessitemos de saber, como por exemplo man find
whatis - Descreve o que um determinado comando é
whereis - Localizar a página de ajuda (man page), código fonte, ou ficheiros binários, de um determinado programa
Comandos de Edição de Texto
emacs - Editor de texto screen-oriented
pico - Editor de texto screen-oriented, também chamado de nano
sed - Editor de texto stream-oriented
vi - Editor de texto full-screen
vim - Editor de texto full-screen melhorado (vi improved)

Comandos de Gestão de Ficheiros e Directorias

cd - Mudar de directoria actual, como por exemplo cd directoria, cd .., cd /
chmod - Mudar a protecção de um ficheiro ou directoria, como por exemplo chmod 777, parecido com o attrib do MS-DOS
chown - Mudar o dono ou grupo de um ficheiro ou directoria, vem de change owner
chgrp - Mudar o grupo de um ficheiro ou directoria
cmp - Compara dois ficheiros
comm - Selecciona ou rejeita linhas comuns a dois ficheiros seleccionados
cp - Copia ficheiros, como o copy do MS-DOS
crypt - Encripta ou Desencripta ficheiros (apenas CCWF)
diff - Compara o conteúdo de dois ficheiros ASCII
file Determina o tipo de ficheiro
grep - Procura um ficheiro por um padrão, sendo um filtro muito útil e usado, por exemplo um cat a.txt | grep ola irá mostrar-nos apenas as linhas do ficheiro a.txt que contenham a palavra “ola”
gzip - Comprime ou expande ficheiros
ln - Cria um link a um ficheiro
ls - Lista o conteúdo de uma directoria, semelhante ao comando dir no MS-DOS
lsof - Lista os ficheiros abertos, vem de list open files
mkdir - Cria uma directoria, vem de make directory”
mv - Move ou renomeia ficheiros ou directorias
pwd - Mostra-nos o caminho por inteiro da directoria em que nos encontramos em dado momento, ou seja a pathname
quota - Mostra-nos o uso do disco e os limites
rm - Apaga ficheiros, vem de remove, e é semelhante ao comando del no MS-DOS, é preciso ter cuidado com o comando rm * pois apaga tudo sem confirmação por defeito
rmdir - Apaga directorias, vem de remove directory
stat Mostra o estado de um ficheiro, útil para saber por exemplo a hora e data do último acesso ao mesmo
sync - Faz um flush aos buffers do sistema de ficheiros, sincroniza os dados no disco com a memória, ou seja escreve todos os dados presentes nos buffers da memória para o disco
sort - Ordena, une ou compara texto, podendo ser usado para extrair informações dos ficheiros de texto ou mesmo para ordenar dados de outros comandos como por exemplo listar ficheiros ordenados pelo nome
tar - Cria ou extrai arquivos, muito usado como programa de backup ou compressão de ficheiros
tee - Copia o input para um standard output e outros ficheiros
tr - Traduz caracteres
umask - Muda as protecções de ficheiros por defeito
uncompress - Restaura um ficheiro comprimido
uniq - Reporta ou apaga linhas repetidas num ficheiro
wc - Conta linhas, palavras e mesmo caracteres num ficheiro

Exibição ou Impressão de Ficheiros

cat - Mostra o conteúdo de um ficheiro, como o comando type do MD-DOS, e é muito usado também para concatenar ficheiros, como por exemplo fazendo cat a.txt b.txt > c.txt” para juntar o ficheiro a.txt e b.txt num único de nome c.txt
fold - Encurta, ou seja, faz um fold das linhas longas para caberem no dispositivo de output
head - Mostra as primeiras linhas de um ficheiro, como por exemplo com head -10 a.txt, ou usado como filtro para mostrar apenas os primeiros x resultados de outro comando
lpq - Examina a spooling queue da impressora
lpr - Imprime um ficheiro
lprm - Remove jobs da spooling queue da impressora
more - Mostra o conteúdo de um ficheiro, mas apenas um ecrã de cada vez, ou mesmo output de outros comandos, como por exemplo ls | more
less - Funciona como o more, mas com menos features, menos características e potenciais usos
page - Funciona de forma parecida com o comando more, mas exibe os ecrãs de forma invertida ao comando more
pr - Pagina um ficheiro para posterior impressão
tail - Funciona de forma inversa ao comando head, mostra-nos as últimas linhas de um ficheiro ou mesmo do output de outro comando, quando usado como filtro
zcat - Mostra-nos um ficheiro comprimido
xv - Serve para exibir, imprimir ou mesmo manipular imagens
gv - Exibe ficheiros ps e pdf
xpdf - Exibe ficheiros pdf, usa o gv

Comandos de Transferência de Ficheiros

ftp - Vem de file transfer protocol, e permite-nos, usando o protocolo de transferência de ficheiros ftp, transferir ficheiros entre vários hosts de uma rede, como aceder a um servidor de ftp para enviar ou puxar ficheiros
rsync - Sincroniza de forma rápida e flexível dados entre dois computadores
scp - Versão segura do rcp
Comandos de Notícias ou Rede
netstat - Mostra o estado da rede
rsh - Corre umam shell em outros sistemas UNIX
ssh - Versão segura do rsh
nmap - Poderoso port-scan, para visualizarmos portas abertas num dado host
ifconfig - Visualizar os ips da nossa máquina, entre outras funções relacionadas com ips
ping - Pingar um determinado host, ou seja, enviar pacotes icmp para um determinado host e medir tempos de resposta, entre outras coisas

Comandos de Controlo de Processos

kill - Mata um processo, como por exemplo kill -kill 100 ou kill -9 100 ou kill -9 %1
bg - Coloca um processo suspenso em background
fg - Ao contrário do comando bg, o fg traz de volta um processo ao foreground
jobs - Permite-nos visualizar jobs em execução, quando corremos uma aplicação em background, poderemos ver esse job com este comando, e termina-lo com um comando kill -9 %1, se for o job número 1, por exemplo
top - Lista os processos que mais cpu usam, útil para verificar que processos estão a provocar um uso excessivo de memória, e quanta percentagem de cpu cada um usa em dado momento
^y - Suspende o processo no próximo pedido de input
^z - Suspende o processo actual

Comandos de Informação de Estado

clock - Define a hora do processador
date - Exibe a data e hora
df - Exibe um resumo do espaço livre em disco
du - Exibe um resumo do uso do espaço em disco
env - Exibe as variáveis de ambiente
finger - Pesquisa informações de utilizadores
history - Lista os últimos comandos usados, muito útil para lembrar também de que comandos foram usados para fazer determinada acção no passado ou o que foi feito em dada altura
last - Indica o último login de utilizadores
lpq - Examina a spool queue
manpath - Mostra a path de procura para as páginas do comando man
printenv - Imprime as variáveis de ambiente
ps - Lista a lista de processos em execução, útil para saber o pid de um processo para o mandar abaixo com o comando kill, entre outras coisas
pwd - Mostra-nos o caminho por inteiro do diretorio em que nos encontramos em dado momento, ou seja a pathname
set - Define variáveis da sessão, ou seja, da shell, na C shell, na bash ou na ksh
spend - Lista os custos ACITS UNIX até à data
time - Mede o tempo de execução de programas
uptime - Diz-nos há quanto tempo o sistema está funcional, quando foi ligado e o seu uptime
w - Mostra-nos quem está no sistema ou que comando cada job está a executar
who - Mostra-nos quem está logado no sistema
whois - Serviço de directório de domínios da Internet, permite-nos saber informações sobre determinados domínios na Internet, quando um domínio foi registado, quando expira, etc
whoami Diz-nos quem é o dono da shell

Comandos de Processamento de Texto

abiword - Processador de Texto Open Source
addbib - Cria ou modifica bases de dados bibliográficas
col - Reverte o filtro a line feeds
diction - Identifica sentenças com palavras
diffmk - Marca diferenças entre ficheiros
dvips - Converte ficheiros TeX DVI em ficheiros PostScript
explain - Explica frases encontradas pelo programa diction
grap - Preprocessador pic para desenhar gráficos, usado em tarefas elementares de análises de dados
hyphen - Encontra palavras com hífenes
ispell - Verifica a ortografia de forma interactiva
latex - Formata texto em LaTeX, que é baseado no TeX
pdfelatex - Para documentos LaTeX em formato pdf
latex2html - Converter LaTeX para html
lookbib - Encontra referências bibliográficas
macref - Cria uma referência cruzada listando ficheiros de macros nroff/troff
ndx - Cria uma página de indexação para um documento
neqn - Formata matemáticas com nroff
nroff - Formata texto para exibição simples
pic - Produz simples imagens para troff input
psdit - Filtra um output troff para a Apple LaserWriter
ptx - Cria uma indexação permutada mas não em CCWF
refer - Insere referências de bases de dados bibliográficas
roffbib - Faz o run off de uma base de dados bibliográfica
sortbib -Ordena uma base de dados bibliográfica
spell - Encontra erros de ortografia
style - Analisa as características superficiais de um documento
tbl - Formata tabelas para nroff/troff
tex - Formata texto
tpic - Converte ficheiros pic source em comandos TeX
wget - Permite-nos fazer o download completo de páginas web, com todos os ficheiros, de forma fácil e não interactiva, sem exigir por isso presença do utilizador, respeitando também o ficheiro robots.txt

Web

html2ps - Conversor de html para ps
latex2html - Conversor de LaTeX para html
lynx - Navegador web baseado em modo de texto, ou seja, é um web browser que nos permite abrir todo o tipo de páginas visualizando apenas os textos e links, não vendo assim as imagens, e sendo por isso bastante rápido, mas requere prática para ser manuseado
netscape - Navegador web da Netscape
sitecopy - Aplicação que nos permite manter facil e remotamente web sites
weblint - Verificador de sintaxes e de estilos html


quarta-feira, 28 de abril de 2010

Entendendo e usando permissões no Linux (Parte 2)

Introdução

Nesta segunda parte sobre entendimento e uso de permissões no Linux, vamos trabalhar com os comandos umask, chown e chgrp. O primeiro comando permite manipular as permissões padrão (default) do sistema, o segundo é usado para alterar o proprietário do arquivo ou diretório e, por fim, o terceiro é utilizado para mudar o grupo no qual um arquivo/diretório pertence.
Para você entender esses recursos, é extremamente importante que a primeira parte deste assunto tenha sido lida. Isso porque os conceitos mostrados no primeiro artigo serão aplicados aqui. Vamos lá?

Trabalhando com permissões padrão
Pode acontecer de você, por exemplo, criar arquivos com permissões de leitura e gravação para o proprietário e para um grupo usando chmod. Neste caso, você pode não ter permitido nenhum acesso aos outros usuários do sistema. Mas muito provavelmente essa não era sua intenção. Você percebe então que ao criar permissões em arquivos, as permissões padrão podem diferenciar. É aí que entra em cena o comando umask.

O umask (máscara de criação de arquivos) é responsável por controlar as permissões padrão dos arquivos. Mas há algo importante a citar em relação a esse comando: quando esta instrução é utilizada, ela pode, por exemplo, mostrar o valor 07. Neste caso, acrescenta-se um 0 à esquerda, transformando o valor em 007 (sempre que houver uma situação como essa, deve-se interpretar como se houvesse mais um zero à esquerda). Mas isso não significa que o arquivo em questão tenha sido criado sem nenhuma permissão para o proprietário e para o grupo, e tenha sido dada permissões de leitura, gravação e execução para todos os demais. Na verdade, significa exatamente o contrário! Vejamos o porquê:

O umask é uma espécie de filtro pelo qual os arquivos passam para determinar suas permissões. Se o valor da permissão for verdadeiro, continua no arquivo, caso contrário, deverá sair. Observe o esquema abaixo para entender melhor:
Vamos transformar a máscara (no nosso caso, o valor 007) em um valor binário:

007 => 000 000 111

Agora vamos alinhar esse valor com o equivalente em binário para "todas as permissões dadas", ou seja, 777 (este valor é sempre usado neste tipo de operação) e fazer uma adição:

777 => 111 111 111

Então,
000.000.111 ====>007
+ 111 111 111 ====>777
111.111.000

Repare no valor que resultou da adição. Quando há 0 + 1, o valor é 1. Quando há 1 + 1 o valor passa a ser 0 e não 2, pois no sistema binário somente existem os valores 0 e 1 (não há 2 ou outros números). Com os valores do resultado da adição do equivalente binário para 007 e 777 em mãos, vamos agora transformá-los em um valor decimal:

111 111 000 => 770

Esse então passa a ser o valor da permissão padrão. Repare agora que o valor do umask é justamente o contrário do valor normal, ou seja, quando alguém quer, por exemplo, ter 770 como permissão padrão para um arquivo, deve então usar o valor 007, o oposto. Isso significa que o umask vai dar permissão padrão, ou seja, leitura, gravação e execução para o proprietário e para o grupo, mas nenhuma permissão para os demais. Veja, essa situação é exatamente o contrário de 007 se fosse usado chmod. Isso deixa claro que o umask sempre trabalhará com o valor oposto. Isso pode, de fato, parecer confuso, por isso é necessário raciocinar e praticar bastante para ter um entendimento claro do umask e de sua utilidade. Por isso, vamos exercitar: crie um diretório qualquer, por exemplo, iw, e digite:

umask 027 iw

Esse comando faz com que, por padrão, os arquivos criados dentro do diretório iw tenham permissão total para o dono do arquivo, apenas permissão de leitura e execução para o grupo, e nenhuma permissão para os demais. Basta criar um arquivo qualquer dentro desse diretório e digitar "ls -l nome do arquivo" para ver que as permissões padrão são justamente essas, observe:

Note que o arquivo não tem permissão de execução para o proprietário e para o grupo porque não é um arquivo executável. Veja este caso para entender melhor: ao trabalhar com 770 (máscara 007) com determinados arquivos, por que alguns têm, na realidade, valor 660? Simplesmente porque o sistema sabe que para alguns arquivos a permissão de execução não faz sentido. Assim, ele oculta essa permissão e dá ao arquivo com permissão 770 o valor 660. Mesmo assim, é recomendável usar um valor com permissão de execução mesmo para arquivos de textos, pois pode haver um diretório no meio de tudo e, para este caso, a permissão de execução é válida.
Vamos supor agora que você queira que a permissão padrão direcione os arquivos somente ao proprietário (isto é, os outros usuários não têm acesso) e os deixe como leitura, ou seja, você quer ter a permissão r-x------. Para usar o umask é necessário usar o valor contrário, que é -w-rwxrwx. Passando este valor para binário, o resultado é 010 111 111 e passando para decimal, 277 (010 = 2, 111 = 7). Então, o comando que deve ser usado é: umask 277.
Lembre-se de um detalhe importante: as permissões padrão são dadas aos arquivos e diretórios assim que criados. Sendo assim, para alterar permissões particularmente usa-se o comando chmod.

Alterando a propriedade de um arquivo/diretório
Como você já deve saber, todo arquivo ou diretório no Linux tem um dono e um grupo. E se você precisar, por algum motivo, transferir a "posse" desse arquivo/diretório para outro usuário? Fazer isso é muito fácil! Para facilitar a compreensão, vamos fazer o seguinte: transferir o arquivo guia.txt do usuário arthur para o usuário marvin. Para isso, faremos uso do comando chown. Mas, antes de prosseguirmos, esteja atento ao seguinte detalhe: se você "transferir" a propriedade de um arquivo seu para um colega de trabalho, por exemplo, não poderá "tomar" o arquivo de volta. Somente seu colega, agora dono do arquivo, poderá devolvê-lo a você.
O procedimento para alterar a propriedade de arquivo consiste em primeiro informar quem será o novo proprietário e então indicar o arquivo ou diretório. Antes de executar esse passo, vamos digitar o comando "ls -l guia.txt" para comprovarmos que, de fato, arthur é o dono atual do documento:
Agora, vamos executar o procedimento de transferência de propriedade de guia.txt para o usuário marvin por meio do comando chown. Em seguida, vamos digitar novamente "ls -l guia.txt" para mostrar que o processo foi bem sucedido:

chown marvin guia.txt
ls -l guia.txt
Em muitos casos, esse comando pode não ser permitido aos usuários (somente ao root) por questões de segurança. Se você usar o chown e aparecer um aviso de "Permission Denied" ou "Command Not Found" ou equivalente, é porque provavelmente seu usuário se encaixa neste caso. Cabe então ao root permitir a transferência de propriedade dos arquivos. Para isso, você pode utilizar o comando sudo seguido da instrução de transferência. Em poucas palavras, o sudo é uma espécie de lista de autorização para que o seu e outros usuários possam executar tarefas de poder administrativo. Se seu usuário tiver autorização para isso, o sudo pedirá que você informe sua senha na primeira vez que o comando for utilizado. Note que, na imagem anterior, o comando sudo foi utilizado, ficando da seguinte forma:

sudo chown marvin guia.txt

Alterando o grupo de um arquivo/diretório
Também é possível alterar o grupo de um arquivo ou diretório. Para isso, pode ser necessário identificar o grupo no qual o arquivo pertence. Tal procedimento pode ser feito com o comando "ls -lg nome do arquivo/diretório". Veja o caso do nosso arquivo de exemplo guia.txt:

Note na imagem anterior que o arquivo em questão pertence ao grupo terra. Em seguida, foi transferido para o grupo infowester. Neste caso, o comando utilizado foi chgrp. Basta digitar esse comando seguido do nome do novo grupo mais o nome do arquivo. Veja como fica em nosso caso (repare que, novamente, o comando sudo é utilizado):

chgrp infowester guia.txt

Acima, o arquivo guia.txt foi transferido com sucesso para o grupo infowester. É importante citar que você deve ser membro do grupo do qual o arquivo pertencia para poder transferí-lo.

Finalizando
Uma das características que tornam sistemas operacionais baseados no Unix tão seguros é o leque de possibilidades de permissões. Todo arquivo e diretório precisa ter um dono, assim como necessita ter configurações de permissões para informar o que outros usuários e grupos podem ou não fazer. Perceba então que, sabendo configurar permissões, é possível manter o sistema e suas funcionalidades bastante seguras. Por isso, a dica final é: pratique e explore as possibilidades de cada comando.

Fonte: http://www.infowester.com/linuxpermissoes2.php

terça-feira, 27 de abril de 2010

Entendendo e usando permissões no Linux

Introdução

As permissões são um dos aspectos mais importantes do Linux (na verdade, de todos os sistemas baseados em Unix). Elas são usadas para vários fins, mas servem principalmente para proteger o sistema e os arquivos dos usuários. Manipular permissões é uma atividade interessante, mas complexa ao mesmo tempo. Mas tal complexidade não deve ser interpretada como dificuldade e sim como possibilidade de lidar com uma grande variedade de configurações, o que permite criar vários tipos de proteção a arquivos e diretórios.
Como você deve saber, somente o super-usuário (root) tem ações irrestritas no sistema, justamente por ser o usuário responsável pela configuração, administração e manutenção do Linux. Cabe a ele, por exemplo, determinar o que cada usuário pode executar, criar, modificar, etc. Naturalmente, a forma usada para especificar o que cada usuário do sistema pode fazer é a determinação de permissões. Sendo assim, neste artigo você verá como configurar permissões de arquivos e diretórios, assim como modificá-las

Entendendo as permissões

drwx------ ... 2 wester ............. 512 Jan ... 29 23:30 .. Arquivos/
-rw-rw-r-- ... 1 wester ....... 280232 Dec .. 16 22:41... notas.txt

As linhas acima representam um comando digitado (ls -l) para listar um diretório e suas permissões. O primeiro item que aparece em cada linha (drwx----- e -rw-rw-r-) é a forma usada para mostrar as permissões do diretório Arquivos e do arquivo notas.txt. É esse item, que recebe o nome de string, que vamos estudar. Um ponto interessante de citar é que o Linux trata todos os diretórios como arquivos também, portanto, as permissões se aplicam de igual forma para ambos. Tais permissões podem ser divididas em quatro partes para indicar: tipo, proprietário, grupo e outras permissões. O primeiro caractere da string indica o tipo de arquivo: se for "d" representa um diretório, se for "-" equivale a um arquivo. Entretanto, outros caracteres podem aparecer para indicar outros tipos de arquivos, conforme mostra a tabela abaixo:

d => diretório
b => arquivo de bloco
c => arquivo especial de caractere
p => canal
s => socket
- => arquivo "normal"

Repare agora que no restante da string ainda há 9 caracteres. Você já sabe o que significa o primeiro. Os demais são divididos em três grupos de três, cada um representado o proprietário, o grupo e todos os demais, respectivamente. Tomando a linha 2 do exemplo (-rw-rw-r-), desconsiderando o primeiro caractere e dividindo a string restante em 3 partes, ficaria assim:

rw- => a primeira parte significa permissões do proprietário
rw- => a segunda parte significa permissões do grupo ao qual o usuário pertence
r-- => a terceira parte significa permissões para os demais usuários

Vamos entender agora o que significa esses caracteres (r, w, x, -). Há, basicamente, três tipos de permissões: leitura, gravação e execução. Leitura permite ao usuário ler o conteúdo do arquivo mas não alterá-lo. Gravação permite que o usuário altere o arquivo. Execução, como o nome diz, permite que o usuário execute o arquivo, no caso de ser executável. Mas acontece que as permissões não funcionam isoladamente, ou seja, de forma que o usuário tenha ou permissão de leitura ou de gravação ou de execução. As permissões funcionam em conjunto. Isso quer dizer que cada arquivo/diretório tem as três permissões definidas, cabendo ao dono determinar qual dessas permissões é habilitada para os usuários ou não. Pode ser que uma determinada quantidade de usuários tenha permissão para alterar um arquivo, mas outros não, por exemplo. Daí a necessidade de se usar grupos. No caso, a permissão de gravação desse arquivo será dada ao grupo, fazendo com que todo usuário membro dele possa alterar o arquivo. Note que é necessário ter certo cuidado com as permissões. Por exemplo, do que adianta o usuário ter permissão de gravação se ele não tem permissão de leitura habilitada?
Agora que já sabemos o significado das divisões da string, vamos entender o que as letras r, w, x e o caractere - representam:

r => significa permissão de leitura (read);
w => significa permissão de gravação (write);
x => significa permissão de execução (execution);
- => significa permissão desabilitada.

A ordem em que as permissões devem aparecer é rwx. Sendo assim, vamos entender a string do nosso exemplo dividindo-a em 4 partes:

Linha 1:
drwx------ ... 2 wester ............... 512 Jan ... 29 23:30 .. Arquivos/

- é um diretório (d);
- o proprietário pode alterá-lo, gravá-lo e executá-lo (rwx);
- o grupo não pode pode alterá-lo, gravá-lo, nem executá-lo (---);
- os demais usuários não podem alterá-lo, gravá-lo, nem executá-lo (---).

Linha 2:
-rw-rw-r-- ... 1 wester .......... 280232 Dec .. 16 22:41... notas.txt

- é um arquivo (-);
- o proprietário pode alterá-lo, gravá-lo, mas não executá-lo. Repare que como este arquivo não é executável, a permissão de execução aparece desabilitada (rw-);
- o grupo tem permissões idênticas ao proprietário (rw-);
- o usuário somente tem permissão de ler o arquivo, não pode alterá-lo (r--).

A tabela abaixo mostra as permissões mais comuns:

--- => nenhuma permissão;
r-- => permissão de leitura;
r-x => leitura e execução;
rw- => leitura e gravação;
rwx => leitura, gravação e execução.


Configurando permissões com chmod
Nos tópicos anteriores você dever tido pelo menos uma noção do que são permissões e de sua importância no Linux. Chegou a hora de aprender a configurar permissões e isso é feito através do comando chmod (de change mode). Um detalhe interessante desse comando é que você pode configurar permissões de duas maneiras: simbolicamente e numericamente. Primeiramente veremos o método simbólico.

Para ter uma visão mais clara da forma simbólica com o chmod, imagine que tais símbolos se encontram em duas listas, e a combinação deles gera a permissão:

Lista 1
Símbolo
u => usuário
g => grupo
O (letra 'o' maiúscula) => outro
a => todos

Lista 2
Símbolo
r => leitura
w => gravação
x => execução

Para poder combinar os símbolos destas duas listas, usam-se os operadores:

+ (sinal de adição) => adicionar permissão
- (sinal de subtração) => remover permissão
= (sinal de igualdade) => definir permissão

Para mostrar como essa combinação é feita, vamos supor que você deseje adicionar permissão de gravação no arquivo teste.old para um usuário. O comando a ser digitado é:

chmod u+w teste.old

O "u" indica que a permissão será dada a um usuário, o sinal de adição (+) indica que está sendo adicionada uma permissão e "w" indica que a permissão que está sendo dada é de gravação.

Caso você queira dar permissões de leitura e gravação ao seu grupo, o comando será:

chmod g+rw teste.old

Agora, vamos supor que o arquivo teste.old deverá estar com todas as permissões disponíveis para o grupo. Podemos usar então:

chmod g=rwx teste.old

Dica: crie arquivos e diretórios. Em seguida, teste a combinação de permissões com chmod. Isso lhe ajudará muito no entendimento deste recurso.

Usando chmod com o método numérico
Usar o chmod com valores numéricos é uma tarefa bastante prática. Em vez de usar letras como símbolos para cada permissão, usam-se números. Se determinada permissão é habilitada, atribui-se valor 1, caso contrário, atribui-se o valor 0. Sendo assim, a string de permissões r-xr----- na forma numérica fica sendo 101100000. Essa combinação de 1 e 0 é um número binário. Mas temos ainda que acrescentar a forma decimal (ou seja, números de 0 a 9). Para isso, observe a tabela abaixo:

Permissão Binário Decimal
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7

Se você não conhece o sistema binário deve estar se perguntando o que esse "monte" de 0 e 1 tem a ver com os números de 0 a 7. Como o sistema binário somente trabalha com os números 0 e 1 (decimal trabalha com os números de 0 a 9, ou seja, é o sistema de numeração que utilizamos no nosso cotidiano), ele precisa de uma sequência para representar os valores. Sendo assim, na tabela acima, a coluna Binário mostra como são os valores binários dos números de 0 a 7 do sistema decimal.

Chegou a hora então de relacionar a explicação do parágrafo acima com a coluna Permissão. Para exemplificar, vamos utilizar a permissão rw-, cujo valor em binário é 110, que por sua vez, em decimal corresponde ao número 6. Então, em vez de usar rw- ou 110 para criar a permissão, simplesmente usa-se o número 6. Repare que, com o método numérico, usamos somente um dígito para representar uma permissão, em vez de três. Assim sendo, a string de permissões r--r--r-- pode ser representa por 444, pois r-- em decimal é igual a quatro. Observe o exemplo abaixo:

chmod 600 notas.txt

Acima, estão sendo dadas as permissões rw------- ao arquivo notas.txt, pois 6 equivale a rw- e 0 equivale a ---. Como zero aparece duas vezes, forma-se então o valor 600. Faça o comando acima com um arquivo de teste e depois digite ls- l notas.txt para ver o que aparece (notas.txt deve ser substituído pelo arquivo que você está usando). A tabela abaixo mostra uma lista de configurações bastante utilizadas:

--------- 000
r-------- 400
r--r--r-- 444
rw------- 600
rw-r--r-- 644
rw-rw-rw- 666
rwx------ 700
rwxr-x--- 750
rwxr-xr-x 755
rwxrwxrwx 777

As três últimas permissões da tabela são comumente usadas para programas e diretórios.

Finalizando
Como você viu, é muito mais prático utilizar o chmod com o método numérico. Mas você pode ter ficado confuso com todo esse esquema de permissão. Mas não se sinta culpado por isso (e também não ponha toda a culpa na ineficiência do autor para explicar o assunto :D ). A questão é que nos sistemas baseados em Unix, permissões são um dos aspectos mais complexos existentes. Tal complexidade é equivalente à eficiência do uso de permissões. Por isso, a melhor maneira de entender as permissões é treinando. Sendo assim, ao trabalho! Treine, crie permissões e veja seus resultados. Boa aprendizagem!

Serra X Dilma

Imagens bizarras dos pré-candidatos a presidência da República:
OBS: qualquer semelhança é mera coincidência.

Banco de dados MySQL e PostgreSQL

Introdução

É muito fácil encontrar serviços de hospedagem de sites que oferecem em seus planos os Sistemas Gerenciadores de Banco de Dados (SGDB) MySQL e PostgreSQL, embora isso seja mais comum com o primeiro. Como esses SGBD não são usados apenas na internet, talvez seja de seu interesse utilizá-los em seus projetos de software, uma vez que cada um é dotado de vantagens interessantes, como a gratuidade de uso. Para ajudá-lo a escolher o melhor para sua aplicação, este artigo apresenta as principais características de ambos, começando com o MySQL. Para tanto, é recomendável que você tenha algum conhecimento sobre os conceitos de bancos de dados.

Alguns termos

Mesmo aquelas pessoas que já trabalham com banco de dados podem ficar "perdidas" no meio de tantos nomes de recursos. Assim, para facilitar a compreensão, segue uma lista com uma breve explicação sobre os recursos mais importantes:

- Referential integrity: também conhecido como "integridade referencial", esse recurso consiste em restrições ou regras existentes para uma correta inserção de dados, por exemplo, para impedir que uma tabela seja preenchida sem que isso ocorra em outra;
- Schemas: recurso que permite cruzar informações em um mesmo banco de dados, mas em estruturas diferentes;
- SQL: sigla para Structured Query Language, é uma linguagem utilizada em bancos de dados relacionais;
- SSL: sigla para Secure Sockets Layer, consiste em um protocolo para a troca segura de informações;
- Stored procedures: esse recurso consiste em comandos SQL "guardados" no servidor para, por exemplo, executar tarefas repetitivas, evitando que um cliente tenha que executá-las constantemente;
- Transactions: também conhecidas como transações, as transactions são instruções executadas em um bloco designado por parâmetros que indicam seu início e seu fim;
- Triggers: também chamados de gatilhos, os triggers são recursos que permitem o acionamento de uma seqüência de comandos logo em seguida ou logo após um evento;
- Views: os views consistem em um tipo de tabela virtual formada por campos extraídos de uma tabela "verdadeira", facilitando o controle sob os dados acessados.

O banco de dados MySQL

O MySQL é um dos sistemas de gerenciamento de banco de dados mais populares que existe e, por ser otimizado para aplicações Web, é amplamente utilizado na internet (inclusive aqui no InfoWester). É muito comum encontrar serviços de hospedagem de sites que oferecem o MySQL e a linguagem PHP, justamente porque ambos trabalham muito bem em conjunto.

Outro fator que ajuda na popularidade do MySQL é sua disponibilidade para praticamente qualquer sistema operacional, como Linux, FreeBSD (e outros sistemas baseados em Unix), Windows e Mac OS X. Além disso, o MySQL é um software livre (sob licença GPL), o que significa que qualquer um pode estudá-lo ou alterá-lo conforme a necessidade.

Entre as características técnicas do SGBD MySQL, estão:

- Alta compatibilidade com linguagens como PHP, Java, Python, C#, Ruby e C/C++;
- Baixa exigência de processamento (em comparação como outros SGBD);
- Vários sistemas de armazenamento de dados (batabase engine), como MyISAM, MySQL Cluster, CSV, Merge, InnoDB, entre outros;
- Recursos como transactions (transações), conectividade segura, indexação de campos de texto, replicação, etc;
- Instruções em SQL, como indica o nome.

Até o momento em que este artigo era escrito, o MySQL estava na versão 5.0 (mais precisamente, 5.0.26). Em relação à versão 4.0, houve acréscimo de vários recursos e melhorias importantes, como:

- Triggers;
- Stored procedures;
- Sub-selects;
- Suporte total ao Unicode;
- INFORMATION_SCHEMA (para armazenamento do dicionário de dados);
- Server side cursors;
- Suporte a SSL;
- Melhoria no tratamento de erros.

O MySQL surgiu na Suécia pelas mãos de três colegas: Allan Larsson, David Axmark e Michael Monty Widenius. Trabalhando com base de dados, eles sentiram a necessidade de fazer determinadas conexões entre tabelas e usaram o mSQL para isso. Porém, não demorou para perceberem que essa ferramenta não lhes atendia conforme o necessário e passaram a trabalhar em uma solução própria. Surgia então o MySQL, cuja primeira versão foi lançada no ano de 1996.

Um fato importante a ser destacado sobre o MySQL é que esse SGBD também possui uma licença comercial, isto é, paga. Neste caso, é possível obter suporte diferenciado dos desenvolvedores.

Vale ressaltar também que, em fevereiro de 2008, o MySQL foi comprado pela Sun Microsystems, que pagou a quantia de 1 bilhão de dólares pela aquisição. Mais informações sobre essa transação neste link (em inglês).

O banco de dados PostgreSQL

O sistema gerenciador de banco de dados PostgreSQL teve seu início na Universidade de Berkeley, na Califórnia, em 1986. À época, um programador chamado Michael Stonebraker liderou um projeto para a criação de um servidor de banco de dados relacionais chamado Postgres, oriundo de um outro projeto da mesma instituição denominado Ingres. Essa tecnologia foi então comprada pela Illustra, empresa posteriormente adquirida pela Informix. Porém, mesmo diante disso, dois estudantes de Berkeley (Jolly Chen e Andrew Yu) compatibilizaram o Postgres à linguagem SQL. Este projeto recebeu o nome de Postgres95.

Em 1996, quando o projeto estava estável, o banco de dados recebeu o nome de PostgreSQL. No entanto, enquanto ainda possuía o nome Postgres95, o banco de dados teve várias mudanças. O seu código foi totalmente revisado e a linguagem SQL foi definida como padrão.

Tecnicamente falando, o PostgreSQL é um banco de dados relacional e orientado a objetos. Um de seus atrativos é possuir recursos comuns a banco de dados de grande porte, o que o deixa apto a trabalhar, inclusive, com operações de missão crítica. Além disso, trata-se de um banco de dados versátil, seguro, gratuito e de código aberto (disponível sob uma licença BSD).
Entre suas características, tem-se:

- Compatibilidade multi-plataforma, ou seja, executa em vários sistema operacionais, como Windows, Mac OS X, Linux e outras variantes de Unix;
- Compatibilidade com várias linguagens, entre elas, Java, PHP, Python, Ruby, e C/C++;
- Base de dados de tamanho ilimitado;
- Tabelas com tamanho de até 32 TB;
- Quantidade de linhas de até 1.6 TB ilimitada;
- Campos de até 1 GB;
- Suporte a recursos como triggers, views, stored procedures, SSL, MVCC, schemas, transactions, savepoints, referential integrity e expressões regulares;
- Instruções em SQL, como indica o nome.

No momento em que este artigo era escrito, o PostgreSQL estava na versão 8.1.

MySQL x PostgreSQL

MySQL ou PostgreSQL, qual usar? Ambos são muito bons e não fazem feio diante das alternativas pagas. Além disso, possuem recursos e vantagens em comum, o que significa que, para a maioria das aplicações, ambos podem ser usados. Na verdade, o correto não é tentar descobrir qual é o melhor, mas em que situação um ou outro deve ser utilizado.

O PostgreSQL é otimizado para aplicações complexas, isto é, que envolvem grandes volumes de dados ou que tratam de informações críticas. Assim, para um sistema de comércio eletrônico de porte médio/alto, por exemplo, o PostGreSQL é mais interessante, já que esse SGBD é capaz de lidar de maneira satisfatória com o volume de dados gerado pelas operações de consulta e venda.

O MySQL, por sua vez, é focado na agilidade. Assim, se sua aplicação necessita de retornos rápidos e não envolve operações complexas, o MySQL é a opção mais adequada, pois é otimizado para proporcionar processamento rápido dos dados e tempo curto de resposta sem exigir muito do hardware. Se você precisa, por exemplo, de um banco de dados para armazenar o conteúdo do seu site, de seu fórum ou necessita manter um cadastro de usuários de um portal, o MySQL "serve como uma luva", pois tais aplicações não necessitam dos recursos avançados que o PostgreSQL oferece.

Para escolher um destes dois SGBD, procure entender bem quais recursos sua aplicação precisa. Tente estimar o volume de dados, avalie o hardware disponível, certifique-se das funcionalidades necessárias e, posteriormente, procure por informações mais detalhadas do MySQL e do PostGreSQL. Se sua aplicação for simples - principalmente se for algo ligado à internet -, não é preciso pensar muito: o MySQL é uma escolha satisfatória, pois é facilmente encontrado em serviços de hospedagem.

Todavia, há situações em que tanto o MySQL quanto o PostgreSQL serão boas escolhas. Nesses casos, é recomendável fazer testes com ambos e avaliar qual oferece mais vantagens à aplicação.

Finalizando

Um banco de dados pode ser a diferença entre ter e não ter um negócio, seja ele de qualquer porte. Por isso, a escolha deve ser bem feita e aspectos como desempenho, recursos, documentação e suporte devem ser considerados. Em todos esses pontos o MySQL e o PostgreSQL são excelentes, por isso, a escolha entre um deles só depende de sua aplicação.

Para saber mais sobre o PostgreSQL, visite: http://www.postgresql.org (em inglês) e http://www.postgresql.org.br.

Para saber mais sobre o MySQL, visite: http://www.mysql.com (em inglês) e http://www.mysqlbrasil.com.br.

quinta-feira, 15 de abril de 2010

Tarado do Ceasa



RIQUEZA DA LÍNGUA PORTUGUESA

Este texto é dos melhores registros de língua portuguesa que eu tenho lido sobre a nossa digníssima 'língua de Camões', a tal que tem fama de ser pérfida, infiel ou traiçoeira.

Um político que estava em plena campanha chegou a uma pequena cidade, subiu para ao palanque e começou o discurso:

"Compatriotas, companheiros, amigos!
Encontramo-nos aqui, convocados, reunidos ou juntos para
debater, tratar ou discutir
um tópico, tema ou assunto,
o qual me parece transcendente, importante ou de vida ou morte.
O tópico, tema ou assunto que hoje nos
convoca, reúne ou junta
é a minha postulação, aspiração ou candidatura
a Presidente da Câmara deste Município."

De repente, uma pessoa do público pergunta:

- Ouça lá, porque é que o senhor utiliza sempre três palavras, para
dizer a mesma coisa? O candidato respondeu:

- Pois veja, meu senhor: a primeira palavra é para pessoas com nível
cultural muito alto, como intelectuais em geral; a segunda é para
pessoas com um nível cultural médio, como o senhor e a maioria dos que estão
aqui; a terceira palavra é para pessoas que têm um nível cultural muito
baixo, pelo chão, digamos, como aquele alcoólatra, ali deitado na esquina.

De imediato, o alcoólatra levanta-se cambeleando e 'dispara':

- Senhor postulante, aspirante ou candidato: (hic)
o fato ,circunstância ou razão
pela qual me encontro num estado etílico, alcoolizado ou mamado (hic)
não implica, significa, ou quer dizer que
o meu nível (hic) cultural seja ínfimo, baixo ou mesmo rasca (hic).
E com toda a reverência, estima ou respeito que o senhor me merece (hic)
pode ir agrupando, reunindo ou juntando (hic)
os seus haveres,coisas ou bagulhos (hic)
e encaminhar-se, dirigir-se ou ir diretinho (hic)
à leviana da sua progenitora, à mundana da sua mãe biológica
ou ... à puta que o pariu !


quarta-feira, 14 de abril de 2010

Uma questão de negação

Algumas línguas do mundo possuem mais de um termo para fazer negações. É o caso do francês,
por exemplo, que usa a combinação de "ne" com "pas" mas também possui o "non". Também é o
caso do inglês, que possui três negativas: "no", "not" e "don´t".

Como acontece em todas as línguas que apresentam esta característica, cada tipo de termo para negação só pode ser usado em um contexto bem específico, e uma forma não pode ser trocada por outra na mesma situação.

Assim, o "no" do inglês é usado quando se quer dar a resposta curta, seguida de vírgula ou ponto final. Exemplo:

"- Are you Brazilian?
- No!"

ou

"- Are you Brazilian?
- No, I´m English."

O "not", por sua vez, só pode ser usado quando a construção envolver o verbo "to be", assim:

"I am not brazilian."
"This is not right."
"We are not going there."

E por fim, o "don´t" (e sua variante "doesn´t" para a terceira pessoa) é usado em todos os outros contextos. Mais especificamente, com qualquer verbo que não seja "to be" e que não apareça na resposta curta.

"I don´t like this."
"He doesn´t speak English."
"Do you have a pen? No, I don´t."

E agora, analisando o caso do português, quantos termos para negar nós temos? A resposta é: DEPENDE!

Na escrita, ninguém duvidaria que temos apenas o "não", usado em qualquer contexto de negação.

No entanto, se prestarmos mais atenção ao português falado hoje em dia em várias regiões do Brasil, vamos perceber que está havendo um processo de distinção entre dois tipos de "não"... Um deles é pronunciado como "não" mesmo, e o outro é pronunciado algo como "num".

Leia a frase abaixo em voz alta (de um jeito que você faria se estivesse falando na rua) e preste atenção à sua pronúncia de "não":

"Eu não sei a que horas eu vou."

Provavelmente você leu:

Eu "num" sei que horas eu vou.

Agora se o contexto fosse:

- Você vai no cinema?
- Não.

Com certeza, você diria "não", com todas as letras e bonitinho, sem comer nada... Nenhuma pessoa, frente à pergunta "Você vai ao cinema?" responderiam "num" simplesmente.
O "num" só apareceria se acompanhado de algo mais. Ex:

- Você vai no cinema?
- "Num" vou.

Ou seja, o português falado hoje em dia, já distingue um "não" usado para respostas curtas (que se assemelha ao "no" do inglês) e um "num" usado quando seguido de verbos (que resume a função do "don´t" e "not" do inglês).

Interessantíssimo, não? (com a pronúncia completa "não")

Fonte: http://panlinguistica.blogspot.com/

segunda-feira, 12 de abril de 2010

CRASE

A palavra crase origina-se do grego krasis, através do latim crasis, com o sentido de mistura. Consiste a crase na fusão de duas vogais idênticas. No caso da fusão da preposição a com o artigo definido a(s) ou com o pronome demonstrativo a(s) a crase é indicada por um acento grave (à). Emprega-se igualmente o acento grave quando o pronome demonstrativo a(s) pode ser substituído por aquela.

Para decidir se há ou não crase em determinadas locuções devemos ter em mente, em primeiro lugar, as duas seguintes regras fundamentais:

1. A crase da preposição a com o artigo definido a(s) só ocorre diante de palavras femininas, visto que o artigo definido das palavras masculinas é o(s) e não a(s).
Constitui erro primário, portanto, usar acento grave na preposição a de locuções como a contento, a gosto, a esmo, a exemplo, a fogo, a frio, a fundo, a juízo de, a lápis, a modo de, a pé, a prazo.
A única exceção consiste nas locuções em que está implícita e oculta uma palavra feminina, como moda, maneira. Ex.: gastrectomia à Billroth I.

2. Sempre que houver dúvida devemos mentalmente substituir a palavra feminina por outra masculina; se a partícula a se alterar em ao, usa-se o acento grave indicativo de crase; se não se alterar, trata-se da preposição a, que deve permanecer sem acento; se for substituída por o(s) trata-se de artigo definido, que também não comporta acento.

Outras normas que poderão nos orientar e que devemos observar:

3. Há palavras que não admitem a anteposição do artigo, tais como verbo, advérbio, artigo indefinido (um, uma), pronome pessoal (ela, nós, vós), pronome demonstrativo (esta, essa), pronome relativo (quem, cuja), pronome indefinido (cada, alguma, alguém, toda, qualquer, ambas). Nestes casos, é óbvio que não há crase.

4. Diante de possessivos femininos usados em função adjetiva (minha, tua, sua, nossa vossa), o acento é facultativo.

5. Em locuções prepositivas (à custa de, à espera de,) e locuções conjuntivas (à proporção que, à medida que) precedendo nomes femininos, usa-se o acento.

6. Em locuções adverbiais diante de nomes femininos (à vontade, às vezes, à vista, à distância) usa-se igualmente o acento.

7. Usa-se acento diante de palavras femininas após os verbos regidos pela preposição a (assistir a, responder a)

8. No caso do pronome relativo qual, usa-se o acento sempre que o antecedente for do gênero feminino. Quando o pronome é interrogativo, no entanto, não há crase.

9. Usa-se acento antes de adjuntos adverbiais de tempo e diante da palavra horas (à tarde, à noite, às 10 horas).

10. Constitui erro a indicação de crase com o artigo no singular diante de um nome no plural.

Há outras particularidades de menor interesse para a linguagem médica que se encontram nas gramáticas e publicações especializadas.
Vistas estas noções básicas, podemos listar algumas das locuções mais utilizadas e que, por vezes, geram dúvidas: [3]

A. Com acento indicativo de crase.

Exemplos:

à direita às claras
à esquerda às expensas
à escolha às margens de
à evidência às ordens
à espera às vezes
à falta chegar à conclusão
à feição dar à luz
à força estar à altura
à frente estar à espera
à maneira estar à disposição
à medida estar à vista
à disposição estar à vontade
à primeira vista exceção à regra
à proporção faltar às aulas
à raiz de frente à
à revelia igual à que
à risca passar à frente
à saída saltar à vista
à semelhança à vontade
à vista uma à outra

B. Sem crase

Nos seguintes exemplos não há crase e usa-se apenas a preposição a.

a bem de a instância
a curta distância a jusante
a pouca distância a montante
a meia distância de ponta a ponta
a grande distância de segunda a sexta
a duas mãos folha a folha
a duras penas frente a

C. Crase facultativa

Em muitas locuções a crase é facultativa, podendo-se usar apenas a preposição. Exemplos:

comparecer a/à reunião face a/à
com respeito a/à favorável a/à
contíguo a/à junto a/à
contrário a/à graças a/à
de encontro a/à no tocante a/à
dar vazão a/à próximo a/à
dirigir-se a/à rumo a/à
em frente a/à semelhante a/à


Referências bibliográficas:

1. CUNHA, A. G. – Dicionário etimológico Nova Fronteira da Língua Portuguesa. Rio de Janeiro, Ed. Nova Fronteira S.A., 1986.
2. ANDRADE, A.L. – A crase. Rio de Janeiro, Organização Simões Ed., 1958.
3. LUFT, C.P. – Novo manual de português. São Paulo, Ed. Globo, 1995.
4.http://usuarios.cultura.com.br/jmrezende/crase.htm

Publicado no livro Linguagem Médica, 3a. ed., Goiânia, AB Editora e Distribuidora de Livros Ltda, 2004..

Joffre M de Rezende
Prof. Emérito da Faculdade de Medicina da Universidade Federal de Goiás
Membro da Sociedade Brasileira de História da Medicina
e-mail: jmrezende@cultura.com.br
http:www.jmrezende.com.br
10/9/2004.

ONDE x AONDE

Freqüentemente se confunde o emprego correto das palavra onde e aonde. Embora signifique um preciosismo da gramática tradicional, na língua culta é aconselhável o emprego adequado de cada uma das formas.
A palavra onde, enquanto advérbio de lugar, é empregada para indicar o lugar em que ocorre a ação ou o estado verbal. Isso se dá, inclusive, em sentenças interrogativas:

Exemplos:
Eu lhe contava onde passei minha infância.
Onde você passou a tua infância?

A palavra aonde, enquanto advérbio de lugar, é empregada para indicar o lugar para onde aponta a ação verbal. Desse modo, o aonde sempre acompanha um verbo de movimento (ir, levar, entregar e etc.). Da mesma forma que o advérbio onde, o aonde também se apresenta em sentenças interrogativas:

Exemplos:
Eu vou aonde o trem me levar!
Aonde o trem pode me levar?

As palavras onde e aonde podem exercer a função de pronome relativo. O emprego de ambas as palavras deve respeitar essa noção verbal indicada acima. Além disso, deve ser observado o termo da oração ao qual o pronome relativo se refere. Os pronomes onde/aonde sempre substituem um termo indicativo de lugar.

Exemplos:
Essa é a piscina onde competi pela primeira vez.
Ela sabia o lugar aonde você iria mais tarde.


Por: Minigramática
Fonte: http://www.mundovestibular.com.br/articles/560/1/ONDE-x-AONDE/Paacutegina1.html