(comandos do GNU/Linux)
O GNU/Linux é composto com uma infinidade de comandos. Vamos dar uma olhada para verificar qual a função de cada um deles.
Tabela 1: Comandos GNU/Linux
VARIÁVEIS DE AMBIENTE | As variáveis de ambiente local são as que estao disponíveis somente para shell corrente e que não são acessadas por subprocessos (subshell) do sistema. Já as variáveis de ambiente global são as que estão disponíveis tanto para o shell corrente quanto para os subprocessos (subshell). Um subshell é um shell acessado dentro de um shell. Um exemplo prático é digitar o comando "bash" em um shell, neste caso está sendo aberto um novo shell que é conhecido como subshell que nada mais é do que um shell aberto dentro de outro shell. Um exemplo de um subshell muito utilizado é quando executamos um script shell qualquer. Esse script é executado em um subshell. A linha "#!/bin/bash" dentro de um script que define qual shell (subshell) que será usado. Geralmente o "#!/bin/bash" é colocada na primeira linha em um shell script. Um bom teste para ser feito seria a execução de um script (ex: my_script_shell) que mudasse o diretório atual para um outro qualquer (ex: cd /tmp). Quando o script terminasse seria notado que o diretório atual não mudou. Ao se olhar o processos em execução (ps ax) durante a execução de tal script, veríamos um processo chamando "-bash" e um outro chamado "/bin/bash ./my_script_shell". O primeiro é referente shell o qual estamos e o segunto é ao subshell o qual o script foi executado. Assim, o diretório atual foi mudado no subshell e não no shell o qual estamos. Para fazer com que o script demore o tempo suficiente para ver o que esta acontecendo é utilizacao do comando "sleep" dentro desse script. Um outro teste seria colocar no "/etc/profile" duas variáveis "export NOME=Hugo" e "SOBRENOME=Azevedo". Criar um arquivo (ex: test.sh) com o conteúdo "#!/bin/bash" e "echo $NOME $SOBRENOME" e torná-lo executável (ex: chmod u+x test.sh). Efetuar logout, login e executar (ex: ./test.sh) será mostrado somente "Hugo". Agora se for executado o comando "echo $NOME $SOBRENOME" será mostrado "Hugo Azevedo". Se for executado o comando "bash" e "echo $NOME $SOBRENOME" novamente será mostrado somente "Hugo". Dica: para executar um script shell no shell atual sem gerar um subshell pode se usar o comando "source my_script_shell" ou ". my_script_shell". Com esses dois comandos no exemplo acima o diretório seria mudado para o "/tmp". Muitas vezes as variáveis de ambiente são definidas dentro de arquivo de configuração (ex: "/etc/profile") ou através do serviços e comandos que são usados ao iniciar ou acessar (ex: ssh) o sistema operacional. Dica: os nomes da variáveis de ambiente são sempre em letras MAIÚSCULAS. Vale destacar que um subshell é criado ao executar um script, não importando se a primeira linha tem ou não o "#!/bin/bash". Caso essa linha não exista, o subshell (shell filho) que será aberto será o mesmo (ex:bash) do shell pai (ex: se for o bash). Apesar disso, essas regras para a criação de subshell não vale para arquivos binário, pois eles executam no shell corrente. |
---|---|
env | Mostra as variáveis globais de ambiente. Não mostra as variáveis locais. Ex: Faça o seguinte teste: export HUGO=29 ; HUDSON=31 ; env | grep HU. Veja as as variáveis de ambiente HUGO e HUDSON foram exportadas. Contudo, somente será mostrada a variável "HUGO" ao utilizar o comando "env | grep HU". Agora, execute o comando "bash" e digite: env | grep HU. Idem ao resultado anterior. Este último coloquei somente para conhecimento, pois é evidente que o resultado seria o mesmo.
Uma opção muito importante é o "-u NAME_VARIABLE" ou "--unset=NAME_VARIABLE" que remove uma variável de ambiente (NAME_VARIABLE) em tempo de execução. Por exemplo, para executar um script shell chamado “test.sh”, removendo temporariamente a variável de ambiente PATH, basta digitar um dos dois comandos a seguir: # env –u PATH test.sh # env --unset PATH test.sh O comando "env", também, roda um comando/programa com um ambiente modificado em tempo de execução, ou seja, com variáveis de ambiente redefinidas. Ex: # env LANG=C mrtg # env EDITOR=vi crontab -e Também poderia colocar: # LANG=C mrtg # EDITOR=vi crontab -e |
export | Mostra as variáveis globais de ambiente (ex: export) ou exporta globalmente uma variável de ambiente (ex: export EDITOR=vi). Não é pesistente a reboot, logout ou login.
Tanto faz usar o comando "export EDITOR=vi" como simplesmente "EDITOR=vi", pois viram variáveis de ambiente. Faça o teste e depois digite "echo $EDITOR", "set | grep EDITOR" e declare | grep EDITOR, o resultado será o mesmo. O único resultado diferente é quando é executado o seguinte comando "export | grep EDITOR". Na verdade quando se usa "export EDITOR=vi" a variável de ambiente fica como global, mas quando se usa "EDITOR=vi" a variável de ambiente fica como local. As variáveis podem ser locais: que são as variáveis disponíveis somente pelo shell corrente e que não são acessadas por subprocessos (subshell) do sistema ou as variáveis podem ser globais: que estão disponíveis tanto para o shell corrente quanto para os subprocessos (subshell) que as usam. Faça o seguinte teste: export HUGO=29 ; HUDSON=31 ; set | grep HUGO ; set | grep HUDSON. Veja as as variáveis de ambiente HUGO e HUDSON foram exportadas. Contudo, digite agora o comando "bash". Agora digite: set | grep HUGO ; set | grep HUDSON. Veja que somente a variável HUGO foi exportada para esse novo shell. |
printenv | Mostra as variáveis globais. |
declare | Mostra as variáveis locais e globais de ambiente.. Também exporta/declara variáveis de ambiente. Exemplo variável global: declare -x HUGO=29. Exemplo: variável local: declare HUDSON=31. O comando "export" usa o "declare -x VARIÁVEL" para exportar as variáveis de ambiente. |
set | Mostra as variáveis locais e globais de ambiente. |
unset | Remove uma variável de ambiente local e/ou global da memória. Defaz o que o export ou a igualdade fax. Ex: export HUGO=29 ; HUDSON=31 ; unset HUGO ; unset HUDSON ou unset HUGO HUDSON. |
LISTAR ARQUIVOS | Descrição |
ls | Comando usado para listar arquivos e diretórios. Por padrão ordena pela ordem alfabética.
OPÇÕES: -l (long. Mostra os atributos de um arquivo como: se é um "arquivo/diretório/link/bloco/caractere/named pipe/etc", "quantidade de diretórios/links absolutos", "permisões", "usuário", "grupo", "tamanho", "data/hora de criação/última modificação" e mostra o próprio nome do "arquivo/diretório/link" (se for link simbólico mostra também o caminho real do link). O atributo "quantidade de diretórios/links absolutos" em diretórios mostra a quantidade de diretórios dentro de um diretório, incluindo o ".", ".." e diretórios ocultos (não inclui links simbólicos de diretórios). O atributo "quantidade de diretórios/links absolutos" em arquivos mostra a quantidade de hard links (ln) que estão associados a um arquivo (1 = nenhum, 2 = um hard link associado, 3 = dois hard links associados, ...). Na verdade, o atributo "quantidade de diretórios/links absolutos" em arquivos mostra quantos arquivos estão associados ao mesmo "inode" (ls -i) daquele arquivo. Por isso, todo arquivo por padrão já está com o atributo "quantidade de diretórios/links absolutos" igual a "1". Só para conhecimento com a opção "-l" também é visualizada na primeira linha a quantidade em bytes do que é mostrado no diretório corrente. -lu (idem, só que mostra a data/hora do último acesso) -lut (idem, só que ordena pela data/hora do último acesso) -u (access time. Sozinho, ordena pela data/hora do último acesso. Com o "-l" mostra a data/hora do último acesso, mas não ordena. Para ordenar, mostrando a data/hora do último acesso é necessário a acrescentar o "-t". atime = access time, ou seja, é a data do último acesso em um arquivo. Ex: cat /tmp/test.txt. Com esse comando o "atime" é atualizado) -t (ordena pela data/hora de modificação. Com "-ul" ordena com a data/hora do último acesso) -c (change time. Sozinho, ordena pela data/hora da última troca de permissão de um arquivo ou diretório. Com o "-l" mostra a data/hora, mas não ordena. Para ordenar, mostrando a data/hora da última troca de permissão é nessário acrescentar o "-t". ctime = change time, ou seja, é a data da última troca de permissões em um arquivo. Ex: "chown root /tmp/test.txt" ou "chmod o+w /tmp/test.txt". Com esses comandos o "ctime" é atualizado. O "ctime" também é atualizado se usarmos o comando "echo 3 > /tmp/test.txt". ) -X (mostra em ordem alfabética da extensão) --author (com o "-l" mostra o author) -d (lista o diretório em vez do conteúdo. Se colocado o wildcard '*' lista diretórios e arquivo juntamente com o caminho relativo. ex: ls -d /*) -s (mostra do tamanho in blocks) -S (ordena pelo tamanho) -h (mostra o tamanho em formato mais humano -> K, M, G etc) -r (inverte a ordem da lista) -R (recursividade) -i (mostra o inode - número de indexação dos arquivos e diretórios) -Z | --context (mostra o contexto de segurança do SELinux) |
INFORMAÇÕES DE ARQUIVOS | Descrição |
stat | Comando usado para mostrar informações/status de arquivos e diretórios. Essas informações são conhecidas como metadados. |
PROCURAR ARQUIVOS | Descrição |
find | Comando bastante versátil usado para procura de arquivos e diretórios. Sozinho, o "find" lista recursivamente o diretório atual, mostrando o caminho relativo do que é achado (arquivos, diretórios, links, arquivos ocultos etc). Também pode mostrar o caminho completo (ex: find /root). # find / -perm 755 (comando usado para achar todos os arquivos e diretórios recursivamente a partir do "/" com permissão 7 (rwx) para o usuário, permissão 5 (r-x) para o grupo e permissão 5 (r-x) para outros) # find / -user root -perm 755 (comando usado para achar todos os arquivos e diretórios recursivamente a partir do "/" que têm como usuário o "root" e com permissão 7 (rwx) para o usuário, permissão 5 (r-x) para o grupo e permissão 5 (r-x) para outros) # find / -uid 0 -perm 755 (idem, só que usa o “uid” do usuário em vez do nome) # find / -group root -perm 755 (comando usado para achar todos os arquivos e diretórios recursivamente a partir do "/" que têm como grupo o "root" e com permissão 7 (rwx) para o usuário, permissão 5 (r-x) para o grupo e permissão 5 (r-x) para outros) # find / -gid 0 -perm 755 (idem, só que usa o “gid” do grupo em vez do nome) # find / -group root -perm 0755 (idem. A posição onde número “0” está, é usado para definir o SUID, SGID e/ou StickyBit. Nesse caso e a dos comandos anteriores, serão procurados por permissões que coincidirem exatamente com “-rwxr-xr-x”). Obs: o número “0” é usado para quando não há permissão de leitura, escrita e execução (---) ou recurso (SUID, SGID ou StickyBit) definido nas permissões dos arquivos e diretórios. Ex: o “0755” = “-rwxrw-rw-”, sendo que também é igual “755” = “-rwxrw-rw-”. O “0705” = “-rwx---rwx”, sendo que também é igual a “705” = “-rwx---rwx”. # find / -user root -perm -755 (muito diferente dos outros anteriores e será explicado mais a frente) ------------------------------------------------------------------------ # find / -perm 4755 (acha o SUID. Comando usado para achar todos os arquivos e diretórios recursivamente a partir do "/" com permissão 47 (rws) para o usuário, permissão 5 (r-x) para o grupo e permissão 5 (r-x) para outros) # find / -perm 2755 (acha o SGID. Comando usado para achar todos os arquivos e diretórios recursivamente a partir do "/" com permissão “rwx” para o usuário, permissão “r-s” para o grupo e permissão “r-x“ para outros) # find / -perm 1755 (acha o StickyBit. Comando usado para achar todos os arquivos e diretórios recursivamente a partir do "/" com permissão “rwx” para o usuário, permissão “r-x“ para o grupo e permissão “r-t” para outros) # find / -perm 6755 (acha o SUID e SGID. Comando usado para achar todos os arquivos e diretórios recursivamente a partir do "/" com permissão “rws” para o usuário, permissão “r-s” para o grupo e permissão 5 “r-x“ para outros) # find / -perm 7755 (acha o SUID, SGID e StickyBit. Comando usado para achar todos os arquivos e diretórios recursivamente a partir do "/" com permissão “rws” para o usuário, permissão “r-s” para o grupo e permissão “r-t” para outros) # find / -perm 5755 (acha o SUID e StickyBit. Comando usado para achar todos os arquivos e diretórios recursivamente a partir do "/" com permissão “rws” para o usuário, permissão “r-x” para o grupo e permissão “r-t” para outros) # find / -perm 3755 (acha SGID e StickyBit. Comando usado para achar todos os arquivos e diretórios recursivamente a partir do "/" com permissão “rwx” para o usuário, permissão “r-s” para o grupo e permissão “r-t” para outros) ------------------------------------------------------------------------ # find / -perm -6000 (procura por arquivos e diretorios que tenham o SUID e SGID setado, nao importanto com as permissoes de acesso) # find / -perm +6000 (procura por arquivos e diretorios que tenham o SUID ou SGID setado, nao importanto com as permissoes de acesso) ------------------------------------------------------------------------ # find / -perm u=rwx (comando usado para achar todos os arquivos e diretórios recursivamente a partir do "/" com permissão “rwx” para o usuário, permissão “---“ para o grupo e permissão “---“ para outros. Contudo, dificilmente vai ser achado um arquivo com essas permissões “rwx------“, use o comando a seguir) # find / -perm -u=rwx (seria mais interessante usar esse comando em vez do anterior. Esse comando é usado para achar todos os arquivos e diretórios recursivamente a partir do "/" com permissão “rwx” ou “rws” para o usuário, permissão “qualquer uma“ para o grupo e permissão “qualquer uma“ para outros) # find / -perm u=rws (deveria, mas não funcionou. Esse comando deveria ser usado para achar todos os arquivos e diretórios recursivamente a partir do "/" com permissão “rwx” para o usuário, permissão “---“ para o grupo e permissão “---“ para outros, mas não funcionou. Contudo, mesmo que funcionasse, dificilmente vai ser achado um arquivo com essas permissões “rws------“, use o comando a seguir) # find / -perm -u=rws (use esse comando em vez do anterior. Comando usado para achar todos os arquivos e diretórios recursivamente a partir do "/" com permissão “rwx” para o usuário, permissão “---“ para o grupo e permissão “---“ para outros, mas não funcionou) # find / -perm g=w (comando usado para achar todos os arquivos e diretórios recursivamente a partir do "/" com permissão “0020”. Contudo, dificilmente vai ser achado um arquivo com essas permissões “----w----“, use o comando a seguir) # find / -perm -g=w (seria mais interessante usar esse comando em vez do anterior. Comando usado para achar todos os arquivos e diretórios recursivamente a partir do "/" com permissão “qualquer um” para o usuário, permissão “-w-“ para o grupo e permissão “qualquer um“ para outros) # find / -uid 0 -perm +4000 () # find / -gid 501 -perm +4000 () # find / -perm -0020 (idem. Faz um AND) # find / -perm /0020 (idem) # find / -perm +0020 (obsoleto. Fax um OR) Obs: quando são usados os sinais “-” e “/” o número “0” significa que naquela posição a permissão ou recurso pode ser qualquer um. ------------------------------------------------------------------------ # find /root (lista recursivamente o conteúdo do diretório "/root", mostrando o caminho completo dos arquivos, diretórios, links etc inclusive o "/root") # find /root -type f (lista recursivamente o conteúdo do diretório "/root", mostrando o caminho completo dos arquivos -> regular file) # find /root -type l (lista recursivamente o conteúdo do diretório "/root", mostrando o caminho completo dos links) # find /root -type d (lista recursivamente o conteúdo do diretório "/root", mostrando o caminho completo dos diretórios inclusive o "/root") ------------------------------------------------------------------------ # find /root -size 48c (lista recursivamente o conteúdo do diretório "/root", mostrando os arquivos e diretórios com tamanhos de 48 bytes [caracteres]) # find /root -size +48c (lista recursivamente o conteúdo do diretório "/root", mostrando os arquivos e diretórios com tamanhos maiores que 48 bytes [caracteres], ou seja, 49-50-51-... bytes) # find /root -size -48c (lista recursivamente o conteúdo do diretório "/root", mostrando os arquivos e diretórios com tamanhos menores que 48 bytes [caracteres], ou seja, 47-46-45-... bytes) # find /root -size 3k (lista recursivamente o conteúdo do diretório "/root", mostrando os arquivos e diretórios com tamanhos de 3 Kilobytes [caracteres], ou seja, 47-46-45-... bytes) ------------------------------------------------------------------------ # find -mtime 13 (lista recursivamente o conteúdo do diretório "/root", mostrando os arquivos e diretórios que tem a data de modificação de 13 dias atrás) # find -mtime +13 (lista recursivamente o conteúdo do diretório "/root", mostrando os arquivos e diretórios que tiverem a data de modificação maior que 13 dias atrás) # find -mtime -13 (lista recursivamente o conteúdo do diretório "/root", mostrando os arquivos e diretórios que tiverem a data de modificação menor que 13 dias atrás) Obs: mtime = modification time, ou seja, é a data da última modificação em um arquivo. Ex: echo 3 > /tmp/test.txt. Com esse comando o "mtime" é atualizado. ------------------------------------------------------------------------ # find -atime 13 (lista recursivamente o conteúdo do diretório "/root", mostrando os arquivos e diretórios que tem a data do último acesso de 13 dias atrás) # find -atime +13 (lista recursivamente o conteúdo do diretório "/root", mostrando os arquivos e diretórios que tiverem a data do último acesso maior que 13 dias atrás) # find -atime -13 (lista recursivamente o conteúdo do diretório "/root", mostrando os arquivos e diretórios que tiverem a data do último acesso menor que 13 dias atrás) Obs: atime = access time, ou seja, é a data do último acesso em um arquivo. Ex: cat /tmp/test.txt. Com esse comando o "atime" é atualizado. ------------------------------------------------------------------------ # find -ctime 13 (lista recursivamente o conteúdo do diretório "/root", mostrando os arquivos e diretórios que tem a data da última troca de permissões de 13 dias atrás) # find -ctime +13 (lista recursivamente o conteúdo do diretório "/root", mostrando os arquivos e diretórios que tiverem a data da última troca de permissões maior que 13 dias atrás) # find -ctime -13 (lista recursivamente o conteúdo do diretório "/root", mostrando os arquivos e diretórios que tiverem a data da última troca de permissões menor que 13 dias atrás) Obs: ctime = change time, ou seja, é a data da última troca de permissões em um arquivo. Ex: "chown root /tmp/test.txt" ou "chmod o+w /tmp/test.txt". Com esses comandos o "ctime" é atualizado. O "ctime" também é atualizado se usarmos o comando "echo 3 > /tmp/test.txt". ------------------------------------------------------------------------ # find /root -maxdepth 1 (lista recursivamente o conteúdo do diretório "/root", mostrando os arquivos e diretórios do primeiro nível - profundidade 1) # find /root -maxdepth 2 (lista recursivamente o conteúdo do diretório "/root", mostrando os arquivos e diretórios do primeiro e segundo nível - profundidade 2) # find / -maxdepth 1 | xargs ls -lhd # find / -maxdepth 1 -group root ! -iname tmp | xargs ls -lhd ------------------------------------------------------------------------ ACELERAÇÃO DE BUSCAS, CÓPIAS, DELETAÇÃO, FILTROS ETC # find /tmp/ -ok rm \; (a sintax é "-ok command ;". Esse comando vai pedir confirmação para apagar o diretório "/tmp" e o seu conteúdo) # find /tmp/ -ok rm {} \; (idem) |
locate arquivo | Comando bastante útil usado para procura de arquivos e diretórios. Em primeiro lugar é necessário instalar "apt-get install locate" e depois executar o comando "updatedb". Esse comando "updatedb" vai gerar um banse de dados de todos os arquivos e diretórios do disco. Essa base será usa pelo comando "locate". Perceba que essa base de dados é estática, sendo que necessário executado "updatedb" para trazer as novas modificações em termos de arquivos e diretórios.
# updatedb (atualiza a base de dados de nome de arquivos e diretórios) # locate skel (procura o padrão "skel" no nome de arquivos e diretórios) # locate -i skel (idem, só que case-insensitive) Obs: o interessante do locate é a rapidez na procura de arquivos. Isso devido a utilização de uma base de dados. |
EXECUÇÃO ARQUIVOS | Descrição |
. nome_arquivo source nome_arquivo |
Executa o arquivo mesmo que não tenha permissão para execução. Executa tudo o que tem dentro do arquivo. Não cria um subshell para tal executação, ou seja, é executado no shell corrente. |
./nome_arquivo | O "." representa diretório atual. Ele segue a mesma lógica do ".." que representa o diretório anterior (para testar digite no shell: "ls .", "ls ..", "cd ." e "cd .."). Para um melhor entendimento, será utilizado o diretório "/tmp/bin/local/" e o arquivo executável "/tmp/bin/teste" como exemplo ditático.
Para executar um arquivo no GNU/Linux é necessário digitar o caminho completo ou o caminho parcial, ou seja, é preciso trabalhar com a hierarquia de diretórios. Seguindo este raciocínio para executar um arquivo chamado "teste" que está dentro de "/tmp/bin/", basta digitar "/tmp/bin/teste" (caminho completo). Agora, se estivéssemos em "/tmp/" poderíamos digitar "bin/teste", se estivéssemos em "/tmp/bin/local/", poderíamos digitar "../teste", "../../../tmp/bin/teste" ou "../../bin/teste" (caminhos parciais). No entando, se estivéssemos dentro do diretório "/tmp/bin/", não seria possível executá-lo simplesmente digitando "teste", pois como foi dito, é necessário digitar o caminho completo ou o parcial que requerem uma hierarquia de diretórios (poderíamos digitar, então, "../bin/teste" etc para executá-lo). Contudo, como foi dito anteriormente o sinal de ponto final representa o diretório atual. Assim, se digitarmos dentro do "/tmp" "./teste" consiguiríamos executá-lo. Tal execução ocorreu, pois informamos com o caractere "." que o arquivo "teste" está no diretório atual e confirmamos o caminho parcial (hierarquia de diretórios) com o "/". Se digitássemos .teste, não consiguiríamos executá-lo, pois o sistema o entenderia como arquivo oculto. Dessa maneira o "/" também tem outra função que é informar que o arquivo "teste" não é um arquivo oculto (.teste). Só para constar, para executar um arquivo oculto chamado ".teste" que está no diretório atual, bastar digira "./.teste" |
sh nome_arquivo | X |
run-parts | Roda todos os executáveis dentro de um diretório. Ex: "run-parts --report /etc/cron.daily" |
REMOVER ARQUIVOS E DIRETÓRIOS | Descrição |
rm | Remove arquivos e diretórios. |
rm nome_arquivo | Remove o arquivo. |
rm nome_diretório rm nome_diretório/ |
Não remove o diretório, independente se existe algo dentro de tal diretório. Aparece a mensagem "rm: cannot remove 'nome_diretório': Is a directory". |
rm -f nome_diretório rm -f nome_diretório/ |
Idem. |
rm -r nome_diretório rm -r nome_diretório/ |
Remove o diretório, independente se existe algo dentro de tal diretório. Age recursivamente. |
rm nome_diretório/* | Remove todos os arquivos dentro de "nome_diretório", mas não remove os arquivos/subdiretórios ocultos e os subdiretórios e seus conteúdos, sendo que aparece a mensagem "rm: cannot remove 'nome_subdiretório': Is a directory" para os subdiretórios que foram encontrados dentro de "nome_diretório". |
rm -f nome_diretório/* | Idem. |
rm -r nome_diretório/* | Remove todos os arquivos e subdiretórios dentro de "nome_diretório", mas não remove os arquivos/subdiretórios ocultos. Age recursivamente. |
rm -r nome_arq_dir* | Remove todos os arquivos e diretórios iniciados com "nome_arq_dir", independente se existe algo dentro de tais diretórios. Age recursivamente. |
rmdir | Remove diretórios vazios. |
rmdir nome_diretorio | Remove o diretório, mas somente se não existir arquivos e subdiretórios dentro dele. |
rmdir nome_diretorio/nome_subdiretorio | Remove o subdiretório, mas somente se não existir arquivos ou diretórios no subdiretório. |
rmdir -p nome_diretorio/nome_subdiretorio | Remove o diretório e subdiretório, mas somente se não existir arquivos ou diretórios no subdiretório. Caso exista algo no diretório, somente o subdiretório será removido. |
COPIANDO ARQUIVOS E DIRETÓRIOS | Descrição |
cp | Copia arquivos e diretórios. |
cp nome_arquivo | Nada faz. Aparece um erro "cp: missing destination file operand after nome_arquivo". |
cp nome_arquivo . cp nome_arquivo ./ |
Nada faz. Aparece um erro "cp: nome_arquivo and ./nome_arquivo are the same file". |
cp nome_arquivo1 nome_arquivo2 cp nome_arquivo1 ./nome_arquivo2 |
Faz uma cópia do nome_arquivo1 para nome_arquivo2 no diretório atual, independente se já existe o arquivo. |
cp nome_arquivo1 .nome_arquivo2 | Faz uma cópia do nome_arquivo1 para .nome_arquivo2 no diretório atual que na verdade é um arquivo oculto, independente se já existe o arquivo. |
USUÁRIOS | Descrição |
adduser | Adiciona um novo usuário, criando um novo grupo e um diretório em "/home" com o mesmo nome. Será solicitada uma senha e informações opcionais (full name, room number, work phone etc). Ao criar um novo usuário com esse comando, uma nova entrada será adiciona em "/etc/passwd", "/etc/shadow" e "/etc/group". O arquivo de configuração que manipula esse comando é o "/etc/adduser.conf". |
useradd | Adiciona um novo usuário, criando um novo grupo com o mesmo nome. Não será solicitada a digitação de uma senha e informações opcionais (full name, room number, work phone etc). Também, não será criado um diretório em "/home". Ao criar um novo usuário com esse comando, uma nova entrada será adiciona em "/etc/passwd", "/etc/shadow" e "/etc/group". Esse comando é muito útil para criação de usuários para administração do sistema ou que manipulam serviços. Cai na LPI-1.
Adicionar um usuário chamado "hugo", definindo o seu diretório com o mesmo nome em "/etc/passwd": # useradd hugo Adicionar um usuário especificando um grupo primario: # useradd hugo -g suporte Adicionar um usuário especificando uma data para a conta expirar: # useradd hugo -e 2011-07-28 Colocar todas as opções em um só comando: # useradd hugo -e 2011-07-28 -g suporte Mostra e configura os valores defaults para o comando useradd: # useradd -D Adiciona um usuário chamado "hugo", define o diretório padrão com o mesmo nome em "/etc/passwd" e cria um diretório em "/home/" com o mesmo nome: # useradd hugo -m Adiciona um usuário chamado "hugo" e define o diretório padrão "/home/suporte" em "/etc/passwd". Só não cria um diretório em "/home/": # useradd hugo -d /home/suporte Idem, só que cria um diretório "/home/suporte": # useradd hugo -md /home/suporte Adiciona um usuário chamado "hugo" e define uma data para expiração da senha # useradd -e xxx hugo Prefira usar useradd, userdel, groupadd e groupdel, pois existem em todas as distribuições. Esse comando é usado para adicionar usuário ou adicionar usuário modificando as informações padrão. Se o usuário já existir, um erro aparecerá, ou seja, esse comando não muda informações de conta de usuário já existente. |
deluser | Remove usuários, incluindo as entradas em "/etc/passwd", "/etc/shadow" e "/etc/group". Mas mantém o diretório do usuário em "/home". O arquivo de configuração que manipula esse comando é o "/etc/deluser.conf". Com a opção "--remove-home" também será removido o diretório do usuário em "/home". Com a opção "--remove-all-files" será removido o diretório do usuário em "/home" e todos os arquivos pertencentes ao usuário no sistema. |
userdel | Remove usuários, incluindo as entradas em "/etc/passwd", "/etc/shadow" e "/etc/group". Mas mantém o diretório do usuário em "/home". Ao excluir usuários, nenhuma mensagem é mostrada na tela. Com a opção "-r" ou "--remove" também será removido o diretório do usuário em "/home". Cai na LPI-1. |
usermod | Modifica as informações de usuários, incluindo as informações de expiração de senha.
Ex1: "usermod -G|--groups suporte hugo" --> adiciona o usuário "hugo" no grupo "suporte". Ex2: "usermod -d|--home /home/suporte hugo" --> modifica o diretório "home" do usuário "hugo". Ex3: "usermod -e|--expiredate 2010-12-01 hugo" --> modifica a data de expiração da senha do usuário "hugo". Ex4: "usermod -L|--lock hugo" --> tranca a senha usuário "hugo", não sendo possível logar. Ex5: "usermod -U|--unlock hugo" --> destranca a senha do usuário "hugo". Ex6: "usermod -p 1234 hugo" --> modifica a senha do usuário "hugo" para "1234" sem utilizar criptografia no arquivo "/etc/shadow". Para setar o tempo de vida máximo da senha (expiração) para uma determinada data utilize: Ex1: "usermod -e|--expiredate 2010-12-01 hugo" Muda o grupo primário do usuário “king” para “mktg”: Ex2: usermod king –g mktg Adiciona o usuário "hugo" no grupo "suporte": Ex3: usermod hugo -G|--groups suporte |
id | Mostra a identificação númerica (uid e gid) e nomial (nome do usuário e dos grupos) do usuário corrente. Duas chaves interessante seriam -g | –group e -G | --groups que mostram o grupo e os grupos do usuário corrente. |
passwd | Troca/modifica as senhas do usuarios ou as informações de expiração das mesmas. Com a opção "-l" ou "--lock" é desabilitada/trancada a senha, não sendo possível logar. Somente o usuário "root" poderá logar com uma senha no estado de "lock". Para desabilitar/trancar, basta usar a chave "-l" ou "--lock": Ex1: passwd -l hugo Para habilitar/destrancar, basta usar a chave "-u" ou "--unlock": Ex2: passwd -u hugo Uma outra alternativa para desabilitar um usuário de logar é colocar o sinal "#" como o primeiro caractere na entrada do usuário em "/etc/passwd" . O sinal "#" é conhecido como jogo da velha, cerquilha, sustenido, hash mark ou pound sign. Outra maneira também é colocar em "/etc/passwd" o "/bin/false" como interpretador de comando de um usuário, com isso, ele não consiguirá logar. Se for criado o arquivo "/etc/nologin", somente o root poderá logar no sistema e o que estiver nesse arquivo será exibido caso outro usuário tente logar. Também se pode coloca o "!" (exclamação) antes da senha encriptada no arquivo "/etc/shadow" para fazer um lock (os comandos "passwd -l" ou "usermod -L" fazem isso). Para verificar o status da senha de um usuário utiliza o seguinte comando: Ex3: "passwd -S hugo". Para setar o tempo de vida mínimo da senha para 5 dias utilize: Ex4: "passwd -n 5 hugo". Para setar o tempo de vida máximo da senha (expiração) para 30 dias utilize: Ex5: "passwd -x 30 hugo". |
chage | Modifica as informações de expiração das senhas. Ex: "chage -d 2010-07-31 -m 3 -M 2 -W 5 -I 1 -E 2010-08-02 hugo":
"hugo:$1$2n3SYMU/$DHdGOwkqke57IxCtMC3ej.:14821:3:2:5:1:14823:". Também se poderia usar o comando "chage hugo" que seria exibido um menu iterativo para alteração das informações de senha. Para saber as informações atuais num formato agradável, use a opção "-l | --list". Ex: "chage -l hugo". Para setar o tempo de vida máximo da senha (expiração) para 30 dias utilize: Ex1: "chage -M 30 hugo". |
pwconv, pwunconv, grpconv e grpunconv | Converte e desconverte as senhas em texto puro que ficavam em "/etc/passwd" para um formato criptografado que fica em "/etc/shadow". Comandos em desuso, pois as senhas por padrão já estão sendo armazenadas criptograficamente. convert to and from shadow passwords and groups |
su | Muda de usuário:
|
sudo | Executa um comando como um outro usuário:
|
/etc/sudoers | Arquivo de configuração do sudo, seguindo o padrão:
username hostname=(as_user) commands ; username hostname=(as_user:as_group) commands (mais atual);
|
GRUPOS | Descrição |
addgroup | Adiciona grupos no sistema. Ex: addgroup financeiro. Ao adicionar um grupo os arquivos "/etc/group" e "/etc/gshadow" serão modificados. |
groupadd | Adiciona grupos no sistema. Ex: groupadd financeiro. Ao adicionar um grupo os arquivos "/etc/group" e "/etc/gshadow" serão modificados. Ao adicionar grupos, nenhuma mensagem é mostrada na tela. Cai na LPI-1. |
delgroup | Deleta grupos do sistema. Ex: delgroup financeiro. Ao remover um grupo os arquivos "/etc/group" e "/etc/gshadow" serão modificados. |
groupdel | Deleta grupos do sistema. Ex: groupdel financeiro. Ao remover um grupo os arquivos "/etc/group" e "/etc/gshadow" serão modificados. Ao remover grupos, nenhuma mensagem é mostrada na tela. Cai na LPI-1. |
groupmod | Modifica as definições de grupos. Ex1: "groupmod suporte -n manutencao" --> muda o nome do grupo "suporte" para "manutencao". Ex2: "groupmod manutencao -g 5555" --> modifica o GID do grupo "manutencao" para "5555". Ex3: "groupmod -p 1234 manutencao" --> modifica a senha do grupo "manutencao" para "1234" sem utilizar criptografia no arquivo "/etc/gshadow". |
gpasswd | Modifica a senha de grupos utilizando criptografia. O algoritmo padrão é o DES, mas existem os de hash (MD5, SHA256 e SHA512). Ex1: "gpasswd suporte" --> modifica o arquivo "/etc/gshadow". |
groups | Mostra os grupos que o usuário corrente pertence. |
id | Mostra a identificação númerica (uid e gid) e nomial (nome do usuário e dos grupos) do usuário corrente. Duas chaves interessante seriam -g | –group e -G | --groups que mostram o grupo e os grupos do usuário corrente. |
EMPACOTAMENTO E COMPACTAÇÃO | Descrição |
tar | Empacotador de arquivos. Em outras palavras, ele guarda dentro de um mesmo pacote (arquivo) vários outros arquivos. O "tar" é somente um empacotador e NÃO um compactor como muitos pesam. Contudo, se pode usa a opção "-z" (entre outras) para compactar. Nesse caso dessa opção está se usado o "gzip" para compactar.
tar -zcvf destino.tar.gz origem (empacotando com o "tar" e compactando com o "gzip") tar -zcvf etc.tar.gz /etc/* (empacotando e compactando o diretório "/etc" no arquivos "etc.tar.gz") tar -zcvf etc.tar.gz /etc/ (idem) |
FILTROS | Descrição |
xargs | O "xargs" lê itens da entrada padrão, delimitados por espaços em branco ou linhas novas, e executa um comando (padrão é o /bin/echo) uma ou mais vezes, seguidos pelos itens lidos da entrada padrão. Linhas em branco na entrada padrão são ignoradas.
-0 (devido aos nomes de arquivos Unix poderem conter espaços em branco e linhas novas, esse padrão do "xargs" é problemático. Isso porque o "xargs" interpretará incorretamente esses espaços em branco e linhas novas. Para previnir isso existe a opção "-0". Ver o manual do "xargs" para mais detalhes) EXEMPLOS # find / -maxdepth 1 | xargs ls -lhd # find / -maxdepth 1 -group root ! -iname tmp | xargs ls -lhd |
paste | O "paste" faz união de linhas entre arquivos.
-s | --serial (transforma linhas em TABs) -d | --delimiters (delimitadores) EXEMPLOS # paste -s /etc/passwd (serializa as linhas, ou seja, troca linhas por TABs) # paste -s -d "|" /etc/passwd (idem, só que troca linha pelo caractere "|") # paste /etc/passwd /etc/shadow (faz a união linha a linha desses dois arquivos) # paste /etc/passwd /etc/shadow /etc/group (faz a união linha a linha desses três arquivos) # cat /etc/passwd | cut -f3 -d: | paste -s -d '+' # cat /etc/passwd | cut -f3 -d: | xargs | tr ' ' '+' (idem) |
grep | Usado para encontrar um padrão/expresão no conteúdo de arquivos.
-l | --files-with-matches (mostra somente o arquivo onde a padrão/expressão foi encontrado) EXEMPLOS # grep -l alias /root/.* (nesse caso mostrará somente o arquivo que contém a expressão "alias") |
cut | Usado para delimitar, em cada linha no conteúdo de arquivos, a procura.
-b, --bytes=LIST (mostra o(s) byte(s) de cada linha de um arquivo) EXEMPLOS # cut -b 1 /etc/passwd (nesse caso mostrará somente o primeiro bytes do "/etc/passwd") # cut -c 1 /etc/passwd (idem, só que tabs e espaços serão tratados como caractere) |
TERMINAL | Descrição |
tput | Usado para manipular o terminal.
cup row column (coloca o prompt do terminal na linha row e coluna column) reset (redimenciona o terminal de acordo com os rs1, rs2, rs3, rsf) init (redimenciona o terminal de acordo com outros parâmetros) longname (see) EXEMPLOS # tput cup 10 5 (coloca o prompt do terminal na linha 10 e coluna 5) |
wget | Download em modo texto. |
ROTEAMENTO | Descrição |
route | Comando que faz o roteamento estático no sistemas Unix-Like, mostrando e manipulando a tabela de roteamento IP. Se utilizar só esse comando é mostrada a tabela de roteamento. |
netstat -r | idem. |
route -n | idem, só que mostra o IP em vez de nome. |
netstat -nr | idem. |
ip route show | idem. |
route add default gw 172.16.200.1 eth0 route add -net default gw 172.16.200.1 eth0 route add -net default gw 172.16.200.1 dev eth0 route add -net 0.0.0.0 gw 172.16.200.1 dev eth0 |
Os quatro comandos fazem a mesma coisa. Ele adiciona um rota (route add) dizendo que qualquer tráfego em direção a Internet (default) tem como gateway (gw) o IP 172.16.200.1 e a interface da máquina local que tal trafégo deve sair é a eth0. O "add" significa adicionar, "-net" rede, "gw" gateway, "dev" device. As vezes não há necessidade de colocá-los. O "default" ou "0.0.0.0" significa que qualquer tráfego que não se encaixe em algum das rotas estáticas deve-se ser enviado para ele. Em outras palavras é a rede quando a tabela de roteamente não sabe para onde enviar tal tráfego, ela manda para o outro gateway resolver o problema. Esse outro é conhecido como "default gateway" ou "gateway padrão". O "default gateway" geralmente é o roteador que sai para a Internet. O único comando que não funcionará iguais aos outros é "route add 0.0.0.0 gw 172.16.200.1 eth0 ", pois o Genmask ficará 255.255.255.255. |
route add -net 192.168.1.0 netmask 255.255.255.0 gw 172.16.200.1 dev eth0 route add -net 192.168.1.0/24 gw 172.16.200.1 dev eth0 route add -net 192.168.1.0/24 gw 172.16.200.1 eth0 route add -net 192.168.1.0/24 gw 172.16.200.1 ip route show ip route ls ip route add 192.168.1.0/24 via 172.16.200.1 dev eth0 ip route add 192.168.1.0/24 via 172.16.200.1 ip route add 192.168.1.0/255.255.255.0 via 172.16.200.1 O comando adiciona (add) uma rota estática (route), dizendo que todo tráfego em direção a rede (-net) 192.168.1.0 com a mascara (netmask) 255.255.255.0 deve ser encaminhado para o gateway (gw) IP que tem o IP 172.16.200.1 e sai pela dispositivo (dev) local de rede chamado eth0. |
|
route add -net 192.168.1.0/24 gw 172.16.200.1 dev eth0 | Idem, só que usa uma outra notação para definir a máscara de sub-rede. |
route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0 | Esse comando diz que todo tráfego em direção a rede 192.168.1.0 com netmask 255.255.255.0 tem que ser enviado para o dispositivo "eth0". Geralmente esse tipo de roteamente já é configurado automaticamente ao definir um IP para uma interface de rede, mas em alguns momentos essa rota pode ser perdida. Então, aí está a maneira de como colocá-la de volta. |
route add -host 192.168.1.31 gw 172.16.200.1 dev eth0 | Esse comando diz que todo tráfego em direção ao host 192.168.1.31 tem que ser enviado para o gateway 172.16.200.1 pelo dispositivo "eth0". A opção "-host" não aceita "netmask". |
route add -host 192.168.1.31 dev eth0 | Esse comando diz que todo tráfego em direção ao host 192.168.1.31 tem que ser enviado para o dispositivo "eth0". A opção "-host" não aceita "netmask". |
INFORMAÇÕES DE USUÁRIOS LOGADOS | Descrição |
who | . |
w | . |
users | . |
ulimit | Comando que mostra e configura limites de uso de recursos do sistema operacional que são utilizados pelos usuários. Esse é um comando build-in, ou seja, nativo do shell. Na verdade, esse comando pode controlar os recursos disponíveis para processos iniciados pelo shell. Ao executá-lo podem aparecer três valores: soft, hard ou unlimit. Para saber mais digite “help ulimit”.
Ex: ulimit (mostra limites (restrições) do sistema) Ex: ulimit -a (idem, só que detalha todos o limites do sistema, inclusive mostrando as unidades (bytes, blocos, seconds etc) usada para cada limite) Ex: ulimit -f (mostra o tamanho máximo dos arquivos. A unidade aqui [e blocos, ou seja, se deve verificar quantos bytes tem um bloco no seu filesystem) Ex: ulimit -f 100 (especifica para 100 blocos o tamanho máximo dos arquivos) Ex: ulimit -Sf 100 -Hf 200 (idem, definindo os limites de Soft e Hard) Ex: ulimit -u (mostra o número máximo de processos que cada usuário pode abrir) Ex: ulimit -u 100 (especifica o número máximo de processos por usuário) Ex: ulimit -Su 100 -Hu 200 (idem, definindo os limites de Soft e Hard) Ex: ulimit -n (mostra o número máximo de arquivos abertos) Ex: ulimit -n 300 (especifica o número máximo de arquivos abertos) Ex: ulimit -v 128000 (especifica o número máximo em Kbytes de memória virtual que pode ser usado. Nesse caso 128MB) Ex: /etc/security/limits.conf (arquivo que define os limites dos sistema para cada usuário. Dois limites interessantes que podem ser configurados aqui é o número máximo de logins efetuados no sistema "maxsyslogins" e o número máximo de logins do mesmo usuário "maxlogins"). Segue o padrão: domain type item value hugo hard maxlogins 1 ftp hard nproc 0 |
SYSTEM TIME | Descrição |
date | Mostra ou modifica a data e a hora.
Ex: date 12302359 (MMDDhhmm (MêsDiaHoraMinuto). Nesse exemplo, a data e hora vão ser mudados para o mês 12, dia 30, 23 horas e 59 minutos) Ex: date 123023592012 (MMDDhhmmAAAA -> MêsDiaHoraMinutoAno). Nesse exemplo, a data e hora vão ser mudados para o mês 12, dia 30, 23 horas, 59 minutos e ano 2012) Ex: date 12302012 (MMDDAAAA -> MêsDiaAno). Nesse exemplo, a data vai ser mudada para o mês 12, dia 30 e ano 2012) Ex: date -s | --set 11:01:09 (hh:mm:ss -> HoraMinutoSegundo) Ex: date -s | --set 11:01 (hh:mm -> HoraMinuto) Ex: date -s Qua ( -> Muda o dia da semana) Ex: date -s "11/25/2012 14:00" ( -> muda a data e hora) Ex: date -s "-1 hours" ( -> diminui 1 hora) |
hwclock | Mostra e configura o relógio do hardware/BIOS.
Ex: hwclock -> exibe a data e hora do hardware/BIOS; Ex: hwclock --utc -> idem; Ex: hwclock --debug -> idem, mas no modo debug; Ex: hwclock --localtime -> exibe a data e hora do meridiano de Greenwich; Ex: hwclock -w -> grava a hora do sistema operacional no hardware/BIOS; |
KERNEL | Descrição |
apt-get install kernel-image-xxxxx | instala o kernel e é no /boot/ o local onde fica tal kernel depois da instalação. Observe que esse kernel que está sendo instalado e que vai para o /boot/ é o kernel pre-compilado. |
apt-get install linux-headers | instala os sources/código fonte do kernel e eles ficam em “/usr/src/” do Debian. Um programa que utiliza os headers do Kernel [e o VMWare. |
yum install kernel-devel | instala os sources/código fonte do kernel e eles ficam em “/usr/src/” do RedHat . |
PROCESSOS, CONEXÕES, BIBLIOTECAS etc | Descrição |
ps | x |
ldd | Mostra as bibliotecas compartilhadas que um binário depende.
Ex: ldd /sbin/ifconfig Ex: ldd /usr/sbin/named |
lsof | Mostra detalhes de arquivos abertos por daemon e processos. Ótimo comando para verificar com mais detalhes as conexões abertas. Isso porque ao abrir conexões são acessados vários arquivos (bibliotecas, logs, dispositivos, executáveis, diretórios etc) e com o "lsof" se pode saber quais foram, qual o usuário, tipo, PID etc. Por exemplo, vamos supor que você utilizou o comando “netstat -tunap” e viu que a porta 888 está aberta e existem várias conexões estabelecidas nela. Contudo, não está muito claro que serviço ou processo está rodando nessa porta. Então, use o lsof (ex: lsof | grep –i processo) para descobrir: Ex: lsof -u hugo especifica o usuário a ser procurado Ex: lsof -c ssh -> especifica o processo/comando a ser procurado Ex: lsof /home/hugo -> verifica dentro do diretório o uso de algum arquivo Ex: lsof -i -> comando usado para listar os pseudo arquivos associados com conexões de rede |
REDE | Descrição |
ping | Serve para testar a comunicação entre dois host através do ICMP (request e reply). Ex: ping 10.1.1.1 Ex: ping -c 5 10.1.1.1 -> faz 5 pings Ex: ping -b 172.16.200.255 -> permite pingar em endereços de broadcast. O ping para saber se um endereço é broadcast, ele verifica a tabela de roteamento da própria máquina. Ex: ping -f 10.1.1.1 -> flood ping. Faz uma inundação de pings. Ex: ping -i 3 10.1.1.1 -> intervalo em segundo para cada ping. Ex: ping -R 10.1.1.1 -> mostra a rota que o ping usará. |
ftp | FTP (File Transfer Program/Protocol). Ex: ftp 10.1.1.1 Ex: ftp -p 10.1.1.1 -> modo passivo. Geralmente usado quando a conexão tem que atravessar um firewall que faz NAT. |
dig | Faz perguntas DNS. Comandos como "nslookup", "host" e "dig" não fazem cache no cliente, isso é de extrema importância para pegar sempre as informações atuais. Diferentemente do comando "ping" que sempre faz cache no cliente. dig debian.org -> faz pergunta detalhada ao DNS (/etc/resolv.conf) sobre o "debian.org" dig debian.org 10.1.1.1 -> faz pergunta detalhada ao DNS sobre o "debian.org" e "10.1.1.1" dig debian.org @10.1.1.1 -> faz pergunta detalhada ao DNS 10.1.1.1 sobre o "debian.org" dig MX debian.org -> faz pergunta detalhada ao DNS sobre os MX do "debian.org" dig -x 192.168.1.2 -> faz pergunta reversa (PTR) detalhada ao DNS sobre o IP "192.168.1.2" dig NS debian.org -> faz pergunta detalhada ao DNS sobre os NS do "debian.org" dig -> mostra informações sobre o DNS ROOT dig +short debian.org -> faz pergunta ao DNS (/etc/resolv.conf) sobre o "debian.org" dig +short MX debian.org -> faz pergunta ao DNS sobre os MX do "debian.org" dig +short +identify MX debian.org -> idem, mas informa o servidor DNS que foi pesquisado dig +nocmd +nocomments +nostats +noquestion MX debian.org -> idem, mas retira todos os "lixos". |
nslookup | Faz perguntas DNS. Comandos como "nslookup", "host" e "dig" não fazem cache no cliente, isso é de extrema importância para pegar sempre as informações atuais. Diferentemente do comando "ping" que sempre faz cache no cliente. nslookup debian.org -> faz pergunta ao DNS (/etc/resolv.conf) sobre o "debian.org" nslookup debian.org 10.1.1.1 -> faz pergunta ao DNS 10.1.1.1 sobre o "debian.org" nslookup -q=any debian.org -> faz pergunta detalhada ao DNS sobre o "debian.org" nslookup -q=mx debian.org -> faz pergunta detalhada ao DNS sobre o MX do "debian.org" nslookup -q=ns debian.org -> faz pergunta detalhada ao DNS sobre o NS do "debian.org" nslookup -> entre no ambiente "nslookup" para realizar perguntas DNS. |
host | Faz perguntas DNS. Comandos como "nslookup", "host" e "dig" não fazem cache no cliente, isso é de extrema importância para pegar sempre as informações atuais. Diferentemente do comando "ping" que sempre faz cache no cliente. host debian.org -> faz pergunta ao DNS (/etc/resolv.conf) sobre o "debian.org" host debian.org 10.1.1.1 -> faz pergunta ao DNS 10.1.1.1 sobre o "debian.org" host -a debian.org -> faz pergunta detalhada ao DNS sobre o "debian.org" host -v debian.org -> faz pergunta mais detalhada ao DNS sobre o "debian.org" host -t AXFR debian.org -> faz pergunta ao DNS sobre o "debian.org", mostrando todos os registros inseridos na zona (debian.org). Na verdade, essa opcao faz uma transferencia de zona, utilizando inclusive o TCP na porta 53 para isso. host -t IXFR debian.org -> idem, so que num formato mais proximo da linguagem humana. host -t MX debian.org -> faz pergunta ao DNS sobre o MX do "debian.org" host -t NS debian.org -> faz pergunta ao DNS sobre o NS do "debian.org" host -t A debian.org -> faz pergunta ao DNS sobre os A do "debian.org" host -t SOA debian.org -> faz pergunta ao DNS sobre os SOA do "debian.org" host -t TXT debian.org -> faz pergunta ao DNS sobre o TXT do "debian.org". O TXT é um registro relacionado ao SPF que provê mais segurança ao transmitir e-mails. host -t SPF debian.org -> faz pergunta ao DNS sobre o SPF do "debian.org". O SPF provê mais segurança ao transmitir e-mails. O registro TXT e SPF são equivalente, a única diferença é que o SPF é mais atual. Sempre é um boa prática colocar os dois nos servidores DNS. host -t PTR 128.31.0.51 -> faz pergunta ao DNS sobre os PTR do IP "128.31.0.51". O PTR sempre trabalha com IP. |
resolveip | Faz perguntas ao DNS. resolveip debian.org -> faz pergunta ao DNS (/etc/resolv.conf) sobre o "debian.org" resolveip debian.org, www.google.com.br www.hugoazevedo.eti.br www.globo.com -> faz pergunta ao DNS (/etc/resolv.conf) sobre o "debian.org", "www.google.com.br", "www.hugoazevedo.eti.br" e "www.globo.com". resolveip 128.31.0.51 -> faz pergunta ao DNS sobre os PTR do IP "128.31.0.51". O PTR sempre trabalha com IP. |
whois | Faz perguntas DNS e muito mais. whois debian.org -> faz pergunta ao DNS sobre o "debian.org" e traz muitas outras informações que são opcionais como as informações do proprietário e de gerenciamento. |
traceroute, tracert, traceproto ou traceroute6 |
exibe informações das rotas que o pacote passa.
traceroute debian.org traceroute 10.1.1.1 -> para obter as informações das rotas até alcançar o IP 10.1.1.1, usará a port 33434 e o UDP traceroute -p 80 10.1.1.1 -> idem, só que usará a port 80 e o UDP traceroute -I 10.1.1.1 -> idem, só que usará o ICMP traceroute -I -n 10.1.1.1 -> idem, só que não faz resolução de nome - DNS |
tracepath tracepath6 |
exibe informações das rotas que o pacote passa e o MTU (Maximum Trasmission Unit) dos roteadores.
tracepath debian.org tracepath 10.1.1.1 tracepath -n 10.1.1.1 -> não faz resolução de nome - DNS |
mtr | [E um "traceroute" em tempo real. |
ifconfig ip address |
exibe informações ou configura as interfaces de rede. Ao levandar ou derrubar um interface de rede, o DHCP não é consultado.
ifconfig ifconfig ifconfig eth0 ifconfig eth0:0 ifconfig eth0 172.16.200.22 netmask 255.255.255.0 ifconfig eth0:0 172.16.200.22 netmask 255.255.255.0 ifconfig eth0:0 172.16.200.22 netmask 255.255.255.0 broadcast 172.16.200.255 ifconfig eth0:0 172.16.200.22 netmask 255.255.255.0 broadcast 172.16.200.255 up -> idem ifconfig eth0 down ifconfig eth0:0 down ifconfig eth0 up ifconfig eth0:0 up ifconfig eth0 mtu 1492 ifconfig eth0 mtu 1492 up --> idem ip address show ip address ls ip address add 172.116.200.22/30 dev eth0 | ip address del 172.116.200.22/30 dev eth0 ip address add 172.116.200.23/30 dev eth0 label eth0:0 | ip address del 172.116.200.23/30 dev eth0 label eth0:0 ip address add 172.116.200.22 brd + dev eth0 -> VER ip address add 172.116.200.22 brd + dev eth0 label eth0:0 -> VER |
ifup / ifdown | Levanta ou derruba uma interface de rede. Ao levandar ou derrubar um interface de rede, o DHCP é consultado. ifdown eth0 ifup eth0 |
ipmaddr | Mostra os enderecos fisico (MAC) da interfaces de rede, enderecos de multicast etc. |
mii-tool | Ferramenta muito boa para mostrar informacoes sobre as interfaces de rede e para configura-las. |
ethtool | Ferramenta muito boa para mostrar informacoes sobre as interfaces de rede e para configura-las. |
plipconfig | Ferramenta para configurar dispositivos PLIP. |
iptunnel | Configuracoes de tuneis. |
netstat | Status das conexões de rede. netstat -tunap - conexões ativas (-a) ALL netstat -tunlp - conexões aberta (-l) LISTEN |
iptraf | [E um excelente visualizador do que est[a acontencendo nas interfaces de rede em tempo real. Perfeito para descobrir onde o gargalo de rede est[a ocorrendo. |
nmap | Scanner de portas e auditor de rede e segurança. nmap 10.1.1.1 - verifica quais portas estão abertas nmap -O 10.1.1.1 - idem, mas verifica também qual é o sistema operacional, kernel, uptime etc. nmap -sP 172.16.200.0/24 - verifica quais hosts estão on-line na rede especificada. nmap -p 80,443 10.1.1.1 - especificando as portas a serem procuradas. nmap -sV 10.1.1.1 - verifica quais portas estão abertas e as versões dos protocolos/programas que as abrirão. |
chkconfig | habilita ou desbilita serviços/daemons a serem iniciados/startados durante a inicialização do sistema. chkconfig -l | --list -> lista. chkconfig klogd on -> habilita. chkconfig klogd off -> desabilita. |
x | x |
x | x |
x | x |