sexta-feira, novembro 09, 2007

Comandos Básicos Linux

- Man

Comando que nos mostra o manual de um outro comando.
Uso: man [seção] comando
Observe que seção é opcional, mas pode ser:

1à Comandos do usuário
2à Chamadas ao sistema
3à Biblioteca de funções
4à Dispositivos
5à Formatos de arquivos
6à Jogos
7à Informações Gerais
8à Administração do sistema

Exemplo de uso:
man 1 ls
Utilize /palavra para procurar e q para sair.

- Logout
Fecha a shell do usuário. Este comando é utilizado quando se termina sua sessão ou para se trocar de usuário.

- Shutdown -r now
Comando utilizado para reiniciar a máquina. Possui alguns similares:
Reboot
Init 6
Ctrl + Alt + Del
Existe também o shutdown -h now que desliga a máquina. Seus similares:
Halt
Init 0

- Su
Utilizado para se trocar de usuário sem efetuar logout. Muito comum em acessos via rede, já que via rede por default o root não pode se logar.
Usa-se também su -c "comando a executar" para se executar um comando com poderes de root e depois retornar. Obviamente será pedida uma senha.
Uso do su:
su nomeDoUsuarioAseVirar

- Ls
Comando que serve para listar arquivos. Suas opções mais utilizadas são
-la, onde o -l significa para listar as permissões (inclusive) e o -a para listar todos os arquivos (lembrando que para o linux arquivos começados com . são ocultos).
OBS: O Conectiva Linux possui um alias chamado l para o comando ls -la, use-o e caso a sua distribuição não contenha tal alias, crie-o. Veja mais adiante como fazê-lo.

- Cd (deslocamento relativo x absoluto)
Comando para mudar-se de diretório. O deslocamento absoluto se tem quando utilizamos a raiz (/) para indicarmos para onde queremos ir. Por exemplo, imaginemos que estamos no diretório /usr/src/linux e desejamos ir para o diretório /usr/src/teste. Temos duas opções, a seguir:
cd /usr/src/teste à Deslocamento absoluto, observe o uso do / no início do diretório para o qual queremos ir
cd http://ivandroconradi.multiply.com/teste à Deslocamento relativo, perceba que se estivéssemos em um outro diretório (/usr) por exemplo, não iríamos cair onde queremos. Daí a convenção de "relativo".

- Cp
Copia arquivos. Use: cp arquivoASerCopiado novoArquivo
Opções interessantes:
-i à Pede confirmação antes de substituir um arquivo existente
-R à Cópia recursiva. Serve para copiar diretórios e seu conteúdo.

- Mv
Move arquivos. Use-o também para renomear.
Uso: mv arquivo novaLocalizacao/
mv arquivo novoNome
Recomendado:
-i à Confirma antes de substituir um arquivo existente.
OBS: No Conectiva Linux existe um alias tanto para o comando cp como para o mv com a opção -i.

- Alias
Cria um apelido para um comando. Tem precedência sobre o comando, ou seja, pode-se criar um alias do tipo: alias ls="ls -la". Toda vez que digitarmos ls na verdade ele executará ls -la.

- Clear
Limpa a tela. Recomenda-se a criação de um alias chamado c para este comando.

- Mkdir (-p)
Comando para a criação de diretórios. Usa-se o -p caso se queira criar uma
"árvore" de diretórios.

- Rmdir (-p)
Complemento do comando mkdir. Serve para remover um diretório vazio. A opção -p serve para remover uma árvore de diretórios vazia (sem arquivos).

- Rm (-rf)
Comando utilizado para apagar arquivos. Observe que o rm simplesmente não apaga diretórios. Sua opção -r indica para apagar recursivamente, ou seja, ir apagando todos os arquivos em subdiretórios e inclusive os próprios diretórios. A opção -f força apagar, e não emite mensagens de erro caso não exista um arquivo.
Ex: rm -rf arquivoQueNaoExiste
Não acontecerá NADA. Nenhuma mensagem de erro será informada.

- Who (w, who is god, whoami)
O commando who e w listam os usuários que estão logados na máquina. O w tem uma saída um pouco mais complexa, mostrando mais informações.
O comando who is god é uma sátira e retorna o nome de seu usuário.
O comando whoami (pode ser escrito who am i) também retorna o nome de seu usuário e é utilizado para saber com qual usuário você está logado, muito usado quando se utiliza o su e acaba se confundindo quem é você.

- Df
Mostra informações de sistemas de arquivos montados (mesmo CDRom e Disquete).

- Free
Mostra informações de memória (swap inclusive).

- Cat /proc/cpuinfo
Informações muito completas de seu processador.

- Setterm
Este comando serve para modificar configurações do terminal do Linux, tais como cor de fundo e cor da letra.
Ex:
setterm -background green --> Fundo Verde
setterm -foreground yellow --> Letra "amarela". O amarela está entre aspas devido ao fato de que a cor não parece ser amarelo não.
OBS: Este comando mudará a cor a partir do momento em que ele for dado, ou seja, você precisa imprimir algo na tela ou dar um clear para realmente mudar a cor.

- Tput
Utilizaremos este comando para posicionar o cursor na tela, onde quisermos. Ele será muito útil quando estivermos construindo shell scripts.
Ex:
tput cup 5 10 à Posiciona o cursor na linha 5 coluna 10.

- Uptime
Mostra a quanto tempo o sistema está ligado. Os maiores uptimes da internet são com máquinas UNIX.

- Arquivos da Inicialização
Alguns arquivos são executados quando o sistema reinicializa. O que nos será conveniente falar por agora será o arquivo /etc/rc.d/rc.local (todas as distribuições devem tê-lo implementado).
Este arquivo será o último a ser executado quando da inicialização do sistema.
Diversos arquivos são executados no processo de entrada de um usuário no sistema.
São eles:
.bashrc
.profile
.bash_login
Os 3 se localizam no HOME do usuário
E:
/etc/bashrc
/etc/profile
Observe que enquanto os 3 primeiros são exclusivos dos usuários (cada usuário pode ter suas configurações), os últimos 2 são globais a todos os usuários que entrarem no sistema.
Não recomenda-se alterar o arquivo /etc/profile já que este é de configurações e variáveis.

- Variáveis
Variáveis nada mais são do que espaços na memória que armazenam valores. O linux possui variáveis do próprio sistema, que armazenam valores de configurações ou informações da máquina.
Para vê-las utilize o comando set.
Para darmos um valor a uma variável e torna-la global ao sistema, fazemos
export variável=valor.
Para retirarmos uma variável fazemos unset variável.

- Variável PS1
Esta variável guarda os valores para o PROMPT do Linux. Observe que estes valores podem ser variáveis interpretadas pela SHELL, e por default o são, ou seja, se você utilizar uma shell que não a shell BASH, eles podem ficar sem sentido.
A variável PS1 é uma variável normal do sistema, qualquer valor que for dado a ela irá ficar no prompt.
No entanto ela possui alguns valores especiais interessantes, eis alguns:
\h à Host da máquina
\W à Diretório Corrente
\w à Caminha completo do diretório corrente
\u à Nome do usuário
\t à Hora
\\$ à Fica $ se for usuário normal e # se for root
Exemplo:
export PS1="[\h@\w]\\$ "

- Arquivo /etc/motd
Este arquivo é lido pelo sistema quando um usuário loga na máquina e seu conteúdo é enviado para a tela do usuário, como uma mensagem de boas vindas ou algo do tipo. Preste atenção que comandos NÃO serão interpretados.

- Arquivo /etc/issue
Tela vista ANTES do usuário se logar. Seria a própria mensagem antes do login. Observe que o arquivo /etc/issue.net é o mesmo que o issue mas é válido para conexões via rede (telnet). Em algumas distribuições este arquivo é apenas um link para o /etc/issue.

- Ps (aux)
Comando que lista os processos em execução no sistema. Recomenda-se sempre utiliza-lo com as opções AUX, para que liste TODOS os processos ativos no sistema.

- Kill
Serve para matar um processo em execução. Deve-se utilizar um dos sinais existentes para esta tarefa. O sinal padrão é o sinal 15. Após o sinal, deve-se informar o PID (identificador único de processos) do processo que se deseja matar (encerrar).

- Killall
Implementação do linux muito interessante. Permite-se que se mate diversos processos com o mesmo nome de uma única vez. Observe que pode utilizá-lo para matar um único processo pelo nome, desde que se tenha o cuidado de perceber se não existem outros processos com este nome.
Ex: killall httpd
Killall -9 vi

- Sinais (1, 9, 15)
É importante se lembrar destes 3 sinais principais:
1-) SigHUP à Manda a aplicação reiniciar
9-) SigKILL à Manda o kernel tirar a aplicação da lista de processos ativos (mata mesmo!)
15-) SigTERM à Manda um sinal para que a aplicação termine normalmente
Os sinais são utilizados para comunicações INTER-PROCESSOS, ou seja, quando um processo deseja indicar algo para outro processo.
Neste caso, o processo kill (killall é a mesma coisa), envia o sinal que pedirmos para a aplicação.
Existem outros sinais (como SigINT) que são utilizados pelo sistema. Para visualizá-los utilize o comando kill -l.

- Touch
Cria um arquivo texto vazio. Muito interessante na hora de se testar alguma coisa.
Uso: touch nomeDeArquivoaCriar nomeDeArquivoaCriar2 ...
Pode-se criar diversos arquivos de uma única vez.

- Find
Busca arquivos. Muito avançado.
Uso: find DirAProcurar opções
Exemplos de uso:
find / -name Rodrigo.tar à Procura a partir da raiz (no sistema todo) o arquivo chamado Rodrigo.tar
find /home -exec grep "teste" {} \; -exec ls -la {} \: à Procura a partir do diretório /home arquivos com o conteúdo teste (grep teste) e lista este arquivo (ls -la).
find /usr -type l -ok rm -rf {} \; à Procura no diretório /usr links (-type l) e caso encontre, confirma se deve ou não apagar (-ok rm -rf).
Consulte o manual para informações mais interessantes.

- Locate
Busca arquivos, mas utiliza uma base de dados como padrão, o que o torna muito rápido. Cuidado!! Atualize sempre sua base de dados, ou irão aparecer arquivos que já foram removidos em suas buscas.
Outro problema do locate é o fato de que ele busca qualquer ocorrência da palavra a buscar, ou seja, se você fizer locate a, ele irá listar TUDO no sistema que contém a palavra a.
Para atualizar sua base de dados utilize: updatedb
Para buscar utilize: locate oqbuscar

- Top
Método interessante de se vizualizar os processos ativos na máquina.
Use: M --> Ordenar por consumo de memória
P --> Ordenar por consumo de CPU

- Vi (:w :x :q :q! /)
Ótimo editor de textos que recomenda-se e muito saber. As opções vistas foram:
ØModo Comando, Fim de Linha e de Edição
Ø:w à Salva arquivo
Ø:x à Salva e sai
Ø:q à Sai quando você não alterou nada
Ø:q! à Sai sem salvar
Ø/palavra à Procura palavra
Øn à Procura pela próxima ocorrência de palavra

- Background (&)
O linux possui uma opção interessante que é a de mandar processos para o segundo plano, liberando assim o ambiente do usuário.
Pode-se fazer isso através do sinal & após qualquer comando.

- Jobs
Lista os processos que estão em segundo plano, retornando o número do processo de segundo plano, que deverá ser utilizado para traze-lo de volta.

- Fg
Comando que trás de volta um processo do segundo plano.
Uso: fg numeroProcessodeSegundoPlanoRetornadoPeloJobs

- ln (-s)
Este comando cria um link (atalho) entre diretórios e arquivos. Um link simbólico (opção -s) nada mais é do que um arquivo no HD que aponta para a área onde está o arquivo original. Se o original é apagado, o link fica "quebrado". Já um link direto (apenas ln) dá um outro nome para a mesma área do HD. Como um backup contra remoção indevida, no entanto usa-se o mesmo espaço do HD, referenciando-no de duas maneiras diferentes. Crie e compare. Um link direto não pode ser feito entre diretórios.
Uso: ln -s Original Link
ln Original Link

- Chmod (ugo +rwx)
Comando que muda as permissões de um arquivo. Estas podem ser vistas através do comando ls -l.
A esquerda dos arquivos aparecerá uma cadeia de caracteres de difícil compreensão inicial, mas prestem atenção:
PrimeiroCaractere à Indica o tipo de arquivo, pode ser:
- à Arquivo normal (executável ou texto)
d à Diretório
c à Dispositivo orientado a caracteres (modem, portas seriais)
b à Dispositivo orientado a blocos (hd)
s à Socket mapeado em arquivo ("Em Unix tudo é arquivo")
p à FIFO, comunicação inter-processos
l à Link Simbólico
3 próximos Caracteres à Permissões Válidas para o DONO do arquivo, 1ª coluna com nome de usuário.
R à Permissão de leitura. Para diretórios, pode listar seu conteúdo.
W à Permissão de escrita.
X à Permissão de execução. Para diretórios, pode entrar nele.
3 próximos Caracteres à Permissões Válidas para o GRUPO dono de um arquivo, 2ª coluna, do lado da do DONO do arquivo. Observe que o GRUPO dono não necessariamente tem o DONO como membro.
3 próximos Caracteres à Permissões para o restante dos usuários do sistema.
Ex: chmod ugo+rwx -R arquivoOudiretório.
A opção -R manda dar a permissão recursivamente a todos os arquivos e subdiretórios deste diretório em questão.
Esclarecendo a Sintaxe UGO:
U à Refere-se as permissões para o DONO
G à Refere-se as permissões para o GRUPO DONO
O à Refere-se as permissões para o restante dos usuários
A à Refere-se as permissões para TODOS os usuários (mesmo que Ugo junto)
+rwx à Está-se dando todas as permissões
-rwx à Está-se tirando todas as permissões
OBS: Pode utilizar apenas -r ou -w sozinhos, por exemplo.
=rw à Estaria-se igualando as permissões a +RW-X, ou seja, quando se utiliza o sinal de igual, as permissões se IGUALAM as que o sinal indica, sendo retiradas as que não forem mencionadas.

- Umask
Comando que muda a máscara de permissões padrão para a criação de arquivos e diretórios.
Seu uso será explicado mais adiante, apenas em modo OCTAL e não CARACTERE. O modo CARACTERE foi explicado no curso básico, mas não o será nesta apostila.

- Chown (user:group)
Utilizado para mudar o DONO e o GRUPO dono de um arquivo ou diretório.
Uso: chown novodono:novogrupo arquivoOudiretorio
Observe que a opção :novogrupo pode ser omitida ou trocada por .novogrupo.
Também aqui existe a opção -R.

- Chgrp
Utilizado para mudar apenas o grupo dono de um arquivo.
Uso: chgrp novogrupo ArquivoOuDiretório

- Caracteres Especiais (~,[],*,?)
São também conhecidos como METACARACTERES.
Os mais comuns e utilizados são:
* à Simboliza TUDO
? à Simboliza QUALQUER CARACTERE
~ à Simboliza o HOME do usuário Corrente
[AB]* à Qualquer arquivo (*) começado com A ou com B.

- Home do usuário
Diretório que pertence ao usuário, onde ele pode tudo. O comando cd isolado leva o usuário até este diretório. Ao logar no sistema, o usuário cai também em seu home.

- Adicionando um Grupo
Um grupo nada mais é do que a união de diversos usuários com as mesmas
características. Por exemplo, poderíamos ter um grupo estudantes ou alunos.
Para adicionarmos este grupo, devemos utilizar o comando:
groupadd alunos
No arquivo /etc/group será adicionada uma entrada alunos, e será dado um GID (identificador de grupo) a este grupo.

- Adicionando um Usuário
Qualquer pessoa que for utilizar o linux deve necessariamente possuir um usuário válido na máquina. Lembrando que NÃO devemos utilizar o root a menos que necessário, esta tarefa é importantíssima mesmo para usuários caseiros.
Adicionando:
useradd rodrigo -g alunos
Adicionamos o usuário rodrigo no grupo alunos. Observe que a opção -g nomegrupo não se faz necessária, e caso seja omitida, teremos comportamentos diferentes em algumas distribuições:
RedHat e familiares (incluindo Conectiva):
Será criado um grupo com o mesmo nome do usuário e este será adicionado neste grupo
Slackware:
O usuário será adicionado em um grupo chamado users
Isto ocorre devido a não padronização deste ato e ao fato de um usuário NECESSARIAMENTE pertencer a algum grupo

- Senhas SHADOW
O esquema de senhas chamado SHADOW foi criado devido ao fato de o Linux (e os Unix-Like da vida) utilizarem em suas senhas um método de criptografia chamado DES (Data Encryption Standard). Este método é fraco (utiliza chaves de apenas 64 bits) e pode ser facilmente quebrado (Veja o livro Cracking DES para entender melhor sobre este assunto). Como o arquivo /etc/passwd necessita ter permissão de leitura para todos, qualquer usuário facilmente conseguiria obter a senha de ROOT do sistema.
Com isso criaram o SHADOW, onde as senhas criptografadas com o DES ficam no arquivo /etc/shadow que só pode ser visto pelo root.
Sobra então no arquivo /etc/passwd apenas um * ou ! no lugar da senha criptografada do usuário.
Todas as distribuições linux trazem o SHADOW por padrão.

- Arquivo /etc/passwd
Este arquivo contém os usuários cadastrados na máquina e informações sobre eles. Sua sintaxe é:
login:UID:GID:Descrição:Home:Shell
Onde:
·login à Nome do usuário na máquina
·UID à Identificador do usuário. O Linux utiliza este número para dar ou tirar permissões. Pode ser repetido entre usuários.
·GID à Identificador do grupo principal do usuário.
·Descrição à Qualquer coisa, se for omitido, deve-se deixar ::. Geralmente coloca-se nome e cargo do usuário
·Home à Diretório pessoal do usuário. Não necessariamente, mas recomenda-se que ele fique no /home e tenha o mesmo nome do usuário.
Ex: Usuário: Rodrigo
Home: /home/Rodrigo
·Shell à Shell que o usuário irá utilizar para se logar no
sistema. Use /bin/false caso o usuário não deva logar. E /bin/bash caso deva.
OBS:
Deve ter ficado na cabeça do leitor atento o fato de CASO O USUÁRIO NÃO DEVA LOGAR.
Mas quando isto acontece?
Digamos que temos uma aplicação que deve ser executada com as permissões de um usuário. Criamos um para ela, mas este não é um usuário válido, como minha aplicação iria entrar na máquina? Este é um caso.

- Arquivo /etc/group
Similarmente ao /etc/passwd este arquivo possui as configurações dos grupos (o /etc/passwd possui dos usuários)
Sua sintaxe geral é:
:x::,
Os usuários que pertencerem a este grupo estarão listados neste arquivo, a menos que o grupo seja primário do usuário, neste caso apenas estaria referenciado em /etc/passwd no campo gid.
Preste atenção que é neste arquivo que o GID dos grupos está especificado, sendo que o /etc/passwd apenas consulta ele.

- Porque saber editar manualmente usuários e grupos?
Esta é uma pergunta bem simples, já que teremos de editar manualmente em
diversas situações onde desejarmos modificar opções de usuários e desejarmos fazer isto de uma forma rápida e segura.


By Serginho http://tuxnaxibe.guardachuva.org/combaux