Baixe o app para aproveitar ainda mais
Prévia do material em texto
“Compreender o funcionamento do GNU/Linux, passou de uma opção para uma necessidade para todos aqueles que trabalham com TI”. Página: 1 SYSADMIN LINUX – volume I Sobre o autor Prof. Juliano Ramos de Oliveira é engenheiro da computação e possui diversas certificações de Linux entre elas: Comptia Linux+, Red Hat RHCSA, SUSE CLA, LPIC-2 e em segurança CEH – Hacker ético. Juliano, também é conhecido na rede como grubelilo. Sua primeira certificação linux foi da extinta Conectiva Linux em 2002, desde esta época o Prof. Juliano Ramos vem atuando como consultor e coordenador de projetos que envolvam o software open source. Na prefeitura de São Paulo, atuou cinco anos, coordenando unidades do programa telecentros, maior programa de inclusão digital da América Latina, implementado 100% em GNU/Linux. Grubelilo, já atuou como consultor e instrutor nas principais escolas de cursos preparatórios de Linux em São Paulo como 4 Bios Academy e Linux Force Brasil. Atualmente, o professor possui um canal no youtube com vídeos diários sobre linux e três programas ao-vivo semanalmente. Contato do autor: profjulianoramos@gmail.com http://www.youtube.com.br/profjulianoramos http://facebook.com/julianotux “E conhecereis a verdade e a verdade vos libertará.” - Jesus Cristo Página: 2 mailto:profjulianoramos@gmail.com http://facebook.com/julianotux http://www.youtube.com.br/profjulianoramos Licença de uso – Creative Commons Você tem o direito de: Compartilhar — copiar e redistribuir o material em qualquer suporte ou formato. Adaptar — remixar, transformar, e criar a partir do material para qualquer fim, exceto comercial. O licenciante não pode revogar estes direitos desde que você respeite os termos da licença “Escrito deliciosamente com o Libreoffice 5.4” Página: 3 Origem do Linux O nome Linux, surgiu da mistura de Linus + Unix. Linus é o nome do criador do linux, Linus Torvalds e Unix, é o nome de um sistema operacional de grande porte, no qual contaremos sua história agora, para que você entenda melhor a do Linux: A origem do Unix tem ligação com o sistema operacional Multics, projetado na década de 1960. Esse projeto era realizado pelo Massachusets Institute of Technology (conhecido como MIT), pela General Eletric (GE) e pelos laboratórios Bell (Bell Labs) e American Telephone Telegraph (AT&T). A intenção era de que o Multics tivesse características de tempo compartilhado (vários usuários compartilhando os recursos de um único computador), sendo assim, o sistema mais arrojado da época. Em 1969, já existia uma versão do Multics rodando num computador GE645. Ken Thompsom, era um pesquisador do Multics e trabalhava na Bell Labs. No entanto, a empresa se retirou do projeto tempos depois, mas ele continuou seus estudos no sistema; desde então, sua ideia não era continuar no Multics original e sim criar algo menor, mas que conservasse as ideias básicas do sistema. A partir daí, começou a saga do sistema Unix. Brian Kernighan, também pesquisador da Bell Labs, foi quem deu esse nome. Em 1973, outro pesquisador da Bell Labs, Dennis Ritchie, rescreveu todo o sistema Unix numa linguagem de alto nível, chamada C, desenvolvida por ele mesmo. Por causa disso, o sistema passou a ter grande aceitação por usuários externos à Bell Labs. Entre 1977 e 1981, a AT&T, alterou o Unix, fazendo algumas mudanças particulares e lançou o System III. Em 1983, após mais uma série de modificações, foi lançado o conhecido Unix System IV, que passou a ser vendido. Até hoje esse sistema é usado no mercado, tornando-se o padrão internacional do Unix. Esse sistema é comercializado por empresas como IBM, HP, Sun, etc. O Unix, é um sistema operacional muito caro e é usado em computadores poderosos por diversas multinacionais. Mas, qual a relação entre o Unix e o Linux, ou melhor, entre o Unix e Linus Torvalds? Para responder essa pergunta, é necessário falar de outro sistema operacional, o Minix. O Minix é uma versão do Unix,porém, gratuita e com o código fonte disponível. Isso significa que qualquer programador experiente pode fazer alterações nele. Ele foi criado originalmente para uso educacional, para quem quisesse estudar o Unix em casa. No entanto, vale citar que ele foi escrito do "zero" e apesar de ser uma versão do Unix, não contém nenhum código da AT&T e por isso pode ser distribuído gratuitamente. A partir daí, "entra em cena", Linus Torvalds. Ele era um estudante de Ciências da Computação da Universidade de Helsinki, na Finlândia. E em 1991, por hobby, Linus decide desenvolver um sistema mais poderoso que o Minix. No mesmo ano, ele disponibilizou a versão do kernel (núcleo dos sistemas operacionais) 0.02 e continuou trabalhando até que em 1994, quando disponibilizou a versão 1.0. Até o momento em que este artigo estava sendo escrito, a versão atual do kernel do linux é o 2.6.26. O Linux é um sistema operacional livre, e é uma re-implementação das especificações POSIX(padronização da IEEE, Instituto de Engenharia Elétrica e Eletrônica) para sistemas com extensões System V e BSD. Isso significa que o Linux, é bem parecido com Unix, mas não vem do mesmo lugar e foi escrito de outra forma. Página: 4 Sr. Linus Benedict Torvalds Linus Benedict Torvalds, é o criador do kernel do sistema operacional GNU/Linux muitas vezes chamado apenas de "linux". Linus nasceu em Helsinque capital da República da Finlândia no dia 28 de Dezembro de 1969; e no fim dos anos 80 já programava em linguagem C com maestria. Sua relação com o Linux começou quando Linus desejou rodar em seu computador pessoal o sistema operacional Minix; descontente com os recursos deste sistema, começou a desenvolver o seu próprio Kernel. No ano de 1991 Torvalds lançou o seu projeto em uma famosa mensagem para a Usenet, desde os primeiros dias ele recebeu ajuda de hackers do Minix, e hoje recebe contribuições de milhares de programadores no mundo todo. GNU, GPL e Software Livre O projeto GNU que significa (GNU's Not Unix) "Gnu não é UNIX", foi iniciado em 1984 por Richard Stallman, com o intuito de que seus utilizadores possam gozar de mais liberdade, e não serem reféns de empresas que os vendem. Da mesma forma, os programadores não devem ser limitados, mas sim ter livre acesso a reutilizar o código fonte. O objetivo principal de Richard Stallman era a construção de um sistema operacional chamado GNU completo e livre, similar ao UNIX.No início da década de 90, o GNU estava quase pronto. Já possuía um conjunto de bibliotecas denominado de GNU lib C, além de outras ferramentas como os comandos: grep,cut,ls,mkdir,rmdir,ln e algumas ferramentas de compilação como: make,gcc,autoconf. Mas para que o sistema operacional estivesse completo era necessário um kernel e este estava sendo criado com o nome de HURD, infelizmente a um processo muito lento. Neste tempo Linus Torvalds lançou o seu kernel e muitas pessoas começaram a juntar este kernel com os aplicativos GNU, formalizando uma parceria perfeita. Daí a designação mais correta dos sistemas denominados "Linux" é "GNU/Linux". Richard Matthew Stallman Nasceu em Nova Iorque no dia 16 de março de 1953; frequentemente abreviado para “RMS” ele é considerado um grande hacker, fundador do movimento free software e do projeto GNU. Desde a metade dos anos 90, Stallman tem dedicado a maior parte do seu tempo ao ativismo político, defendendo o software livre. Ele também é o criador da fundação do Software livre (FSF) que prateje de forma legal os softwares registrados sobre a lei GPL. Página: 5 Distribuições GNU/Linux Uma distribuição ou distro Linux é um sistema operacional Unix-Like que inclui o Kernel Linux e outros softwares de aplicação, formando um conjunto. Como grande parte destes softwares são aplicações que em primórdio foram criadas para o sistema operacional GNU é conveniente que recebam o nome de distribuiçãoGNU/Linux. Algumas distros são mantidas por organizações comerciais, como a Red Hat, Ubuntu, Suse e Mandriva, outras são mantidas pela comunidade como o Debian e o Gentoo. São mais de trezentas distribuições de Gnu/Linux embora cerca de vinte sejam conhecidas. Mas, por que existem tantas distribuições? Justamente porque se você não se identifica com nenhuma delas, você é livre para fazer a sua própria. Por exemplo, em 1993, um rapaz chamado Patrick Volkerding, juntou o kernel e vários outros aplicativos em uma distribuição chamada Slackware, que foi a primeira a ser distribuída em CD. A partir desse ponto, foram surgindo diversas outras distribuições que de alguma forma diferiam da filosofia do Slackware: como Debian ou RedHat. Atualmente existem centenas de distribuições, algumas mais famosas que outras. Em sua maioria, as distribuições GNU/Linux são mantidas por grandes comunidades de colaboradores, entretanto, há outras que são mantidas por empresas. Dessa forma, podemos dividir as “distros”, abreviação bastante utilizada na comunidade e que se refere às distribuições, em duas categorias básicas: Desktop, Para uso doméstico: Ubuntu, Mageia, Fedora, Debian Corporativas, Para uso em empresas: Red Hat, SUSE, Debian, CentOS, Oracle Linux Atualmente existem centenas de distribuições, algumas mais famosas que outras. Em sua maioria, as distribuições GNU/Linux são mantidas por grandes comunidades de colaboradores, entretanto, há outras que são mantidas por empresas. Página: 6 O Shell O Shell é um interpretador de comandos que analisa o texto digitado na linha de comandos e os executa produzindo algum resultado. Os principais shell são: bash, sh, csh, tcsh, ksh e zsh, sendo o bash, o shell padrão na maioria das distribuições de Linux. Prompt do Shell O símbolo $ (dólar) identifica o prompt de comandos do shell. Algumas variações deste símbolo são permitidas, como o nome de usuário, do computador, diretório corrente entre outras opções. Simbologia O prompt do shell pode variar, dependendo do usuário que está utilizando o sistema no momento. O sinal “$” significa que um usuário comum é que está usando a máquina. O sinal “#” significa que o super-usuário está logado no sistema. Root → Também conhecido como Super Usuário O super-usuário é o administrador do sistema Linux. Ele tem poderes para fazer absolutamente tudo no sistema. Ele é conhecido como usuário “root” ou “raíz” traduzindo do inglês. Variáveis de ambiente Durante a execução do bash algumas variáveis são carregadas, elas também, podem ser configuradas manualmente. Comandos para manipular variáveis de ambiente echo – Exibe o valor de uma variável de ambiente, exemplo: # echo $USER Como o SHELL não é uma linguagem de programação tipada, você não precisa, declarar o tipo da variável. Digite no seu prompt: # VALOR=10 # echo $VALOR Página: 7 Variável Global No exemplo anterior você definiu o valor da variável VALOR como 10. Porém, caso você abra outro bash (digite bash <enter>) no prompt, perceberá que a variável não mais existe. Ou seja, ela só estava disponível no shell anterior. Para que a variável funcione em outros Shells que você abrir, é necessário, que ele seja uma variável Global. Neste caso usamos o comando export, exemplo: # export VALOR Você também pode criar a sua variável já como global, usando: # export VALOR=10 Para remover o conteúdo de uma variável, execute o comando: # unset VALOR Algumas variáveis do ambiente BASH, que você pode verificar com o comando echo. MANPATH → Exibe os diretórios onde o comando man encontra suas páginas de manual. DISPLAY → Exibe o terminal do ambiente gráfico atualmente usado. HOME → Exibe o diretório padrão de armazenamento de arquivos do usuário TERM → Exibe o terminal atualmente utilizador USER → Exibe o nome do usuário LANG → Exibe o idioma do sistema HISTSIZE → Define o valor máximo de comandos do History Estas são apenas algumas das variáveis disponíveis no sistema. Pode ser que nem todas estejam disponíveis na sua distribuição de GNU/Linux. Página: 8 Alterando o Shell padrão do usuário Primeiro, verifique o shell atualmente utilizado: # echo $SHELL Utilize o comando chsh para alter o shell padrão: # chsh -s /bin/sh usuario Adicionando caminhos para seus binários Todos os caminhos de diretórios que possuem programas executáveis (binários) ficam armazenados na variável PATH. Caso você tenha um diretório com scripts por exemplo, você pode adicioná-lo a variável PATH para que eles fiquem acessíveis de modo global, sem que seja necessário digitar o caminho completo de onde eles se localizam. # PATH=$PATH:/caminho-do-seu-diretório Este exemplo somente é válido para o login atual, e não é permanente, para que as configurações fiquem permanentes, edite e acrescente os comandos acima no arquivo de configuração local do usuário /home/usuario/.bash_profile, ou globalmente para todos os usuários no arquivo /etc/profile. Simplesmente, adicione a linha acima no final de um dos arquivos citados. O histórico de comandos do shell O shell mantêm um histórico dos últimos comandos digitados pelo usuário, podendo ser visualizado pelo caractere (!) ponto de exclamação, de 4 formas diferentes: Comando Definição !! Último comando Digitado !n Onde “n” é o número do comando no histórico. !string Comandos que iniciam com o “string” especificado. !-n Onde “n” é o número do comando do histórico na ordem decrescente. Página: 9 O comando history O comando history exibe o histórico de comandos. Suas opções mais comuns são: Opções Explicação -r Usa como histórico o arquivo / home / usuario / .bash_history ao invés de usar o histórico de comandos. -w Reescreve o arquivo: / home / usuario / .bash_history -c Limpa o histórico de comandos Apelidos de comandos Usamos o comando alias para criar apelido ou atalho para um determinado comando. O seu arquivo de configuração fica localizado no arquivo / home / usuario / .bashrc Exemplo: # alias cor=”ls –color” # cor Ao digitar no shell cor você estará executando o comando ls –color. Para remover um apelido de comando, use o comando unalias exemplo: # unalias cor Páginas de manual O comando man permite a você visualizar a página de manual do comando. A sintaxe básica do comando é: # man nome_do_comando Exemplo: # man ls Página: 10 Gerenciamento de arquivos no Unix/Linux O Filesystem Hierarchy Standard (Padrão para sistemas de arquivos hierárquivos), ou FHS, define os principais diretórios, e o seu conteúdo, em um sistema operacional Linux ou do tipo unix. A versão atual é a 2.3, anunciada em 29 de janeiro de 2004. O FHS é mantido pelo Free Standards Group, uma organização sem fins lucrativos formada por importantes empresas de hardware e software, como HP, Red Hat, IBM e Dell. Ainda hoje, a grande maioria das distribuições de GNU/Linux, incluindo membros da Free Standards Group, não adotam fielmente o padrão proposto. Em particular, diretórios (paths) criados pela FHS, como o /srv/, não foram adotados em grande escala. Alguns sistemas Unix e Linux rompem com o padrão FHS, como o GoboLinux. O Mac OS x utiliza uma estrutura com nomes legíveis para humanos em conjunto com um sistema baseado em FHS. Diretório Descrição /bin Comandos binários essenciais /boot Arquivos do gerenciador de boot /dev Dispositivos, exemplo: DVD, Discos e etc… /etc Arquivos de configuração da máquina local /home Diretório do usuário /lib Diretório com as bibliotecas essenciais para arquivos binários contidos nos diretórios / bin e / sbin. /mnt Sistema de arquivos “montados” temporariamente /media Ponto para mídias removíveis, como pendrives e CD-ROM /opt Armazenar arquivos de aplicativos. Normalmente eles criam sub-diretórios, exemplo: / proc / java ou /proc / libreoffice /proc Sistema de arquivo virtual, que possui o estado do kernel e processos do sistema, a maioria dos arquivos estão em modo texto. /root Diretório homepara o super usuário (administrador) /sbin Arquivos binários para propósito da administração do sistema /tmp Arquivos temporários /srv Dados especificos que são usados pelo sistema /usr Hierárquia secundária para dados compartilhados de usuários, cujo acesso é restrito apenas para leitura. /usr /bin Contém a maioria dos arquivos binários não – essenciais do seu sistema /var Variáveis, como logs, base de dados, páginas WEB e arquivos de e-mails /var / spool Spool para tarefas em espera de execução (Ex: filas de impressão e e-mails) / var / mail Caixas de e-mail dos usuários do sistema / var / tmp Arquivos temporários Página: 11 Diretório Descrição /var/run Contém informação sobre a execução do sistema desde a última inicialização / var/lock Arquivos de trava. Utilizados para manter o controle sobre recursos em uso. /var / log Arquivos para log. Utilizado para log de dados em geral Gerenciamento de arquivos O comando cp copia arquivos e diretórios. Ele pode ser utilizado para copiar apenas um arquivo ou múltiplos arquivos. As opções mais frequentes do comando cp são: Opção Descrição -d Preserva os links ao copiar os arquivos -p Preserva todas as informações dos atributos do arquivo, como dono do arquivo, grupo, permissão e data. -R Copia os arquivos recursivamente, ou seja, copia diretórios com conteúdo. -a Faz o mesmo que as opções “-dpR” combinadas. -f Força a cópia sobrescrevendo se necessário -i Pergunta ao usuário antes de copiar cada arquivo por cima de um local de destino -v Mostra o nome de cada arquivo copiado Exemplo do comando: # cp arquivo1 arquivo # cp -R /etc /home/juliano/etc.backup No primeiro exemplo é realizada uma cópia simples de arquivo. No segundo exemplo realizamos uma cópia de diretório. Comando mv O mv move ou renomeia arquivos e diretórios. Ele não altera os atributos dos arquivos ou diretórios movidos se a transferência for o mesmo sistema de arquivos. Se o destino para onde os arquivos ou diretórios forem movidos não existir, o comando renomeia a origem, senão os dados serão gravados por cima. No exemplo abaixo, renomeia-se o arquivo1 para arquivo2: # mv arquivo1 arquivo2 Página: 12 No exemplo abaixo, move-se o arquivo1 para o diretório /tmp. # mv arquivo1 /tmp O comando rm O comando rm é utilizado para remover arquivos. Você só pode remover arquivos que você tenha permissão de gravação. O super usuário (root) pode remover arquivos e diretórios dos outros usuários do sistema. Opções Descrição -f Força a remoção dos arquivos sem perguntar ao usuário -R Remove um diretório e todo seu conteúdo Exemplos: # rm texto.txt Remove o arquivo “texto.txt”. Para remover um diretório com conteúdo: # rm -R diretório Você também pode forçar a remoção com o comando: # rm -Rf diretório Comando mkdir O comando mkdir é utilizado para criar um diretório. Você precisa ter permissão de escrita no diretório para executar o mkdir. As opções mais frequentes são: Opção Descrição -p Cria o diretório especificado, mesmo que o diretório “pai” não exista. Neste caso, cria-se também o diretório pai. -m Configura a permissão do diretório criado. As permissões possíveis são (RWXRWXRWX) leitura, escrita e execução para classes de dono, grupo e outros. Página: 13 Exemplo: # mkdir -p correios/sedex Exemplo 2, especificando-se a permissão: # mkdir -m 777 documentos/modelos Comando rmdir O comando rmdir, remove um ou mais diretórios do sistema. O diretório precisa estar vazio. Exemplo: # rmdir /home/documentos Remove o diretório documentos dentro do diretório home. Comando touch O comando touch muda a data e hora de acesso e/ou modificações dos arquivos. As opções mais utilizadas são: Opções Descrição -a Muda somente a data e hora de modificação para atual -m Muda somente a data e hora de modificação para a atual -t Muda a data e hora para uma data e hora definida, exemplo: A representação de 13 de janeiro de 2015 às 19:00 é: 201501131900 Exemplo: # touch arquivo “É necessário acreditar que o sonho é possível, que o céu é o limite e você é imbatível.” - Racionais MC’s Página: 14 Comando join O comando join une as linhas de dois arquivos que possuam índice comum, exemplo: Crie o arquivo fruta.txt e coloque o seguinte conteúdo: 1 maça 2 uva 3 melancia Agora, crie o arquivo preco.txt e coloque o seguinte conteúdo: 1 R$ 2,00 Reais 2 R$ 4,00 Reais 3 R$ 5,00 Reais Execute agora o comando join para concatenar os dois arquivos: # join fruta.txt preco.txt O resultado será: 1 maça R$ 2,00 Reais 2 uva R$ 4,00 Reais 3 melancia R$ 5,00 Reais Comando od Este comando é um dos mais antigos do UNIX, e está disponível em qualquer versão desse sistema operacional, inclusive no linux. O que ele faz, basicamente, é ler os bytes de um arquivo de entrada e imprimi-los em uma série de formatos, como octal, hexadecimal e decimal. As opções mais comuns, são: Opções Descrição -o Mostra em octal -d Mostra em decimal -x Mostra em hexadecimal Página: 15 Comando paste Utilizamos o comando “paste” para concatenar as linhas de diversos arquivos em colunas verticais. As opções frequentemente utilizadas são: Opções Descrição -d ‘@’ Separa as colunas com o símbolo @ -s Concatena todo o conteúdo de um arquivo com uma linha para cada arquivo Exemplo: # paste -d’@’ arquivo arquivo2 Exemplo: # paste -d'@' arquivo1 arquivo2 Crie o arquivo1 com o seguinte conteúdo: profjulianoramos mateus lucas Crie o arquivo2 com o seguinte conteúdo: gmail.com.br hotmail.com certificacoes.net.br Execute o comando do exemplo. “Sábio é aquele que conhece os limites da própria ignorância.” - Sócrates Página: 16 Comando pr Prepara um arquivo de texto para impressão. As opções frequentemente utilizadas são: Opções Descrição -d Especifica o espaçamento duplo -l numero Especifica o número de caracteres de largura de página. O padrão é 66 caracteres. -o numero Especifica o número de espaços de margem esquerda. Exemplo: # pr -l 70 -o 3 fruta.txt O comando split O comando split é utilizado para dividir arquivos de texto em arquivos menores. Seu padrão é dividir os arquivos a cada 1000 linhas. Os nomes dos arquivos de saída seguem o padrão. Exemplo: Crie um arquivo com 40 linhas e divida-o em 4 arquivos com 10 linhas: #split -4 arquivo1.txt arquivosaida O comando tac O comando tac é o inverso do comando cat, ele mostra o conteúdo de um arquivo de texto de trás para frente. Exemplo: #tac arquivo.txt O comando tail O comando tail visualiza as 10 últimas linhas de um arquivo. Funciona como o oposto do comando head. As duas opções mais utilizadas do comando tail são: Opções Descrição -n Especifica o número de linhas finais que o tail mostrará de um arquivo. -f Mostra as últimas linhas de um arquivo continuamente, bom para log. Página: 17 Exemplo: #tail -n 50 /var/log/meulog #tail -f /var/log/meulog O comando tr O comando tr faz a troca de uma variável especificada. Ele não trabalha diretamente com arquivos, mas você pode utilizá-lo usando a saída de outro comando. Exemplo: #cat arquivo1 | tr a-z A-Z No exemplo acima o comando tr troca todas as letras de a à z para maiúsculas. #cat arquivo | tr -d a Neste exemplo o comando tr apaga a letra a. #cat arquivo | tr -s 1 Neste exemplo o comando tr suprime as ocorrências repetidas do número 1. O comando wc O comando wc conta as linhas, palavras e caracteres de um arquivo. Exemplo: #wc teste.txt “Quanto mais amor temos, tanto mais fácil fazemos a nossa passagem pelo mundo.” - Immanuel Kant Página: 18 O comando xargs O comando xargs utiliza a saída padrão de um comando como argumento para outro comando, exemplo: #cat texto.txt | xargs echo Neste exemplo, cada linha do arquivo texto.txt é passada como argumento para o comando echo. Editor de texto VIM O editor VIM tanto no UNIX como no Linux serve para criar arquivos de texto e scripts shells, assim como editá-los. O editor VIM possui dois modos: Edição, quando você aperta a tecla (I) ou (insert). Eo modo de comando, quando você aperta a tecla (ESC). Iniciando o VIM: #vim ou vim nome_de_arquivo Aperte i para escrever e esc para sair e executar os comandos: Comando Explicação :q Sair do arquivo sem salvar :q! Sair sem salvar, forçando :wq Salvar e sair :wq! Salvar e sair forçando :w Salvar o arquivo atual :e arquivo1 Abre o arquivo1 :d ou dd Desfaz a última ação :yy Guarda a linha atual :p Copia a linha onde esta o cursor :dd Cola o texto Página: 19 Substituição de texto no VIM Comando Explicação :s/velho/novo Substitui a palavra velho por novo % s/velho/novo/g Substitui em todo o arquivo Opções: Opções Explicação :set aw Salva a cada alteração :set nu Mostra as linhas :set ff Converte o arquivo para DOS :set et Troca tab por espaços Opção do modo visual Comando Explicação Selecione, u Converte p/ minúscula Selecione, U Converte p/ maiúscula Permissões de arquivos e diretórios Neste capítulo estudaremos o sistema de permissões do linux. O sistema de permissões permite ao administrador do sistema (root) definir o nível de acesso ao usuários, grupos e outros arquivos e diretórios além de programas executáveis. As permissões de acesso protege o sistema de algumas invasões e respectivos programas não autorizados. Por exemplo, no linux, podemos impedir que algum programa malicioso se instale na máquina, delete algum arquivo ou que seja transferido para outras pessoas via rede, de modo a invadir o sistema. 3 níveis de permissão O linux gerencia o sistema de privilégios em 3 tipos: 1. Privilégio do dono 2. Privilégio do Grupo 3. Privilégio de outros Página: 20 Cada um destes tipos é dividido em 3 níveis de permissões de acesso: 1. Permissão de leitura (r) 2. Permissão de escrita (w) 3. Permissão de execução (x) As definições de propriedade do usuário e do grupo fazem parte do inode e ambas são atribuídas quando um arquivo é criado. Geralmente, o proprietário é o usuário que criou o arquivo. O grupo do arquivo normalmente é definido como padrão do seu criador. A propriedade de grupo adiciona flexibilidade em situações nas quais uma equipe compartilha arquivos. Os “outros” usuários são aqueles que não são membros do grupo do arquivo e também não são os proprietários. Para cada uma dessas três classes de usuários, o modo de acesso define três tipos de permissões, que se aplicam diferentemente para arquivos e diretórios. As permissões encontram-se listadas na tabela abaixo: Abreviatura Permissão em número Tipo r 4 Leitura w 2 Escrever x 1 Execução Essas três permissões se aplicam as três classes diferentes de usuários: usuários, grupo e outros. Cada uma tem permissão de leitura, escrita e execução. Visualizando as permissões no arquivo Exemplo: #ls -l /home/usuario (Visualiza privilégios e permissões de arquivos) #ls -ld /home/usuario (Visualiza privilégios e permissões de diretórios) Página: 21 Ao executar o comando ls -l você terá como retorno, algo semelhante a : drwx------ ... 2 wester ........ 512 Jan ... 29 23:30 .. Arquivos/ -rw-rw-r-- ... 1 wester ....... 280232 Dec .. 16 22:41...notas.txt O primeiro caractere das linhas acima indicam o tipo de arquivo, os mais comuns: Caractere Descrição d Diretório b Arquivo de bloco c Arquivo especial de caractere - Arquivo normal Repare agora que no restante da string ainda há 9 caracteres. Que são os 3 níveis depermissões (Dono, grupo e outros). usando o exemplo da segunda linha, arquivo (notas.txt): rw- Permissões do proprietários rw- Permissão do grupo r-- Permissão para outros Tabela de permissões comuns: Permissão Descrição --- Nenhuma permissão r-- Permissão de leitura r-x Leitura e execução rw- Leitura e gravação Rwx Leitura, gravação e execução Página: 22 Alterando diversas permissões de uma só vez Para diretório: #find /oracle -type d | xargs chmod 775 Para arquivos: #find /oracle -type f | xargs chmod 775 O comando df Exibe informações gerais sobre a utilização do disco para sistemas de arquivos montados em arquivo. Em geral arquivo é um arquivo de dispositivo para uma partição, como /dev/hda1. O arquivo pode também ser o ponto de montagem de qualquer arquivo sob esse ponto de montagem. Se arquivo for omitido, são exibidas informações para sistemas de arquivos montados em todos os dispositivos de /etc/fstab Opções frequentemente utilizadas: -h Exibe os resultados em um formato legível, incluindo sufixos como M (megabytes) e G (gigabytes). -i Exibe informações sobre os inodes restantes, em vez das informações padrões sobre o espaço em disco. Exemplo: juliano@certificacoesnetbr:~$ df -h Página: 23 Comando du Exibe informações de utilização de disco para diretórios. Se diretórios forem omitidos, a busca é feita no diretório de trabalho atual. Opções frequentemente usadas: Opção Definição -a Mostra todos os arquivos e não apenas os diretórios -c Produz um total geral para todos os itens listados -h Exibe o resultado em um formato legivel, incluindo sufixos M (megabytes) e G (gigabytes). -s Exibe um resumo para cada um dos diretórios especificados, em vez de totais para cada subdiretório encontrado recursivamente Usuários e grupos Todo sistema de gerência de usuário possui um id registrado no sistema. Com as informações de registro o Linux pode gerenciar o acesso aos usuários e as suas permissões de acesso. Os administradores de sistema podem gerenciar e controlar todo o acesso a grupos e usuários. Grupo Um grupo é conjunto de usuários do sistema. Cada grupo também possui informações que identificam o usuário no sistema, contendo um nome e um número. Sobre um usuário. O que compõem um usuário: UID Redução de User IDentification. Ele identifica o usuário no sistema junto com o login para permitir-lhe o seu acesso. GID Redução de Group IDentification. É o Número que identifica o grupo do usuário ao qual ele esta inserido. Página: 24 Comment Descreve as características do usuário, geralmente o nome completo. Home directory Corresponde o diretório do usuário quando ele acessa o sistema, onde seus arquivos são armazenados. Shell Corresponde ao shell padrão do usuário quando acessa o sistema. Geralmente o Bash. Local das informações: As informações do usuário e senhas são armazenados nos arquivos /etc/passwd e /etc/shadow, e as informações sobre os grupos em /etc/group e /etc/gshadow. Nesse arquivo é armazenado as informações separadas por (:) da seguinte forma: Nome usuário:senha:id usuário:id grupo:descrição:diretório:shell Exemplo: aluno1: x: 1000:1000:Descrição do aluno1 ,,,: /home/aluno1 :/bin/bash Faça o comando: #cat /etc/passwd Para visualizar o arquivo com os usuários. Gerenciando usuários e grupos. O comando adduser adiciona um usuário ao sistema, exemplo: # adduser juliano Página: 25 Informações sobre grupos As informações dos grupos são armazenados no arquivo # cat /etc/group Nesse arquivo é armazenado as informações separadas por (:) da seguinte forma: Grupo:senha:id grupo:descrição:lista de usuários Exemplo: Grupo:x:1000:usuário:1,usuário2 Mudando a senha do usuário: passwd – Muda a senha do usuário Exemplo básico: # passwd nome_do_usuario gpasswd gpasswd – Define senha para um grupo e realiza funções de administração de usuários e grupos. #gpasswd -a juliano audio Adiciona o usuário juliano no grupo audio #gpass -d juliano audio Exclui o usuário juliano do grupo áudio Userdel userdel – Remove usuários do sistema, exemplo: #userdel juliano Remove o usuário Juliano. Para remover o usuário e também seu diretório utilize: #userdel -r juliano Página: 26 Instalação de pacotes Pacotes pelo código fonte Normalmente os pacotes com o código fonte são empacotados e compactados nos formatos .tar.gz ou tar.bz2. Este tipo de pacote pode ser utilizado em qualquer distribuição de Gnu/Linux. Basicamente fazemos 3 passos. Descompactar : #tar -zxvf nomedopacote.tar.gz (Para pacotes .tar.gz) #tar -jxvf nomedopacote.tar.bz2 (Para pacotes .tar.bz2) Prepararpara a instalação: Configure é um arquivo que prepara o “linux” para instalar o programa, verificando dependências entre outras coisas. Se encontrar problemas nesta etapa, verifique o arquivo INSTALL ou README, já que cada pacote, possui suas particularidades de instalação. ./configure Preparar e instalar Preparar e instalar: make make install Pacotes deb O dpkg é o comando básico para lidar com pacotes Debian no sistema. Se você tem pacotes .deb, é com o dpkg que você instala ou analisa seu conteúdo. Mas este programa tem apenas uma visão parcial do universo Debian: ele sabe o que está instalado no sistema, e o que for dado na linha de comando, mas não sabe nada dos outros pacotes disponíveis. Assim, ele vai falhar se uma dependência não for satisfeita. Ferramentas como o apt-get, ao contrário, criará uma lista de dependências para instalar tudo o mais automaticamente possível. Página: 27 Instalando pacotes #dpkg -i nomedopacote.deb Remoção de pacotes #dpkg -r nomedopacote.deb Arquivos de Log do dpkg Dpkg mantém um log de todas as suas ações em /var/log/dpkg.log. Este log é extremamente detalhado, pois detalha todos os passos da manipulação de pacotes pelo dpkg. Compactadores Compressão e empacotamento A compressão e empacotamento de arquivos e diretórios é muito importante em qualquer sistema computacional. Ambos os procedimentos são necessários desde o ponto de vista de distribuição de softwares, de economia de banda e de espaço de armazenamento, e de backup de sistema. O empacotador tar O que os compactadores como gzip e bzip2 não conseguem fazer, o tar (Tape Archives) faz. Ele é um aplicativo capaz de armazenar vários arquivos em um só. Porém ele não compacta os arquivos armazenados. Principais parâmetros do TAR: Comando Descrição -c Cria um novo arquivo tar -p Mantém as permissões originais dos arquivos -r Acrescenta aquivos a um tar -t Exibe o conteúdo de um arquivo tar -v Exibe detalhes da operação -x Extrai arquivos de um arquivo tar -z Comprime ou extrai arquivos tar -j Comprime ou extrai arquivos tar com bzip2 -f Especifica o arquivo a ser usado -C Troca o caminho da extração Página: 28 Vamos empacotar o diretório /etc e /usr: #tar -cvf /backup/etc.tar /etc #tar -cvf /backup/usr.tar /usr Verificar o tamanho do pacote “usr.tar” #du -sh /backup/usr.tar Empacotando e compactando com o gzip #tar -zcvf /backup/usr.tar.gz /usr Bzip2 Empacotando com bzip2: #tar -jcvf /backup/usr.tar.bz2 /usr O bzip2 faz a melhor compactação, mas em compensação leva um tempo maior que o gzip. O comando dd O comando “dd” tem a capacidade de copiar “bit a bit”. Segue um exemplo de seu uso: #dd if=/dev/sda3 of=/dev/sda11 O comando acima efetuará uma clonagem da partição sda3 para a partição sda11. Configuração básica de rede A configuração básica de um host (computador ou equipamento conectado a rede) consiste em três etapas: • Configuração do IP • Configuração do Gateway • Configuração dos servidores (DNS) Página: 29 Configurando IP e máscara Além da interface de “lo-loopback”, podemos configurar outras interfaces, basta que elas estejam presentes fisicamente e sejam suportadas pelo kernel. Na maioria dos casos, a interface mais comum é a “eth0” – número zero por ser a primeira. Para visualizar as informações iniciais da rede, usamos o comando: # ifconfig Com este comando é possível descobrir todas as interfaces presentes no sistema, mas para ter certeza que você está vendo até mesmo as interfaces inativas, use o parâmetro –a ifconfig –a No Debian 9, o comando é: # ip addr show Configurando a interface Para tornar uma configuração de rede válida após a reinicialização do computador, editamos o arquivo: /etc/network/interfaces, exemplo de configuração, altere pelos seus valores: auto lo iface lo inet loopback auto etho iface eth0 inet static address 192.168.1.16 netmask 255.255.255.0 broadcast 192.168.1.255 network 192.168.1.0 gateway 192.168.1.1 Reiniciando o serviço de rede: invoke-rc.d networking stop invoque-rc.d networking start Página: 30 Configurando o hostname Para definer um nome ao seu comptuador. Edite o arquivo /etc/hostname, basta escrever o nome do computador, exemplo: Servidor_debian Configurando os hosts Para configurar “Atalhos” para endereços locais da rede, editamos o arquivo: /etc/hosts, deixando-o da seguinte forma: 192.168.1.25 notebook-keila Agora, para executar por exemplo o comando “ping” no IP: 192.168.1.25 eu posso fazer: ping notebook-keila SYSTEMD Systemd é um substituto para a daemon init do Linux (System V ou estilo BSD). Seu objetivo é fornecer um framework melhor para expressar dependências de serviços, permitir que mais trabalho seja feito concorrentemente (possivelmente em paralelo) na inicialização do sistema e reduzir a sobrecarga do shell. O nome vem da convenção de sufixos do Unix para os nomes de daemons do sistema (processos que executam em plano de fundo), em inglês system daemons. Uso básico do Systemctl O principal comando usado para controle do systemd é systemctl seu uso é para o gerenciamento de sistemas e serviços. Antes de qualquer coisa, podemos consultar a página de manual do systemd: man 1 systemctl Analisando o estado do sistema systemctl ou systemctl list-units As units podem ser, por exemplo, serviços (.service), pontos de montagem (.mount), dispositivos (.devices) ou sockets (.socket). Página: 31 Listar as units que falharam systemctl –failed Os arquivos units disponíveis podem ser vistos em /usr/lib/systemd/system e /etc/systemd/system/ (este último tem precedência). Você pode ver uma lista dos arquivos units com o comando: systemctl list-unit-files Usando units Quando você usa systemctl, você geralmente tem que especificar o nome completo do arquivo unit,incluindo o sufixo, por exemplo ssh.socket. No entanto, existem algumas formas curtas de especificar a unit nos seguintes comandos systemctl. Se você não especificar o sufixo, systemctl assumirá .service. Por exemplo, netcfg e netcfg.service são equivalentes. Os pontos de montagem serão automaticamente convertidos para a unit .mount adequada. Por exemplo, especificando /home equivale a home.mount Similar aos pontos de montagem, dispositivos são automaticamente convertidos para a unit .device adequada, portanto, especificando /dev/sda2 equivale a dev-sda2.service Consulte: man systemd.unit Para maiores detalhes. Ativar uma unit imediatamente systemctl start unit Desativar uma unit imediatamente systemctl stop unit Reiniciar uma unit systemctl restart unit Página: 32 Recarregar a configuração da unit systemctl reload unit Mostrar o estado de uma unit systemctl status unit Verificar se a unit está habilitada systemctl is-enabled unit Habilitar unit na inicialização systemctl enable unit Desabilitar unit da inicialização systemctl disable unit Formação completa em Administração de Sistema Linux Que tal realizar mais de 9 cursos de formação linux, incluindo servidores como apache, samba, squid e firewall, pagando apenas R$ 169,90 e ainda recebendo em sua casa o livro: Treinamento prático para iniciantes de servidores LINUX? - Pois bem. Acesse o link abaixo e aproveite a promoção que é só este mês! http://certificacoes.net.br/ltc/certificate-academy/ Página: 33 http://certificacoes.net.br/ltc/certificate-academy/
Compartilhar