Baixe o app para aproveitar ainda mais
Prévia do material em texto
MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 1 MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 2 mailto:contato@mcury.com.br MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 3 Características do Linux System Administrator O curso de Linux System Administrador prepara o aluno para os exames 117-101 e 117-102, que fazem parte do programa de certificação LPIC-1, oferecido pelo Linux Professional Institute (LPI). O conteúdo do curso é sincronizado com os objetivos listados por tópicos no site www.lpi.org e seu conteúdo pode ser encontrado em nosso site: www.mcury.com.br. O foco do curso se estende às tarefas administrativas de sistema, como abaixo: Montar o melhor Layout de particionamento em um servidor; Instalar distribuições Linux; Entender e manter a integridade dos sistemas de arquivos e diretórios do sistema; Instalar, consultar e remover programas em diferentes plataformas Linux; Administrar contas de usuários e grupos; Criar, personalizar e fazer uso de scripts ou programas úteis para o administrador; Manipular serviços de sistema e seus níveis de execução; Criar a melhor estratégia de armazenamento de arquivos para serviços, usuários e grupos; Criar estratégias de backups; Entender e usar a documentação disponível no sistema e online; Configurar, compilar e instalar o Kernel Linux na distribuição, assim como os seus módulos; Entender a linguagem SQL; Administrar serviços de interface gráfica; Configurar interfaces de rede, roteamento e DNS em clientes; Entender e usar um Agente Transmissor de E-mails; Criar filtros de pacotes de rede no Firewall. O objetivo deste material didático é auxiliar o aprendizado do aluno sobre a matéria ministrada pelo instrutor em sala de aula. Quaisquer dúvidas podem ser tiradas com o mesmo em sala de aula. Sejam bem-vindos a M.Cury e ao GNU/Linux!!! http://www.lpi.org/ http://www.mcury.com.br/ MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 4 Índice: Tópico Página 1- CONCEITOS 05 2- PROGRAMAS E COMANDOS BÁSICOS 12 3- DISCOS E PERMISSÕES 23 4- GERENCIAMENTO DE PACOTES 27 5- INSTALAÇÃO DO SISTEMA OPERACIONAL 37 6- O SHELL 41 7- DOCUMENTAÇÃO NO LINUX 46 8- COMANDOS DE CONTEÚDO 50 9- EXPRESSÕES REGULARES 64 10- USUÁRIOS E GRUPOS 71 11- PERMISSÕES 85 12- SISTEMA DE ARQUIVOS 89 13- LINKS 103 14- COMANDOS DE BUSCA 104 15- RAID 107 16- BACKUP E COMPACTAÇÃO 113 17- AGENDAMENTO DE TAREFAS 121 18- COTAS DE ARMAZENAMENTO 126 19- GERENCIAMENTO DE PROCESSOS E INICIALIZAÇÃO 132 20- KERNEL 144 21- GERENCIADORES DE BOOT 155 22- COMPILAÇÃO DE PACOTES E BIBLIOTECAS 162 23- SHELL SCRIPT 166 24- REDES EM LINUX 184 25- CLIENTES DE SERVIDORES LINUX 197 26- SERVIDOR DE LOGS 203 27- SUPERSERVIDORES 207 28- TCP WRAPPERS 209 29- SSH 210 30- SINCRONIZAÇÃO DE DATA E HORA 214 31- SERVIDOR X 217 32- SERVIÇO DE IMPRESSÃO 224 33- LINGUAGEM SQL 227 34- MTA 230 35- FIREWALL IPTABLES 234 MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 5 1 - CONCEITOS Antes de começar a administrar sistemas operacionais Linux, é preciso ter alguns conceitos bem fundamentados: 1.1 – O projeto GNU Este projeto surgiu em 1984 (criado por Richard Stallman) e, desde este momento, teve como objetivo a criação de softwares livres baseados em sistemas operacionais Unix. O nome GNU vem de “GNU is Not Unix”, e não somente do nome do animal Gnu, como muitos pensam. Este projeto é o responsável por desenvolver alguns softwares muito conhecidos pelo público que utilizam sistemas open- source, como GIMP e GNOME, por exemplo. É importante ressaltar que Linux também não é GNU, mas que os sistemas operacionais Linux utilizados hoje em dia podem tranquilamente ser chamados de GNU/Linux. Este fato se explica porque o que se aplica do projeto GNU em sistemas operacionais GNU/Linux é apenas a estrutura de arquivos e diretórios, o núcleo aplicado foi desenvolvido por Linus Torvalds (que não tem nada a ver com o projeto) e, desde então, vem sendo aplicado em conjunto com sistemas operacionais GNU. 1.2 - A GPL A FSF (Free Software Foundation) criou como parte do projeto GNU, a GPL (General Public License, ou Licença Pública Geral), para que houvesse um padrão de licenciamento para os softwares livres a serem desenvolvidos a partir do fim da década de 80. O desenvolvedor da GPL foi Richard Stallman. Ela é baseada em quatro liberdades: Execução do software (liberdade nº 0); Estudo do software (liberdade nº 1); Distribuição do software (liberdade nº 2); Aperfeiçoamento do software (liberdade nº 3). Como integrantes da lista de softwares baseados em GPL (os chamados “open-source”) estão sistemas operacionais como FreeBSD, OpenSolaris e IBM-AIX (que são baseados em Unix), Debian, Red Hat, Slackware e Suse, que funcionam sobre Kernel Linux. 1.3 – Open Source x Free Ser open-source não significa ser grátis. Empresas como a Red Hat e a Novell cobram pelo suporte de seus produtos Red Hat Enterprise e Suse Linux Enterprise, respectivamente. O motivo de se poder cobrar pelo suporte de produtos é que, sobre isso, não se opõe a GPL, já que o Kernel continua sendo Linux (cujo código fonte pode ser facilmente encontrado em www.kernel.org para download) e as outras liberdades continuam garantidas ao usuário. Existem sim alguns exemplos de “distribuições” que, além de ser open-source, são também “free” e são excelentes opções para servidores e (ou) desktops. Exemplos bem claros disso são as distribuições Debian, Ubuntu, CentOS e Fedora. Para maiores detalhes sobre a GPL, pode-se consultar a URL www.gnu.org/licenses. http://www.kernel.org/ http://www.gnu.org/licenses MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 6 1.4 - O Linux e as Distribuições Criado pelo até então universitário Linux Torvalds em Helsinki (Finlândia), o Linux surgiu de um estudo de uma versão reduzida de kernel Unix (o Minix) em um projeto de faculdade. A primeira versão do Kernel foi lançada em 1991 e, a partir daí, este kernel Linux começou a ser utilizado por diversas distribuições open-source. As distribuições mais significativas são: Debian, Red Hat, Suse, Slackware, Gentoo, Arch Linux, Mandriva, Ubuntu, CentOS e Fedora. Algumas “distribuições” se originaram de outras, pois é bem mais prático e coerente desenvolver uma grande solução em cima de outra que já funcione muito bem nos mesmos padrões desejados. Exemplos: Ubuntu e Kubuntu são baseadas em Debian. O Ubuntu (que tem como diferença para o Kubuntu apenas o fato de utilizar GNOME enquanto o KUBUNTU usa KDE como interface gráfica) tem se destacado muito no cenário Desktop (usuário final) por sua fácil usabilidade, efeitos de interface gráfica, suporte nativo a sistemas de arquivos NTFS e FAT16/32, drivers para inúmeras impressoras e scanners, etc. Por este motivo, vem sendo adotado como principal distribuição Linux para Desktops. Sua versão Server também tem sido largamente utilizada por empresas e estudiosos na área de TI. O Debian já é um sistema operacional muito mais focado em aplicações para servidores e é preferido pela maioria dos estudantesde especialistas em Linux pelo fato de ele ser 100% free e de ter o modo de instalação CORE, que não carrega nenhum tipo de aplicação além do próprio sistema básico, o que quer dizer que o sistema fica totalmente “cru” para que o próprio administrador escolha, efetivamente, que tipo de papel ele vai desempenhar como servidor de rede. Mandriva*, Fedora e CentOS são baseados no Red Hat. Assim como o Ubuntu, o Fedora tem se destacado em aplicações que dizem respeito ao usuário final e é uma excelente distribuição para este fim. MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 7 O CentOS se destaca pala sua função de servidor Red Hat 100% free, pois a Red Hat cobra suporte ao seu sistema operacional Red Hat Enterprise e a versão free deste sistema operacional não existe mais. Quando se diz que uma distribuição é baseada na outra, não quer dizer que seja a mesma coisa, mas sim que a construção de uma se baseou em um projeto já pronto da outra. Algumas diferenças entre sistemas operacionais baseados em Debian e em Red Hat são bem evidentes, como a instalação e o gerenciamento de pacotes instalados, a estrutura de diretórios e os arquivos de configuração. Podemos afirmar, então, que o Linux se resume ao kernel que é instalado em sistemas operacionais open-source que assim o desejarem. Outra consideração importante é que, por se tratar de um sistema que o usa o mesmo modelo POSIX do Unix, não haverá muitas barreiras para o administrador Linux experimentar sistemas operacionais como FreeBSD, Solaris, SunOS, etc. Alguns comandos e diretórios são simplesmente os mesmos. Algumas distribuições são protegidas pelas leis de Copyright, caso de Suse Enterprise e Red Hat Enterprise. *O Mandriva originou da fusão das empresas Mandrake e Conectiva. 1.5 – O Kernel Linux O papel do kernel para uma distribuição é fundamental, pois é ele que provê o suporte a recursos de software e hardware necessários para o funcionamento do mesmo. O exemplo clássico disto é que, em alguns servidores, os administradores têm o costume de reconfigurar, recompilar e reinstalar o kernel para tirar mais proveito de recursos de um processador específico ou até habilitar o modo PAE para que um sistema operacional de 32 bits possa operar com mais de 4 GB de memória RAM. Os comandos do Linux dependem que exista algum programa que os interprete, assim como o este interpretador (Shell) precisa que algum Kernel interaja entre ele e o Hardware existente. Um grande exemplo disso é que se o kernel não der suporte a placas de rede Wireless, não adiantará nada o administrador tentar usar o comando iwconfig, pois não haverá suporte ao hardware de rede sem fio para manipulá-lo Um kernel pode ser classificado de 2 formas: Monolítico: carrega todos os recursos de que precisa na própria imagem de boot do kernel. Modular: carrega grande parte dos recursos de kernel em módulo que podem ou não ser carregados após o boot do sistema. A maioria dos sistemas operacionais prefere trabalhar com kernel modular. Estas definições podem ser feitas quando o administrador configura e compila o kernel. Versões do kernel A nomenclatura de uma versão de kernel segue o padrão abaixo: <versão maior>.<versão menor>.<compilação/patch>.<versão extra> Por definição, um kernel era considerado instável (ainda em desenvolvimento) quando a sua versão menor fosse ímpar, mas, desde 2004, com o lançamento da versão 2.6, isto não é mais aplicado. O que acontece agora é que, quando for preciso alterar parâmetros de segurança e suporte a dispositivos e tecnologias , as alterações serão preferencialmente feitas no terceiro campo e, quando houver a necessidade de um conjunto massivo de alterações, a segunda versão será afetada (de forma estável). HARDWARE KERNEL SHELL COMANDOS MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 8 Exemplo de versão do kernel: 2.6.32-2-PAE Neste caso acima, temos um kernel de revisão 32, que recebeu a versão extra de 2-PAE do administrador porque ele inseriu durante a configuração do mesmo o suporte a PAE e decidiu declarar isso no nome do seu kernel. 1.6- Terminais do Linux O Linux trabalha com a quantidade padrão de 63 terminais disponíveis para uso. O grande problema é encontrar combinações possíveis de teclas de função para isso tudo. Cada um desses terminais funciona de forma independente, facilitando assim a execução de múltiplas tarefas. Imagine que em um dos terminais pode-se iniciar um servidor DNS e em outro monitorar o log pertinente ao mesmo. Convencionalmente, se utilizam os terminais abaixo: Terminal Uso Teclas de atalho /dev/tty1 Modo de comandos ALT+F1 /dev/tty2 Modo de comandos ALT+F2 /dev/tty3 Modo de comandos ALT+F3 /dev/tty4 Modo de comandos ALT+F4 /dev/tty5 Modo de comandos ALT+F5 /dev/tty6 Modo de comandos ALT+F6 /dev/tty7 Interface Gráfica ALT+F7 Estes terminais são utilizados por interpretadores de comandos, como BASH e SH, no uso dos comandos administrativos e de usuários. Para logins remotos e emulações de terminais em modo gráfico, são utilizados os terminais /dev/pts/<num>. Exemplos: /dev/pts/0 – um terminal emulado por xterm. /dev/pts/1 – um terminal utilizado por shell seguro (SSH). /etc/securetty: é o arquivo onde se encontram todos os terminais suportados pela distribuição. Ele pode ser usado para restringir ou permitir o uso de terminais no sistema. A tendência clara de um usuário final é “fugir” dos terminais do Linux, até porque sua usabilidade não atende às aplicações das quais ele faz uso, portanto, é importante que sejam utilizados gerenciadores de desktop em sistemas Linux que forem para este fim. Exemplos de gerenciadores de desktop são KDE e GNOME. MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 9 Exemplo de terminal: 1.6 – Interfaces gráficas O uso de interface gráfica, como já foi dito anteriormente, é mais indicado e praticado para usuários de desktop, ainda que muitas aplicações gráficas para servidor sejam utilizadas para gerenciar serviços de rede e hardware, por exemplo. Como é um assunto a ser falado posteriormente com mais detalhes neste mesmo material, vamos dar um apanhado geral das principais interfaces gráficas disponíveis para Linux. Alguns sistemas operacionais disponibilizam a instalação de mais de uma interface gráfica, enquanto outros são “fechados” a este tipo de opção (caso do Ubuntu, que usa o Gnome e tem no Kubuntu a sua “versão com KDE”). GNOME Por ser um gerenciador de janelas com muitos efeitos visuais e menus organizados e de fácil entendimento, este desktop-manager é preferido pelos usuários de desktop Linux. Ele gerencia diversas áreas de trabalho com grande facilidade, propiciando o envio de múltiplas janelas de uma área de trabalho para outra (recurso muito útil para designers, por exemplo). MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 10 Exemplo de área de trabalho do Gnome no Ubuntu Efeito de cubos do GNOME com múltiplas áreas de trabalho KDE O KDE é o desktop manager preferido de alguns administradores de servidores (quando eles precisam utilizar interface gráfica) por causa da sua leveza. A estrutura de menus do KDE é bem diferente em relação à do Gnome, se assemelhando um pouco com a estrutura de menus do Windows (grosso modo). Ele não conta com alguns recursos especiais do Ubuntu, mas também é uma ótima opção, já que o que mais o usuário ou administrador do Linux tem é opção!! MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTOM.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 11 Menu do KDE no Kubuntu Qual distribuição, versão do kernel e desktop manager utilizarem é uma questão a ser analisada cuidadosamente pelo usuário/administrador, pois não é em toda distribuição que se pode utilizar um servidor de correio eletrônico, por exemplo, e também uma “Distribuição do tipo Servidor” não vai satisfazer o usuário de programas multimídia. É importante lembrar que ter uma interface gráfica instalada pode significar o maior uso de memória RAM (em alguns casos, chegando a fazer uso de SWAP), o suporte obrigatório a recursos e resoluções de vídeo suportadas pelos drivers dos fabricantes de vídeo, dispositivos de áudio instalados, etc. Justamente por tudo isso é que o administrador Linux não instala interface gráfica no servidor ou, se for necessário, opta por instalar a interface mais leve possível e apenas a utiliza em caso de última necessidade. MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 12 2 - PROGRAMAS E COMANDOS BÁSICOS Os comandos GNU/Linux são totalmente SENSITIVE CASE. Isso significa que se uma opção de um comando ou um comando for minúscula, ela não funcionará se for trocada por maiúscula. Alguns comandos têm opções em modo curto e modo longo. Algo do tipo: -a que também pode ser usado como --all. # ls Lista conteúdo de diretórios. Sintaxe: # ls <opções> <diretório> Opções: -l : modo longo. Lista detalhes sobre os objetos, como o dono, o grupo, as permissões, data de última alteração e tamanho (a unidade padrão é o byte). -a ou --all : lista todos os objetos contidos no diretório, inclusive os ocultos(iniciando com .). -i ou –inode : lista o número inode de todos os objetos (índice que o sistema de arquivos usa para identificar o arquivo ou diretório). -c : lista em ordem alfabética. -h ou --human-readable: lista o conteúdo no modo “mais humano”. A unidade de tamanho de cada objeto é a mais compreensível possível. -C : lista o conteúdo em colunas. -t : classifica o conteúdo pela data de última modificação (ctime). -S : classifica os arquivos pelo tamanho. -R: lista o conteúdo recursivamente, subdiretórios e arquivos. -r: classifica o conteúdo em ordem alfabética reversa. Exemplos: Listando todo o conteúdo do diretório /root/LPI, inclusive arquivos ocultos, em modo longo e “mais humano”: # ls –lha /root/LPI Listando por ordem alfabética reversa e de modo recursivo, todo o conteúdo de /etc: # ls –lrR /etc Listando em modo longo os arquivos e diretórios de /var/www e o número inode de cada um: # ls –li /var/www Detalhes de um arquivo: Ao listar um diretório específico com 'ls -l', foram verificados alguns itens interessantes: MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 13 Acontece que a primeira coluna representa o tipo do arquivo e as permissões aplicadas a ele. Dessa primeira coluna, vamos destacar por hora o tipo (primeiro campo). Os arquivos estão divididos em alguns tipos: _ : é um arquivo regular. d : é um diretório. l : é um link simbólico. b: é um arquivo de bloco (um disco ou uma partição). c: é um arquivo de caracteres (um terminal, por exemplo). p: é um pipe. s: é um socket. As outras colunas são: <arquivos contidos> <dono> <grupo> <tamanho> <data de última modificação> # file Mostra qual o tipo de arquivo em questão. Sintaxe: # file <objeto> # touch Cria arquivos vazios e/ou troca data de modificação de arquivos. Sintaxe: # touch <opções> <arquivo> Opções: -d : especifica data. -m : troca data de última modificação. -r : utiliza data de última modificação de outro arquivo como referência. MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 14 Exemplos: # touch -m -d 20100512 arq1 : troca a data de última modificação para 12/05/2010. # touch arq2 : cria um arquivo vazio chamado 'arq2'. # cd Altera o diretório atual. Sintaxes: # cd <diretório_destino> # cd .. - retorna um nível na hierarquia (pai). # cd ../.. - retorna 2 níveis na hierarquia. # cd ~ - muda para o diretório pessoal do usuário em seção. É o mesmo que cd sem argumentos. # cd ~user1 – muda para o diretório pessoal do usuário user1. # cd ../<dir1> – muda para o diretório 'dir1', que está um nível hierárquico acima. # mkdir Cria diretórios. Sintaxe: $ mkdir <opções> <diretórios> Opções: -v : “verbose”. Exibe detalhes do que foi feito. -m <perm>: cria o diretório já com as permissões determinadas. -p : cria subdiretórios e diretórios de uma vez só. Não há a necessidade de existir o diretório pai para que seja criado o subdiretório. Exemplos: Criando os diretórios linux/debian/ubuntu de uma só vez e exibindo a saída do comando: # mkdir -pv linux/debian/ubuntu Criando o diretório suse com permissão 733 (permissões de arquivos e diretórios serão detalhadas mais à frente). # mkdir -mv 733 suse Criando diretórios dir1, dir2, dir3 e dir4 em um só comando, exibindo também a saída do comando: # mkdir -v dir{1,2,3,4} Criando diretórios dir10, dir11, dir12, dir13, dir14, dir15 em um só comando, em modo “verbose”: # mkdir -v dir{10..15} # rmdir Exclui diretórios vazios. Sintaxe: # rmdir <diretório> # rm Exclui arquivos e diretórios. Sintaxe: # rm <opções> <arquivo/diretório> MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 15 Opções: -v : verbose. -i : modo interativo. Espera confirmação do usuário para excluir. -r : modo recursivo. Exclui diretório e seu conteúdo. # mv Move ou renomeia arquivos e diretórios. Sintaxe: # mv <opções> <arquivo/diretório> <dir_destino/nome_destino> Opções: -i : modo interativo. Pergunta antes de sobrescrever um arquivo existente com o mesmo nome. -v : modo verbose. -n : não sobrescreve um arquivo de destino com o mesmo nome. -f : modo forçado. # cp Cria cópias de arquivos ou diretórios. Sintaxe: # cp <opções> <origem> <destino> Opções: -R : modo recursivo. Copia diretório e seu conteúdo. -v : modo verbose. -i : modo interativo. Pergunta antes de sobrescrever destino. -u : modo “update”. Apenas copia para o destino arquivos que o mesmo não tem ou que, a pesar de ter o mesmo nome, são diferentes em seus conteúdos. -f : modo forçado de cópia. -p : preserva os atributos originais do arquivo. -d : preserva ligação simbólica. Exemplos: Copia todos os arquivos de /etc/network para /tmp mantendo seus atributos em modo verbose: # cp -vp /etc/network/* /tmp Apenas copia o arquivo /etc/passwd se houver alguma modificação do original em relação ao arquivo de destino com o mesmo nome: MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 16 # cp -vu /etc/passwd /tmp # du “Disk usage” - exibe o tamanho em disco ocupado por diretórios. Sintaxe: # du <opções> <diretório> Opções: -k : em KB. -m : em MB. -h : modo mais “humano”. Exibe o resultado no múltiplo de byte mais compreensível. -s : modo simples. Só exibe o tamanho ocupado pelo diretório, não o de seu conteúdo. Exemplos: Exibindo o tamanho ocupado por todos os subdiretórios de /etc/network e por ele próprio em modo mais “humano”: # du -h /etc/network Exibindo apenas o tamanho total do diretório /etc em modo mais humano: # df Exibe informações sobre armazenamento de volumes montados. MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 17 Sintaxe: # df <opções> <volume> Opções: -k : em KB. -m : em MB. -h : modo mais “humano”. Exibe o resultadono múltiplo de byte mais compreensível. -i : ao invés de exibir informações sobre blocos, exibe informações sobre inodes. -T: Exibe o tipo de sistema de arquivos utilizado por cada partição montada. Exemplo: Exibindo o espaço ocupado pela partição /dev/sda5, que está montada: # df -h /dev/sda5 Mostrando informações sobre a reserva de inodes da partição montada /dev/sda5: # df –hi /dev/sda5 # cal Exibe o calendário no terminal. Opções: -j : exibe calendário Juliano (dias corridos do ano). -3 : exibe calendário do mês anterior, do atual e do posterior. -m <num> : exibe calendário do mês específico. Exemplo: Exibindo o calendário dos dias corridos até hoje desde o início do ano: # cal -j MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 18 # date Exibe ou modifica a data e hora do sistema. Opções: --utc : exibe data e hora no padrão UTC(Universal Time Clock). -r <arquivo>: exibe a data e hora de última modificação de um arquivo. -R : exibe data e hora no formato RFC2822. +<var> : utiliza variáveis do comando para exibir em formato específico. Variáveis do date: %d : dia. %m : mês. %y : ano com 2 dígitos. %Y : ano com 4 dígitos. %H : hora. %M : minuto. %S : segundo. %e : dia do mês. %b : mês por extenso. Sintaxes: $ date <opções> $ date +<variáveis> # date MMDDhhmmAAAA (mês,dia,hora,minuto e ano) – modificação da data. Exemplos: Modifica a data para 27/02/2010 e hora para 08:31. # date 022708312010 3 Formas diferentes de representação de data e hora: MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 19 # free Exibe informações sobre uso de memórias RAM e Swap. Sintaxe: # free <opções> Opções: -k : em KB. -m : em MB. -g : em GB. -t : exibe RAM + Swap. Exemplos: Exibindo o tamanho total de memória ocupado em MB: # free -m Exibindo em tempo real (executando o comando de 1 em 1 segundo) o uso de RAM + Swap: # watch -n1 free -mt *Obs: O comando watch tem a função de repetir a cada ‘x’ segundos um comando específico, o padrão é o intervalo de repetição de 2 segundos. 2.1 – Comandos de desligamento # halt e # poweoff Desligam o sistema. # shutdown Desliga, reinicia ou simula desligamento. MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 20 Sintaxe: # shutdown <opções> Opções: -h - desliga o sistema. -r - reinicia o sistema. -c - cancela qualquer shutdown. -k - simula o desligamento do sistema enviando mensagens de aviso para todos os terminais. -f - pula verificação de disco no próximo boot. -F - força verificação de disco no próximo boot. Exemplos: Desliga o sistema. # shutdown -h now Agenda desligamento do sistema para 23:30. # shutdown -h 23:30 Simula desligamento imediato enviando mensagens para os terminais ativos: # shutdown -k now 2.2 – Editor vim Editor de texto sucessor do VI, que possui compatibilidade com qualquer sistema Linux. # vim <arquivo> – edita arquivo. Opções internas do editor: <insert> – modo de inserção de texto. <insert>2x – modo 'replace'. Sobrescreve conteúdo posterior. <esc> – entra em modo de comandos. v – entra em modo 'visual'. Seleção de texto. Comandos: yy – copia linha inteira. y – copia conteúdo selecionado. p – cola. x – recorta conteúdo selecionado. dd – exclui linha inteira. d – exclui conteúdo selecionado. MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 21 :set number – exibe linhas numeradas. :set nonumber – desliga numeração. :%s /<texto>/<texto> – substitui texto. /<texto> – busca por texto. A tecla n continua a busca. :<num> – vai para a linha <num>. :split <arquivo> ou :sp <arquivo> – abre outro arquivo no editor. CTRL+ALT+W – troca de documentos em modo 'split'. :!<comando_do_shell> – executa um comando do shell dentro do vim. :.!<comando_do_shell> – além de executar o comando do shell dentro do vim, copia sua saída padrão para o arquivo. :w – salva arquivo. :q – sai sem salvar. :wq ou :x – sai salvando. :w <caminho>/<nome> – salva como... :<comando>! - força o uso do comando. ALT+U – desfaz alteração. CTRL+R – refaz alteração . O editor VIM é, com certeza, uma ótima ferramenta para um administrador de sistema e rede Linux, uma vez que muitos serviços de sistema dependem única e exclusivamente de um arquivo de configuração, sem contar a programação em Shell Script, que fica muito mais interessante com os recursos do VIM. O arquivo de configuração de recursos do VIM é o /etc/vim/vimrc no Debian e /etc/vimrc em Red Hat. Para alguns recursos especiais oferecidos, como sintaxe de algumas linguagens de programação, organização automática do script e a salva da última posição do cursor do teclado após fechar o arquivo, é preciso instalar o pacote ‘vim- scripts’. Exemplo de arquivo /etc/vim/vimrc Outro recurso importantíssimo do VIM é a manutenção de um arquivo de backup para cada documento que está sendo redigido, protegendo o seu conteúdo contra qualquer desligamento involuntário ou contra qualquer outro tipo de acidente que impossibilite o administrador de salvar o arquivo antes. Neste caso, é mantido um arquivo com o seguinte nome: .<nome_original>.swp, que é o chamado arquivo de swap, este conteúdo que está dentro dele só pode ser restaurado com o seguinte comando: MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 22 # vim -r <nome_original> Logo após, o documento tem que ser salvo com a opção w e caso tudo esteja correto pode-se remover de swap, pois, se isto não for feito, toda vez que for abrir o arquivo o editor irá te avisar de que existe um arquivo de swap e irá te perguntar o que você deseja fazer em função disso. MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 23 3 - DISCOS E PARTIÇÕES 3.1 - Discos A nomenclatura de discos no Linux é bem particular. Ela consiste em, ao identificar o volume físico, criar um arquivo de bloco dentro de /dev correspondente a ele. Exemplo: /dev/sda (1º disco SATA). O caso mais particular de discos é o dos IDEs. Qualquer placa-mãe de qualquer computador pode abrigar apenas 4 discos IDEs. Para este caso, fica assim a nomenclatura: /dev/hda – Primary Master. /dev/hdb – Primay Slave. /dev/hdc – Secondary Master. /dev/hdd – Secondary Slave. Esta nomenclatura acima engloba também CDs/DVDs IDEs. Para este caso, existirá um link simbólico de um desses endereços para /dev/cdrom, facilitando assim a montagem por parte do usuário. No caso de discos SATA, SAS, SCSI e discos externos em geral, já fica diferente: /dev/sda – 1º disco. /dev/sdb – 2º disco. /dev/sdc – 3º disco. /dev/sdd – 4º disco, e assim por diante. Para um drive de CD/DVD SATA, é criado o arquivo de bloco correspondente /dev/sr(0,1,2,3..), com link para /dev/cdrom, da mesmo forma. Os disquetes são reconhecidos por /dev/fd0 e /dev/fd1. Drives de fita SCSI são reconhecidos como /dev/ft0(1,2,3..). Para fazer a consulta de quais discos estão disponíveis para uso e quais os seus tipos, deve-se ler o arquivo /proc/partitions. Este arquivo é onde o Kernel vai consultar e escrever as tabelas de partições e discos que podem ser utilizados pelo sistema. Nele surgirão algumas informações importantes como o major number dos discos, que é o número de identificação do tipo dos mesmos. O exemplo abaixo mostra a interpretação de um arquivo desse: # cat /proc/partitionsmajor minor #blocks name 8 0 156290904 sda 8 1 7164958 sda1 8 16 78184008 sdb 8 17 1959898 sdb1 Pelo que o arquivo mostrou acima, temos dois discos prontos para uso (sda e sdb) e os dois são SATA. O que indica que ele é SATA é o major number 8. Os major numbers são assim classificados: 3 – disco IDE (ide-0). 7 – dispositivo de Loop(não ligado a disco físico). 8 – disco SATA, SAS, SCSI e discos externos. 9 – RAID via software. 22 – Disco IDE (ide-1). MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 24 3.2 - Partições Quanto à nomenclatura de partições, é preciso ter muita atenção pois o Linux as trata de maneira bem conceitual, a começar pelo limite de partições: 63 no total. Os minor numbers definem o tipo de cada partição: De 1 a 4: simbolizam partições primárias ou estendidas. De 5 em diante: simbolizam partições lógicas. Se forem ocupados todos os minor numbers de 1 a 4, o restante do espaço em disco (se houver) fica inutilizável, por isso, é importante saber que, para que se possa utilizar mais de 4 partições em um disco, uma partição estendida deve ser criada. A função da partição estendida é apenas abrigar as partições lógicas, ou seja: ela nunca vai ser montada em diretório algum do sistema. Vamos conferir outra tabela de partições: # cat /proc/partitions No caso acima, vamos analisar a tabela de Particionamento de /dev/sda: /dev/sda1 é uma partição primária. /dev/sda2 é uma partição estendida, que foi criada com o único objetivo de serem criadas partições lógicas dentro dela. /dev/sda5 é uma partição lógica. /dev/sda6 é uma partição lógica. /dev/sda7 é uma partição lógica. 3.3 – Esquemas de Particionamento Como já havia sido comentado em FHS, é muito importante que se pense bem no layout de Particionamento antes de fazer uma nova instalação em um servidor qualquer. É importante que alguns diretórios fiquem em partições separadas do sistema raiz, são elas: MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 25 /tmp – é o único diretório que tem permissão de escrita para qualquer usuário comum, sendo assim, qualquer usuário pode acabar com os blocos disponíveis da partição do sistema raiz, deixando muitos serviços sem funcionar mais, /home – por ser o diretório onde, por padrão, irão ficar os arquivos pessoais de cada usuário, é preciso analisar a necessidade e o tipo de tecnologia de armazenamento que vai ser usado para a partição que será montada neste diretório. O recomendável para um servidor, que possui muito volume de arquivos nesse diretório, é que seja utilizado o sistema LVM. /var – é importante deixar este diretório em outra partição, pois nele podem estar arquivos de sites de um servidor web, as caixas de entrada dos usuários em um servidor de e-mail, bancos de dados do MySQL- Server, logs do sistema que têm apenas o programa logrotate para garantir sua rotatividade. /usr/local – boa parte dos programas que são aqui instalados tem suas bibliotecas e arquivos executáveis copiados para este diretório, por isso é importante isolá-lo do sistema raiz. Partição Swap – para a realidade atual, criar uma partição Swap está se tornando cada vez mais desnecessário. Ela funciona como memória de auxílio à memória principal (RAM), mas com o crescente uso de memórias RAM de capacidades altíssimas de armazenamento temporário ela tornou-se cada vez mais desnecessária. Costumava-se destinar o dobro do espaço de RAM para a criação de uma partição Swap, hoje fica a critério de o administrador criá-la. 2 GB estaria de bom tamanho, se necessário. 3.4 - O FHS O Filesystem Hierarchy Standard (Padrão Hierárquico de Sistema de Arquivos) é mantido pela Free Standards Group, que é composta por empresas como HP, IBM e Dell. O projeto inicial foi aproveitado, porém personalizado pela maioria das distribuições, a maioria delas aproveita o formato original do FHS em 80%. O FHS consiste na padronização da estrutura de diretórios do sistema, afim de que as diferenças de diretórios entre uns sistemas operacionais open-source e outro sejam mínimas. A estrutura padrão de diretórios para sistemas Linux é: / - é o sistemas raiz, o nível mais alto da hierarquia de diretórios. /bin – diretório onde são armazenados programas binários de interesse de todos os usuários. /boot – diretório onde estão localizados arquivos de interesse do boot do sistema, como a imagem do kernel e os arquivos de configuração do boot loader GRUB/GRUB2. /dev – diretório onde estão os arquivos especiais que, para o Linux, podem ser discos, partições, memória RAM, mouse, teclado, terminais do sistema, etc. /etc – é o diretório onde são armazenados arquivos de configuração e scripts de serviços em geral, como DHCP, FTP, LDAP e Proxy, por exemplo. É extremamente importante ter um backup completo deste diretório. /home – diretório onde, por padrão, os usuários têm seus diretórios pessoais. /lib – diretório onde se encontram bibliotecas de sistema e módulos já instalados do kernel. /media – diretório onde geralmente são montadas as mídias removíveis. /media/cdrom – diretório pronto para montagem de CD/DVD. /media/floppy - diretório pronto para montagem de Floppy Disk. /mnt – diretório pronto para servir como ponto de montagem para discos adicionais. /opt – alguns programas não oficiais da distribuição utilizam este diretório para armazenar arquivos de instalação. /proc – é um sistema de arquivos virtual, do kernel Linux, que possui arquivos e diretórios de status de recursos de sistema. /root – é o diretório pessoal do usuário root (opcional). /sbin – diretório onde são armazenados programas de interesse apenas do superusuário (comandos administrativos). MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 26 /srv – diretório de dados de serviços providos pelo sistema. /usr – diretório de hierarquia secundária. /usr/src – diretório da localização esperada do código-fonte do kernel antes da compilação. /usr/local – diretório de instalação de programas que não são oficiais da distribuição. /usr/share/man – diretório de manuais do sistema. /usr/share/doc – diretório de documentação de sistema. /var – diretório de dados variáveis. /var/log – diretório de logs de eventos diversos. /var/mail – diretório padrão de recebimento de e-mails de todos os usuários. /var/cache – diretório utilizado como cache de programas como o apt, por exemplo. /tmp – diretório de arquivos temporários. É extremamente recomendável que este esteja em outra partição, pois ele é o único diretório da hierarquia padrão que tem permissão de gravação para todos os usuários do sistema. MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 27 4 - GERENCIAMENTO DE PACOTES Programas no Linux são instaláveis através de pacotes, que geralmente contém os binários, as bibliotecas e arquivos de documentação que serão copiados para o sistema com a instalação. 4.1 – Pacotes .deb (DEBIAN) As distribuições que são baseadas em Debian e ainda o próprio Debian aceitam pacotes de extensão .deb como arquivos de pacotes instaláveis, além de pacotes .tar.gz ou .tar.bz2. # dpkg Instala e manipula arquivos .deb. Ele também faz operações de consultas em pacotes já instalados. Sintaxe: # dpkg <opções> <pacote> Opções: -i : instala pacote através de arquivo .deb. -x : extrai conteúdo de um pacote. -r : remove os arquivos binários de um pacote instalado. -P : “purge” - remove os binários e todos os arquivos relativos ao pacote.-l : consulta pacotes instalados. -c : exibe o conteúdo de um arquivo de pacote .deb. -L : pesquisa arquivos que pertencem a um pacote já instalado. -S : exibe quais arquivos foram copiados para o sistema após a instalação do pacote. -s : exibe o status do pacote já instalado e informações reduzidas sobre o mesmo. -p : exibe informações detalhadas sobre pacote já instalado. Exemplos: Instala o pacote 'ldap-utils' através de um arquivo de pacote .deb. # dpkg -i ldap-utils_2.4.21-0ubuntu5.2_i386.deb Expurga o pacote slapd: # dpkg -P slapd Remove o pacote samba sem remover seus arquivos: # dpkg -r samba Mostra o conteúdo do arquivo de pacote ldap-utils_2.4.21-0ubuntu5.2_i386.deb: # dpkg -c ldap-utils_2.4.21-0ubuntu5.2_i386.deb Mostra detalhes sobre o pacote samba, que já está instalado: # dpkg -p samba MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 28 A instalação de um programa no Debian pode ser feita através de um pacote de extensão .deb ou dos chamados repositórios, que armazenam os pacotes e suas dependências. Um repositório pode ser uma mídia de CD/DVD, um servidor HTTP ou um FTP. Cada distribuição costuma ter alguns repositórios oficiais espalhados pelo mundo, e este é o caso do Debian. Repositórios O arquivo de configuração de repositórios para pacotes .deb é /etc/apt/sources.list, contém a lista de servidores ou mídias onde podem ser encontrados os pacotes para a distribuição. Geralmente, opta-se por trabalhar com repositórios em rede (LAN ou WAN), pois a dinâmica de atualização dos pacotes funciona muito mais. O uso de repositórios poupa o administrador do trabalho de procurar arquivos .deb por sites de download da internet ou por mídias externas. Repositórios de internet são mais comuns de serem utilizados e o repositório br.debian.org é o repositório oficial do Debian no Brasil. Algumas universidades pelo Brasil (como Unicamp e PUC, por exemplo) também disponibilizam seus “mirrors” para download de pacotes .deb. Exemplo de arquivo de repositório do Debian: MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 29 Cada linha dessas é a configuração de apontamento para um repositório diferente, sendo, por exemplo, a primeira de pacotes principais da distribuição 'stable'. Ao invés de 'stable', o tipo da distribuição poderia muito bem se chamar 'squeeze'. Isso porque Squeeze é a versão estável do Debian. Versões de Distribuições Debian: oldstable : versão anterior estável; stable : versão atual estável; testing : próxima versão já em fase de testes; unstable : os repositórios instáveis não são recomendáveis pois ainda estão em fase de discussão e desenvolvimento. Repositórios Debian: main : pacotes open-source; contrib : pacotes open-source que dependem da contribuição de terceiros; non-free: pacotes não-livres; multimedia : pacotes de aplicações multimídia; backports : pacotes ainda fora do repositório estável provavelmente por serem muito atuais. É interessante que a instalação de um programa seja feita através de repositório, porque neste caso é instalado o pacote e todas as suas dependências ao mesmo tempo. APT (Advanced Packaging Tool) Gerenciador de arquivos e dependências de pacotes através de repositórios do Debian, este gerenciador consulta os dados de /etc/apt/sources.list. Comandos APT: # apt-get update MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 30 Atualiza a base de dados de pacotes contida no diretório /var/lib/dpkg com os dados do repositório. Este comando não tem a função de atualizar nenhum pacote já instalado. Sintaxe: # apt-get update # apt-get install Instala um pacote e suas dependências a partir de repositórios que estão listados dentro de /etc/apt/sources.list. Sintaxe: # apt-get install <opções> <pacote(s)> Opções: -s : simula a instalação do pacote. -d : apenas faz o download dos pacotes dentro do diretório /var/cache/apt/archives/. -y : assume como “Yes” todas as respostas de instalação. -f : corrige uma instalação inacabada. Utilizada com “install ou remove”. --reinstall : reinstala um pacote. # apt-get remove Remove pacote instalado. Sintaxe: # apt-get remove <pacote> Para remover um pacote e seus arquivos de configurações: # apt-get remove <pacote> --purge Exemplo: Expurgando o pacote bind9: MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 31 # apt-get remove --purge bind9 -y # apt-get upgrade Atualiza a versão de todos os pacotes que estão instalados. Sintaxe: # apt-get upgrade # apt-get dist-upgrade Atualiza toda a distribuição mediante mudança de versão em /etc/apt/sources.list. Sintaxe: # apt-get dist-upgrade # apt-cache pkgnames Exibe a lista de nomes de pacotes disponíveis nos repositórios para instalação. Sintaxe: # apt-cache pkgnames # apt-cache search Busca descrição sobre programas disponíveis no repositório por assunto. Sintaxe: # apt-cache search <Nome> Exemplo: Procurar com algum pacote que tenha a ver com DNS no repositório: MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 32 # apt-cache search dns No caso acima, ele buscou na lista de repositórios do Ubuntu todos os pacotes que tenham a ver com DNS. # apt-cdrom add Adiciona uma mídia de CD como um repositório em /etc/apt/sources.list. Sintaxe: # apt-cdrom add # aptitude É uma interface mais amigável para o apt. É possível visualizar a lista de pacotes disponíveis para instalação de uma forma muito organizada. Sintaxe: # aptitude <opção> As opções do aptitude são as mesmas do apt-get. Exemplos: Instala o pacote samba através de um repositório: MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 33 # aptitude install samba Atualiza a base de dados do apt: # aptitude update Remove o pacote samba: # aptitude remove samba 4.2 – Pacotes .rpm (RED HAT) Distribuições baseadas em Red Hat e o próprio Red Hat aceitam a instalação de pacotes .rpm e .tar.gz. A questão das dependências é a mesma: um pacote sozinho pode não ter todas as dependências necessárias para a sua instalação e, para resolvê-las, é muito importante instalar os pacotes por repositórios. # rpm Chamado de Red Hat Package Manager, o comando rpm instala e consulta arquivos .rpm. Sintaxe: # rpm <opções> <pacote> Opções do modo de instalação: -i : instala um pacote através de arquivo de pacote. -U : faz upgrade em um programa já instalado através de um arquivo. -v : modo verbose de instalação. -vv: modo verbose com mais detalhes. -h : modo hash. Exibe barra de rolagem ao instalar. -e : remove um programa instalado. --nodeps : ignora dependências não satisfeitas do pacote na instalação. Esta opção não é recomendável, pois há grandes chances de o programa não funcionar. Opções do modo de consulta: Para o modo de consulta, a opção q deve estar sempre presente antes de qualquer outra. -qa: consulta todos os programas instalados. -ql: consulta por arquivos pertencentes a programas instalados. -qf : descobre a qual pacote pertence um determinado arquivo. -qi : exibe informações detalhadas sobre um programa instalado. -qd ou –-configfiles : mostra todos os arquivos de configuração do programa instalado. -qd ou –-docfiles: mostra todos os arquivos de documentação do programa instalado. -qpl : exibe os arquivos e diretórios contidos em um arquivo de pacote. -qpd: exibe os arquivos de documentação contidos dentro de um arquivo de pacote. -qpc: exibe os arquivos de configuração de um arquivo de pacote. Exemplos: Remove o pacote samba.i386 instalado: # rpm –e samba.i386 Instala o pacote samba_3.0.2_i386.rpm em modo “hash” e verbose: MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 34 # rpm –ivh samba_3.0.2_i386.rpm Consultando detalhes sobre o pacote samba.i386 já instalado: # rpm –qi samba.i386 Consultando os arquivos de configuração do pacote samba.i386 já instalado: # rpm –qc samba.i386 Consulta arquivos de documentação do arquivo do pacote de instalação do Adobe Flash Player: # rpm –qpd samba_3.0.2_i386.rpm YUM (Yellow dog Updater Modifier) # yum update Atualiza a base de dados do yum, assim como todos os pacotes instalados até o momento. Sintaxe: MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 35 # yum update Download das atualizações dos pacotes pelo YUM # yum install Instala pacotes e suas dependências. Sintaxe: # yum install <opções> <pacotes> Opções: -y : assume como “yes” todas as respostas de instalação. # yum upgrade Atualiza pacotes instalados para a versão mais nova existente no repositório. Sintaxe: # yum upgrade <pacote1> <pacote2> ... # yum list Lista os nomes dos pacotes disponíveis no repositório para instalação. Sintaxe: # yum list MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 36 # yum Search Busca descrição sobre pacotes pelo assunto. Sintaxe: # yum search <pacote> # yum info Exibe detalhes sobre pacotes já instalados. Exibe a mesma saída do comando ‘rpm –qi <pacote>’. Sintaxe: # yum info <pacote> Exemplo: Exibindo informações detalhadas sobre o pacote samba.i386: # yum info samba.i386 MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 37 5 - INSTALAÇÃO DO SISTEMA OPERACIONAL A instalação de um sistema operacional Linux em um servidor, principalmente, deve seguir à risca os esquemas de Particionamento citados acima. Alguns diretórios, se mantidos juntos com a partição do sistema raiz ( / ) podem causar inconvenientes de estouro de reserva de inodes ou de blocos, parando por completo o servidor. Imagine só se um usuário qualquer resolver criar um número exagerado de arquivos vazios (que ocupam inodes) em /tmp e acabar com a reserva de inodes, não sobrando mais espaço no sistema raiz para a criação de um arquivo sequer?!?! Seria um verdadeiro desastre criar um servidor PDC de clientes Windows se o diretório /home, que carrega os perfis móveis de cada usuário, estivesse na mesma partição do sistema raiz. Bastaria, neste caso, que um usuário sem cotas configuradas fosse ocupando espaço com arquivos fúteis à vontade para que o espaço em disco no servidor se reduzisse à zero, de repente e causasse a paralisação dos serviços ativos. Outros pontos importantes a se analisar são: flexibilidade, redundância e desempenho de discos, para saber se utilizar arranjos LVM ou RAID em discos seria necessário. A escolha da versão do sistema operacional ideal para a necessidade também é muito importante, assim como a arquitetura do mesmo, para que ele possa tirar o máximo de proveito dos recursos de Hardware do sistema. Faz toda a diferença de desempenho para um servidor com 2 processadores Intel Xeon operar com o sistema operacional com arquitetura ia64 (arquitetura de processadores Intel 64-bits) ao invés de trabalhar com um sistema operacional de arquitetura de 32 bits (i386). Caso seja Slackware, Red Hat, Debian, Ubuntu, Suse ou CentOS vai depender da preferência do administrador ou da empresa. 5.1 – Particionando o disco Um bom esquema de Particionamento para um servidor de arquivos Samba de usuários em uma rede com um HD de 500GB seria: / - 10 GB /usr/local – 10GB /var – 10GB /tmp – 2GB /boot – 200MB swap – 2GB (se necessário) /home – 465,8GB (aproximadamente) – Utilizar LVM Para um servidor web com o Apache, o diretório /var é quem precisaria de mais espaço em disco: / - 10 GB /usr/local – 10GB /var – 475,8GB(aproximadamente) – Utilizar LVM /tmp – 2GB /boot – 200MB swap – 2GB (se necessário) Pensando que, geralmente, um servidor web também conta com servidor FTP e que as contas de usuário são mapeadas para o diretório /var/WWW (diretório de publicação de arquivos do servidor), não seria preciso isolar o /home. O uso de uma partição para uso como swap, ainda mais em servidores com quantidade grande de espaço em RAM, torna-se cada vez mais dispensável ao longo do tempo. Pode ter certeza que se o servidor MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 38 precisar usar swap é porque alguém não planejou corretamente o hardware para o tipo de servidor que iria ser utilizado. 5.2 – Configuração pós-instalação Passado todo o processo de planejamento e instalação do servidor, o processo de configuração é o próximo passo. É hora de configurar a rede, repositórios, configurar o login de usuários, decidir se vai ou não usar interface gráfica, etc.. A primeira providência, já que se trata de um servidor, é configurar a interface de rede. Para isso, é preciso que o administrador conheça primeiro os conceitos de IPV4/6 necessários, e isto é realmente um pré- requisito para que o administrador possa ter sucesso na administração dos servidores. O arquivo de configuração de rede no Debian é /etc/network/interfaces. É preciso editá-lo e reiniciar o serviço de rede após isso para que as alterações façam efeito. Editando o arquivo: # vim /etc/network/interfaces A interface lo se refere à interface de loopback e não deve ser desativada, pois alguns serviços dependem dela para funcionar, enquanto a interface eth0(zero) é a primeira interface de rede reconhecida pelo sistema (mais detalhes sobre configuração de redes será dados mais à frente). Reiniciando o serviço de rede: # invoke-rc.d networking restart Conferindo a conectividade: # ifconfig # ping 10.1.1.254 Conferindo rotas: # route -n Configurando DNS: MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 39 # vim /etc/resolv.conf nameserver <ip do servidor> Repositórios de pacotes: A configuração de repositórios, como foi visto no capítulo anterior, é feita no arquivo /etc/apt/sources.list. # vim /etc/apt/sources.list Neste caso, o sistema está fazendo uso de um repositório da rede interna. Para os casos de novas instalações, são utilizados repositórios de internet e, neste caso, é importante já na hora da instalação de Debian o administrador optar por utilizar um espelho de rede (mirror) da internet que seja oficial da distribuição, pois desta forma ele pode garantir que os pacotes que serão instalados estarão nas versões corretas de seu sistema. Havendo a necessidade, o administrador pode configurar depois um mirror na rede LAN. No caso das outras distribuições, em geral não vai ser preciso nenhuma escolha por espelho de rede na hora da instalação, pois isto já vai ser automático na instalação. Vejamos um exemplo de configuração onde se busca repositórios na internet (Ubuntu): MANUAL DE TREINAMENTO LINUXSYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 40 Visão do arquivo /etc/apt/sources.list Agora é importante atualizar a base de dados do APT: # apt-get update Pronto! Agora é só escolher quais tipos de serviços serão utilizados. MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 41 6 - O SHELL Conceitualmente, o Shell é o interpretador dos comandos que serão enviados ao sistema, afim de que sejam executadas as tarefas necessárias para o seu funcionamento. O Linux é capaz de trabalhar com uma variedade enorme de shells, estando todos os suportados em /etc/shells: De todos os Shells disponíveis para uso no Linux, os mais importantes, sem dúvida, são sh e bash (Bourne Again Shell). O sh (Bourne Shell) inclusive é o shell padrão do comando useradd. Ele é usado por muitas distribuições baseadas em Unix, como FreeBSD e OpenBSD, por exemplo. Já o bash é o shell padrão do Linux em todas as distribuições. 6.1 – Scripts do Shell Alguns scripts de bash são comumente encontrados em um S.O Linux: /etc/rc.local Este script é executado antes do logon do usuário após o boot do sistema pela imagem do kernel. /etc/profile É o primeiro script a ser executado após o logon dos usuários. Ele é global, ou seja: todos os usuários que fazem login sofrem os efeitos deste script. Geralmente nele estão duas variáveis de bash importantíssimas: PATH - define em quais diretórios o bash vai procurar os comandos digitados pelos usuários. PS1 – define qual vai ser o rótulo de prompt dos usuários. Exemplo: PS1='\u@\h:\w\$' ficaria para o usuário user1 no host 'MCURY' e no diretório home dele assim: MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 42 user1@MCURY:~$ O arquivo acima explica o porquê de quando o usuário comum digita um comando exclusivo de root retorna para ele o erro: “-<comando> : command not found” . Basta verificar que a variável PATH do root (o que tem UID=0) contém os diretórios onde estão os comandos de administração do sistema (os ../sbin) e o PATH do usuário comum não. Hierarquia de scripts de usuário: Há uma ordem de execução de scripts após o login de cada usuário. Na falta de algum destes scripts abaixo, o posterior é executado. A ordem oficial é está abaixo: ~/.bash_profile ~/.bash_login ~/.profile No Debian, o ~/.profile é o primeiro script de usuário a ser executado e aponta para outro script chamado ~/.bashrc, que acaba sendo o último script de usuário a ser executado. Em shell Bash, se ~/.bash_profile e ~/.bash_login existirem, o ~/.profile não é executado. Exemplo de arquivo /etc/profile MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 43 O ~/.bashrc tem uma característica muito especial em relação a outros scripts de login: ele pode ser executado em sessões que não requerem login. Por padrão, este script vem com alguns campos comentados, mas que são de grande importância para ajudar a tornar o shell um ambiente de trabalho mais amistoso. O script /etc/bash_completion facilita e muito a vida do usuário, pois completa automaticamente um comando se for digitada parte dele seguida da tecla TAB. este script deve ser ativado em algum script de login. Os aliases para os comandos rm, cp e mv evitam que muitos arquivos sejam sobrescritos sem que o usuário seja avisado antes que isso aconteça (cada alias recebe um comando com a opção interativa '-i'). Como no Linux a falta de um arquivo pode significar o colapso de um sistema inteiro, dependendo de qual arquivo seja esses aliases são providenciais. ~/.bash_logout Script executado no logoff do usuário. ~/.bash_history Arquivo que contém o histórico de comandos digitados pelo usuário. # history Exibe histórico de comandos digitados pelo usuário. Limpando o histórico: # history -c MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 44 # fc Comando que usa o editor de textos padrão do sistema para manipular o arquivo de histórico. Para que o editor padrão seja modificado, basta usar a linha de comando abaixo: # update-alternatives –config editor fc usando editor nano para editar histórico de comandos recentes Impedindo login de usuários comuns Por motivo de manutenção no sistema, por exemplo, é necessário que às vezes apenas o root tenha o direito de abrir uma sessão. Para que isso seja possível, é preciso que seja criado o arquivo /etc/nologin. A criação do arquivo, mesmo que vazio, já é o suficiente para que ninguém, além do root, possa abrir uma sessão, mas o arquivo pode conter um texto qualquer que será exibido para o usuário, geralmente indicando o motivo de não poder iniciar a sessão. MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 45 Os usuários comuns só vão poder abrir alguma sessão após este arquivo ser removido. Mensagens para o usuário: Alguns arquivos contêm mensagens para os usuários no terminal em momentos diferentes: /etc/issue Mensagens na tela de pré-login (local). /etc/issue.net Mensagens na tela de pré-login (remoto). /etc/motd Mensagens após o login do usuário. MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 46 7 - DOCUMENTAÇÃO NO LINUX A difusão e aprendizado de sistemas operacionais open-source passa também pela documentação sempre bem organizada que estes sistemas têm. Um exemplo bem prático é que um Administrador de Redes que entende profundamente sobre protocolos, portas e serviços, mas que não é usuário de Linux teria uma dificuldade muito maior em criar regras no firewall Iptables se ele não pudesse consultar uma página de manual local para ajudá-lo. O responsável por manter essa documentação toda funcionando é o LDP (Linux Documentation Project), cujo site é www.tldp.org. Ele possui links para as seções abaixo: Wiki - detalhamento de alguns assuntos pesquisados; HOWTOs - guias passo a passo de tarefas; FAQs - respostas para dúvidas eventuais; Manpages – páginas de manuais de comandos. Os diretórios que contém documentação local são: /usr/share/doc – diretório de documentação local oficial do LDP, e fornece documentação adicional de programas instalados; /usr/share/man – diretório de páginas de manuais de comandos, arquivos e programas. 7.1 - Tipos de arquivos de documentação Dentro dos diretórios /usr/share/doc e /usr/share/man existem arquivos de documentação de diversos tipos: README : instruções de uso relevantes ao usuário; Copyright : informações de autoria e direitos sobre programa; Changelog : log de modificação do programa; Manpages : manuais lidos pelo comando man; FAQs : perguntas e respostas frequentes sobre o assunto. 7.2 – Seções de manuais Um arquivo de configuração, um programa e um comando de root podem, coincidentemente, ter o mesmo nome. Isso seria a causa de uma confusão muito grande caso os mantenedores do projeto não tivessem pensado em separar os manuais por seções. Elas são identificadas numericamente e possui cada uma, um diretório dentro de /usr/share/man, como../man8, que é o diretório de manuais de seção 8. Mas por que seção 8?!?! Basta olhar a tabela abaixo: http://www.tldp.org/ MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATORPÁGINA 47 Seção Descrição 1 Programas de uso comum de todos os usuários do sistema 2 Chamadas de sistema 3 Chamadas de bibliotecas 4 Arquivos especiais contidos em /dev 5 Arquivos de configuração 6 Games 7 Miscelânea 8 Comandos de administração, de interesse do administrador (root). 7.3 – Comandos de documentação # <comando> --help Exibe informações reduzidas sobre opções de comando, geralmente. Exemplo: Ajuda sobre opções do comando shutdown: # shutdown --help # apropos Busca, por tópico, a descrição de cada comando ou arquivo encontrado. # whatis Busca, por nome exato, a descrição de cada comando ou arquivo encontrado. # man Exibe informações sobre manuais contidos em /usr/share/man. Sintaxe: # man <opções> <assunto> Opções: -w : busca o caminho do arquivo de manual ao invés de exibir algum tipo de ajuda sobre o tema. -k : busca resumo sobre um tópico específico. -f : busca resumo sobre um comando ou arquivo exato. -P : modifica o programa de paginação do man. MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 48 Obs.: # man -k corresponde a # apropos. # man -f corresponde a # whatis. Exemplos: Buscar manual do comando iptables: # man iptables Buscar definição sobre comandos relacionados ao assunto iptables: # man -k iptables Ou # apropos iptables Buscar definição sobre comando iptables em específico: # man -f iptables Ou # whatis iptables Buscar por manual de um comando na seção 5, para o caso de haver algum outro objeto de busca chamado interfaces: # man 5 interfaces MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 49 # info Programa de leitura de manuais preferido pelo projeto GNU. Sua exibição dos manuais é mais organizada. # mandb Atualiza a base de dados de manuais do sistema. Se alguma modificação for feita em /etc/manpath.config, este comando precisa ser executado. MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 50 8 - COMANDOS DE CONTEÚDO # less Pagina o conteúdo de arquivos ou saídas de texto. Ele é muito versátil, pois permite o deslocamento para cima, para baixo, para a direita e para a esquerda quando estiver paginando um documento. Existe também o recurso de procurar por um texto com / no meio da paginação. Sintaxe: # less <arquivo> Exemplo: # less /etc/shadow Paginando arquivo /etc/shadow: # more Também pagina um documento de texto ou saída em modo texto, só que de forma básica, permitindo apenas a paginação para baixo e pressionando a tecla ENTER. Sintaxe: # more <arquivo> # zless MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 51 Usa o less para paginação de conteúdo em modo texto de arquivos compactados com o agente de compactação GZIP. Sintaxe: # zless <arquivo>.gz # zmore Usa o more para paginação de conteúdo em modo texto de arquivos compactados com o agente compactador GZIP. Sintaxe: # zmore <arquivo> # head Visualiza as primeiras linhas de um arquivo. Padrão: 10 primeiras linhas. Sintaxe: # head <opção> <arquivo> Opções: -c : mostra os primeiros bytes de um arquivo. -n : especifica o número de linhas. Exemplos: Mostrar os primeiros 128 bytes do arquivo /etc/passwd: # head -c 128 /etc/passwd Mostrar as 5 primeiras linhas de /etc/passwd: # head -n 5 /etc/passwd Ou # head -5 /etc/passwd # tail Lê as últimas linhas de um arquivo, Padrão: 10 últimas linhas. Sintaxe: # tail <opções> <arquivo> Opções: MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 52 -n : especifica o número de linhas. -f : monitora as últimas linhas de um arquivo enquanto o mesmo é escrito. Muito útil para leitura de arquivos de log. Exemplos: Exibir as últimas 5 linhas do arquivo /var/log/messages. # tail -n 5 /var/log/messages Ou # tail -5 /var/log/messages Monitorar as mudanças que estão sendo feitas no arquivo /var/log/auth.log. # tail -f /var/log/auth.log # pr Prepara um arquivo para ser impresso, mas não o imprime. Sintaxe: # pr <arquivo> # nl Exibe conteúdo de um arquivo com as linhas numeradas. Sintaxe: # nl <arquivo> # wc Conta linhas, caracteres e palavras de um arquivo. MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 53 Sintaxe: # wc <opções> <arquivo> Opções: -l : número de linhas do arquivo. -w : palavras contidas no arquivo. -c : quantidade de caracteres. Exemplo: Contando linhas, palavras e caracteres de /etc/passwd: # wc /etc/passwd # od Exibe arquivo em formatos diferentes. Sintaxe: # od <opções> <arquivo> Opções: -o : modelo octal. -d : decimal. -x : hexadecimal. # grep Busca textos dentro de documentos. Sintaxe: # grep <opções> <texto> <arquivos> Opções: -i : modo insensitivo. Não diferencia maiúsculas de minúsculas quando faz a busca. MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 54 -v : exceção. Apenas não filtra o texto selecionado. -w : busca por palavra específica. -E : habilita o comando a trabalhar com as expressões regulares avançadas (REGEXP). -n : exibe o número das linhas onde estavam os registros encontrados. -H : mostra o nome do arquivo ao lado de cada registro achado. Exemplos: Buscar dentro do arquivo /etc/passwd a linha contendo 0: # grep 0 /etc/passwd Buscar dentro do arquivo /etc/passwd linhas que contenham apenas 0 como valor absoluto: # grep -w 0 /etc/passwd Buscar apenas as linhas do arquivo /etc/passwd que não tenham /bin/bash e nem 0 como valor absoluto (ou seja: usuários que não usam o Shell bash e que não sejam ‘root’): # grep -vw ‘/bin/bash*.0’ /etc/passwd Onde *. significam E TAMBÉM. Buscar dentro dos arquivos /etc/passwd, /etc/shadow e /etc/group e /etc/gshadow registros do usuário ‘root’ mostrando o nome do arquivo no início das linhas do resultado: # grep -H root /etc/passwd /etc/shadow /etc/group /etc/gshadow MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 55 # cut Exibe apenas os campos desejados de um arquivo. Sintaxe: # cut <opções> <arquivo> Opções: -c : exibe todos os caracteres na coluna informada. -d caractere: os campos são separados pelo delimitador informado. -f : “campos”. Campos do arquivo, levando em conta o delimitador. Exemplos: Exibir a coluna 1 do arquivo /etc/shadow: # cut -c 1 /etc/shadow Exibir as colunas 1,2 e 4 do arquivo /etc/passwd: # cut -c 1,2,4 /etc/passwd Exibir da coluna 1 até a 5 do arquivo /etc/group: # cut -c 1-5 /etc/group Entendendo o ‘ : ‘ como delimitador, exibir os campos 1,3 e 6 do arquivo /etc/passwd: # cut -d : -f 1,3,6 /etc/passwd Com o mesmo delimitador, agora exibindo do campo 1 até o 5 do arquivo /etc/shadow: # cut -d : -f 1-5 /etc/shadow MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 56 # shred Destrói o conteúdo de um arquivo. #Sintaxe: # shred <arquivo> # split Comando utilizado dividir um arquivo em pedaços. Opções: -b : quebra porquantidade de bytes. -l : quebra por quantidade de linhas. Sintaxe: # split <opção> <arquivo> <primeiro nome do arquivo de destino> Exemplos: Criando arquivos com 128 bytes de /etc/passwd cada um. Neste caso, serão criados os arquivos arqaa, arqab, arqac, etc: # split -b 128 /etc/passwd arq MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 57 Criando arquivos com 4 linhas do arquivo /etc/profile cada um, esclarecendo que o último arquivo pode ficar com menos linhas se for o caso de a quantidade de linhas do arquivo não for múltipla de 4, neste caso: # split -l 4 /etc/passwd arq # uniq Exibe as linhas únicas de um arquivo. Sintaxe: # uniq <arquivo> # cat Lê o conteúdo de um arquivo ou reconstrói o mesmo, se for o caso de ele estar em pedaços criados pelo comando split. Sintaxe: # cat <opção> <arquivo> Opções: -A : Exibe todos os caracteres não imprimíveis. -b : lê o arquivo com as linhas não vazias numeradas. -n : lê o arquivo com todas as linhas numeradas. Exemplos: Ler o conteúdo do arquivo /etc/motd: # cat /etc/motd Ler o conteúdo do arquivo /etc/profile com as linhas não-vazias numeradas: # cat -b /etc/profile MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 58 Ler o conteúdo do arquivo /etc/profile com todas as linhas numeradas: # cat -n /etc/profile Reconstruir as cópias fragmentadas do arquivo /etc/passwd com nomes de arqaa, arqab e arqac: # cat arqaa arqab arqac > passwd # tac Tem a mesma sintaxe do cat mas lê o arquivo da última linha para a primeira. # sort Ordena o conteúdo do arquivo. Sintaxe: # sort <opções> <arquivo> Opções: -d : ordem alfanumérica. -n : ordem numérica. -t : usa um delimitador. -k : usa um campo como referência. MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 59 -r : ordem reversa. -R : ordem randômica (aleatória). Exemplos: Classificar o conteúdo do arquivo /etc/passwd em ordem alfabética: # sort -d /etc/passwd Classificar o conteúdo do arquivo /etc/shadow em ordem alfabética inversa: # sort -dr /etc/passwd Usando ‘ : ’ como separador, classificar o arquivo /etc/passwd em ordem numérica, tendo como referência o campo 3 do arquivo: # sort -n -t : -k 3 /etc/passwd # sed Substitui texto e números de um arquivo. Sintaxe: # sed s/<texto_original>/<texto_substituto>/g <arquivo> Exemplo: Substituindo o termo ‘root’ do arquivo /etc/passwd pelo termo ‘administrador’: # sed s/root/administrador/g /etc/passwd MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 60 # <comando> | tr Comando que só pode ser utilizado em combinação com outro de leitura de arquivo através do “pipe”, o tr substitui caracteres em sequência. Sintaxe: # <comando> | tr <opção> <caracteres> Algumas variáveis são utilizadas pelo comando: \\ - backslash. \b - backspace. \\t - tabulação horizontal. \n - nova linha (pula uma linha). \v - tabulação vertical. Exemplos: Remover ‘ : ’ do arquivo /etc/passwd: # cat /etc/passwd | tr -d : Trocar ‘ : ‘ e ‘ , ‘ por tabulação no arquivo /etc/passwd: # cat /etc/passwd | tr : \\t MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 61 Trocar letras maiúsculas do arquivo /etc/shadow por minúsculas e depois trocando ‘ : ‘ por tabulação : # cat /etc/shadow | tr [a-z] [A-Z] | tr : \\t # fmt Formata um texto. Sintaxe: # fmt <opção> <arquivo> Opções: -w : limita a largura de cada linha. -u : uniformiza os espaços dentro do arquivo. file://t MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 62 # join Une linhas de 2 arquivos utilizando colunas em comum. Sintaxe: # join <arquivo1> <arquivo2> # expand Troca tabulação por espaço simples Sintaxe: # expand <opção> <arquivo> Exemplo: Convertendo linhas que tenham 2 tabulações para espaço simples do arquivo /etc/syslog.conf: # expand -t 2 /etc/syslog.conf # diff Mostra as linhas diferentes de dois arquivos. Sintaxe: # diff <arquivo1> <arquivo2> Exemplo: Exibindo as linhas diferentes do arquivo arq1.txt e arq2.txt: # diff arq1.txt arq2.txt Os arquivos originais são: MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 63 MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 64 9 - EXPRESSÕES REGULARES Sempre que houver a necessidade de procurar padrões de textos em documentos utilizaremos as expressões regulares, ou regex, portanto regex nada mais é do que um método formal para buscar padrões de textos. 9.1 – Metacaracteres Composição de símbolos, caracteres com funções especiais que, agrupados entre si e com caracteres literais, formam uma sequência, uma expressão. Meta Significado * Zero, um ou mais ? Zero ou um ^ Início da linha $ Fim da linha [ ... ] [^... ] Lista de caracteres permitidos, e lista de caracteres proibidos. {n ,m } Vai de n até m \ Escapamento de caracteres especiais (espaço, parênteses, chaves, etc..) | Ou ( ... ) Delimita um grupo . Qualquer caracter na posição Exemplos: Exibindo de /etc/passwd apenas os usuários que usem Shells BASH ou que tenham login negado: # grep -E ‘(bash|false)’ /etc/passwd Exibindo de /etc/shadow apenas os usuário que comecem com a,d,r,s : # grep -E ^[adrs] /etc/shadow Exibindo de /etc/passwd apenas os usuários que usem BASH ou SH e comecem com letras que não sejam b a f e também os que não comecem com h: # grep -E ‘(bash|sh)’.*^[^b-fh] /etc/passwd Detalhe: ^ utilizado dentro de [ ] significa exceção! Exibindo do /etc/passwd apenas os usuário que usem Shells BASH ou SH e também comecem com letras no intervalo de f a l : # grep -E ^[f-l].*’(bash|sh)’ /etc/passwd MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 65 O grep é utilizado com E por que algumas expressões regulares fazem parte do grupo de REGEXP (expressões regulares avançadas), como é o caso do { }. O comando grep -E é o mesmo que egrep. Para exibir as linhas que tenham exatamente 5 caracteres de um arquivo chamado Linux.txt, as seguintes expressões poderiam ser utilizadas: # grep ^....$ Linux.txt Ou # egrep ‘^.{5}$’ Linux.txt Onde o {5} iria ser o responsável por dizer que . repete 5 vezes e o motivo de o “ponto” estar entre ^e $ é dizer para a expressão regular que “entre início e fim existem 5 posições”. Exibindo as linhas que tenham pelo menos 70 caracteres: # egrep ‘^.{70,}$’ /etc/passwd MANUAL DE TREINAMENTO LINUX SYSTEM ADMINISTRATOR MANUAL DE TREINAMENTO M.CURY LINUX SYSTEM ADMINISTRATOR PÁGINA 66 9.2 - “Pipes”, redirecionamentos e execução de comandos em sequência Como já se pode notar pelos capítulos anteriores, o | tem uma função importantíssima dentro de uma expressão regular, pois ele concatena a saída de um comando com a de outro posterior, como a seguir: O comando cut -d : -f 1-5 /etc/passwd
Compartilhar