Buscar

Apostila Linux

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 85 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 85 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 85 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Apostila 
Instalação e Configuração de Sistemas Linux
O Sistema Linux
Neste capítulo, você será introduzido no mundo OpenSource, veremos a importância do Linux no mundo atual e quais são as principais profissões do mercado que utilizam Linux atualmente. Logo, vamos responder perguntas como:
Onde podemos encontrar o Linux ?
Por onde posso começar usando o Linux ?
Quais as principais profissões ?
Mercado Linux
O Linux é um dos avanços tecnológicos mais importantes do século XXI. O Google roda milhares de servidores Linux para fornecer sua tecnologia de busca. Os telefones Android são baseados no Linux. O Facebook constrói e implanta seu site usando o que é conhecido como uma pilha LAMP (Linux, servidor web Apache, banco de dados MySQL e linguagem de script web PHP). Portanto, essa ampla adoção do Linux em todo o mundo criou uma enorme demanda pelo seu conhecimento. 
Desktops Linux
Ainda que as estações de trabalho não sejam muito utilizadas, a comunidade vem desenvolvendo interfaces cada vez mais amigáveis. Atualmente, o Linux ocupa cerca de 1% dos desktops. Clique aqui para mais informações.
Mesmo que o Linux não domine os computadores caseiros, ainda são desenvolvidas diversas distribuições para a utilização domiciliar, muitas delas são até mesmo mais simples que o próprio Sistemas de Janelas da Microsoft. Conheça as distribuições Linux mais utilizadas no DistroWatch.
	“Se o Windows domina no Desktop...o Linux domina o mundo” Steve Ranger - ZDnet
Mobile
Atualmente, muitos nichos no mundo de tecnologia utilizam o Linux, começando pelo mercado Mobile. O Android é um Sistema Operacional baseado no Kernel do Linux, licenciado pelo GPLv2, atualmente o S.O. mais utilizado no mundo (considerando apenas sistemas conectados na internet). Em Março de 2017, a StatCounter anunciou o Android como o novo sistema operacional mais utilizado no mundo. Foi a primeira vez desde os anos 80 que o Windows deixou de ser o S.O. mais utilizado no mundo.
Segurança 
Por outro lado, não podemos deixar de falar sobre o mundo de Segurança, Testes de Penetração ou Técnicas forenses sem conhecer Linux, muitas das ferramentas utilizadas nesse ramo foram desenvolvidas para as distribuições do Linux.
Cloud Computing
Hoje a Cloud vem transformando muitos dos recursos tecnológicos das empresas em serviços prestados por provedores, nesses casos podendo fornecer, por exemplo, Infraestrutura sob demanda. E, a maior parte dos recursos que estão hoje na Cloud rodam em Linux. No site, The Cloud Market é possível verificar o gráfico de Sistemas Operacionais da Cloud.
Web Server
A W3tECHr fez o levantamento do Market Share dos servidores Web mais utilizados baseados em Sistemas Operacionais. O Linux domina quase 70% do mercado.
	
	Linux Foundation & Dice Job Report URL - Todo ano a Linux Foundation em parceria com a Dice pública uma relatório indicando para qual lado o mercado está andando e procurando profissionais (este é o de 2016).
MarketShare Cloud AWS - Qual sistema operacional é mais utilizado nas EC2 da AWS.
MarketShare Dispositivos conectados na internet - Verifique qual é o sistema operacional mais utilizado na internet.
MarketShare Sistema Operacional domiciliar - Consulte quais sistemas operacionais são mais utilizados em casa.
Formação Linux
Os objetivos dessa seção é apresentar as principais Certificações Linux e os Centro Certificadores e por onde podemos começar nossa carreira Linux.. 
Certificado ou Certificação? 
Existe diferença entre Certificado de Conclusão e Certificação. O certificado de conclusão de curso acontece quando um indivíduo quer se capacitar em determinada tecnologia e contrata uma empresa terceira para a capacitação. O certificado garante a carga horária e os conteúdos determinados. Mas não garante o aproveitamento de 100% do curso. Já na certificação, é garantido que o indivíduo adquiriu o conhecimento.
Por que se Certificar
Hoje em dia é muito comum ouvir pessoas falando que a certificação não prova nada. Porém, segundo o Diretor de Currículo e Certificação da Red Hat, Randy Russel, “A premissa de qualquer certificação é que ela ajude um gerente de contratações a organizar a pilha de currículos.” 
Portanto, tirar uma certificação atualmente faz com que seu currículo tenha mais chances de ficar na pilha dos selecionados do que dos descartados. É muito comum as certificações serem um pré-requisito para determinadas vagas, principalmente do nosso mundo de tecnologia. Isso não é exclusivo para o mundo Linux, e pode se estender para todo o mundo da tecnologia.
Centros Certificadores 
Existem diversas carreiras e centros para certificar os profissionais em Linux, atualmente os mais buscados são: LPI, Redhat e Linux Foundation. Apesar da Linux Foundation não ter tanto peso no mercado, ela vem crescendo com o tempo. A Microsoft fechou parceria com ela no mesmo ano que disponibilizou o SQLServer para plataforma Linux. 
Além dos centros citados acima, também temos outros como OpenSuse, CompTIA+ e a própria Exin que disponibilizou uma certificação de DevOps.
Linux Professional Institute 
LPI é uma organização sem fins lucrativos e as Certificação não possuem foco em determinada distribuição, portanto a LPI fornece Certificação Independente de Fornecedores. A LPI cobra que você tenha conhecimento em cada uma distribuição. O Conteúdo dos Exames são baseados no padrão LSB (Linux Standard Base). O LSB é um padrão de arquitetura que todos os sistemas devem seguir para não terem discrepâncias e diferenças entre uma distribuição e outra. Segundo Jon Maddog Hall, fundador da LPI, trata-se da “É A MAIOR CERTIFICAÇÃO MUNDIAL EM LINUX”. A LPI também está focando na carreira de DevOps.
Red Hat Certificate 
Dentre as versões comerciais de Linux, a Red Hat tem o mais popular programa de certificação. Isso porque ele trabalha com provas práticas. O Conteúdo dos Exames são baseados sempre na versão mais recente do Red Hat Enterprise. Isso significa que cada certificação dura em média 3 anos. Porém, isso não quer dizer que você é desqualificado na certificação anterior.
A carreira de certificações dentro da Red Hat é gigantesca. Na imagem, vemos as principais certificações no mundo Red Hat, iniciando a RHCSA, depois a RHCE e depois RHCA. Para tirar a RHCA é necessário fazer as duas certificações anteriores.
Linux Foundation 
A Linux Foundation vem ganhando o mercado de certificações por causa de sua metodologia de aplicação de provas. São provas práticas, porém é possível escolher qual a sua Distribuição. Ele não depende de Escolas autorizadas para execução das Provas e será possível fazer a prova em casa. Ele também é o Primeiro centro certificador a fechar parceria com a Microsoft. 
O programa de certificação da Linux Foundation é um pouco mais simples. Temos duas certificações, a LFCS e a LFCE.
	Centro certificador Linux Professional Institute (LPI )
Centro certificador RedHat
Centro certificador Linux Foudation
A LPIBrasil é mantida pela 4Linux, e sempre trás novidades sobre o Linux Professional Institute.
Mas afinal, o que é o Linux?
O termo Linux é usado em vários contextos com significados diferentes. A rigor, Linux é um kernel. Contudo, a expressão “sistema operacional Linux” tornou-se muito difundida. Portanto, em alguns contextos, Linux pode significar sistema operacional (SO) que usa o kernel Linux. Ou seja, quando algum usuário instala “o Linux”, ele está instalando o kernel e mais uma série de outros softwares. Grande parte desses softwares pertencem a um projeto chamado GNU. Logo, o sistema operacional formado pelo kernel Linux mais utilitários e aplicativos, como defendem alguns, deveria ser chamado de GNU/Linux. Veremos a seguir como surgiram o GNU e o Linux.
	Sistema Operacional: é um software que serve de interface entre o computador e o usuário, gerenciando recursos (como memória, processamento,etc.).
Kernel: é o núcleo ou cerne do sistema operacional (é a parte deste que fica mais “próxima” do hardware).
História
Unix
UNIX O Unix é um Sistema Operacional que foi projetado em 1960, com o auxílio de grandes empresas como General Eletric (GE), Bell Labs, American Telephone and Telegraph (AT&T) e Massachusets Institute of Technology (MIT). Nesta época ele era chamado de Multics e só adotou o nome de Unix em 1969. O Unix em 1973 foi reescrito pelo Dennis Ritchie, o criador da linguagem C. Ele reescreveu o Unix nesta nova linguagem. O Unix é muito utilizado em Super Computadores ou MainFrames, e foi usado para criação de diversos Sistemas Operacionais, incluindo o MAC OS e o Linux. 
O termo Unix-like é muito comum no mundo da tecnologia, pois diversos Sistemas Operacionais foram derivados do Unix, e acabam herdando algumas características do Sistema. Em 1987, Andrew Stuart Tanenbaum lançou um Sistema derivado do Unix chamado MINIX. O intuito do Tanenbaum era criar um Sistema Operacional para estudo no livro “Sistemas Operacionais. Projeto e Implementação” de sua autoria, ele apresenta o MINIX e explana sobre o funcionamento dos Sistemas Operacionais.
GNU/Linux 
Em 1984, Richard Stallman iniciou o Projeto GNU, que tinha por objetivo criar um sistema operacional que fosse totalmente livre, o GNU. Esse SO deveria ser compatível com outro sistema operacional - o UNIX (daí o nome GNU - GNU is Not Unix). Como ele foi desenvolvido com base no UNIX, logo ele também se enquadra como UNIX-like, porém ele difere do UNIX por ser gratuito e licenciado sob a GPL (General Public License) que falaremos em breve. Stallman e outros programadores começaram a escrever as principais peças do sistema, como compiladores, editores de texto e outros binários. O Kernel (núcleo do sistema) que o Stallman vinha trabalhando era chamado de Hurd. 
No ano seguinte, Stallman fundou a FSF (Free Software Foundation), com o propósito de eliminar restrições de uso, cópia e distribuição de softwares. Por volta de 1991, o sistema GNU estava quase pronto, exceto pelo kernel. Stallman estava trabalhando no desenvolvimento de um kernel chamado Hurd mas não conseguiu finalizá-lo. 
Ao mesmo tempo, o finlandês Linus Torvalds, que utilizava o MINIX, havia criado um kernel compatível com as aplicações do projeto GNU com o objetivo de uso pessoal. A esse kernel foi dado o nome de Linux (Linux, Linus + Unix). Com o Kernel criado, ele precisava da suíte de ferramentas para interagir com o seu novo núcleo, e como o Richard Stallman já havia criado o GNU e licenciado sob a GPL, o Linus Torvalds decidiu utilizar o GNU em conjunto com o Linux e licenciar o novo sistema com a GPL. 
Atualmente, Linux tornou-se um termo genérico para se referir a sistemas operacionais baseados no kernel Linux. Tornou-se, também, o melhor exemplo de Software Livre e de código aberto.
	Revolution OS é um documentário conta a história dos hackers que se rebelaram contra o modelo de Software Proprietário para criar o GNU/Linux e o movimento Open Source. Filmado no Vale do Silício, REVOLUTION OS apresenta entrevistas com as personalidades do GNU/Linux e o Movimento OpenSource, Linus Torvalds, Richard Stallman, Bruce Perens, Eric Raymond, Brian Behlendorf, Michael Tiemann, Larry Augustin, Frank Hecker e Rob Malda.
Licenças no mundo Open Source
Durante a criação do GNU em 1985, o Richard Stallman decidiu fundar a Free Software Foundation, uma organização sem fins lucrativos para o licenciamento de softwares, eliminando a restrição de acesso e cópias. Em 1985 ele dedicava-se apenas ao licenciamento de softwares livre, porém hoje temos diversos projetos que são desenvolvidos e contemplados pelo licenciamento da FSF, por tanto agora ele se dedica aos aspectos legais e estruturais da comunidade do software livre. Todas as licenças são baseadas nas 4 Liberdades que será abordado em breve. 
GNU General Public License (GPL) - É designada para licenciar Softwares Livres. 
GNU Affero General Public License (AGLP) - É um tipo de licenciamento mais recente, muito similar ao GNU GPL, porém visa fornecer as liberdades para os softwares enquadrados em SaaS (Software as a Service), atualmente disponibilizados na Cloud. 
GNU Free Documentation License (FDL) - Utilizado para textos, apresentações e conteúdos da web, sejam distribuídos e reaproveitados, mantendo os direitos autorais para que não seja utilizado de forma inadequada. 
GNU Lesser General Public License (LGPL) - É como a GPL, porém muito menos “aberta”, podendo licenciar softwares proprietários.
Software Livre 
Por “software livre”, devemos entender aquele software que respeita a liberdade e senso de comunidade dos usuários. Isso significa que os usuários possuem a liberdade de executar, copiar, distribuir, estudar, mudar e melhorar o software. Assim sendo, “software livre” é uma questão de liberdade, não de preço. Para entender o conceito, pense em “liberdade de expressão”, não em “cerveja grátis”. Por vezes, chamamos de “libre software” para mostrar que livre não significa gratis, pegando emprestado a palavra em francês ou espanhol para “livre”, para reforçar o entendimento de que não nos referimos a software como grátis. Nós batalhamos por essas liberdades porque todo mundo merece. Com essas liberdades, os usuários (tanto individualmente, quanto coletivamente) controlam o programa, e o que ele faz por eles. Quando os usuários não controlam o programa, o programa controla os usuários. O desenvolvedor controla o programa e, por meio dele, controla os usuários. Esse programa não-livre e “proprietário” é, portanto, um instrumento de poder injusto. Fonte: https://www.gnu.org/philosophy/free-sw.pt-br.html
Um programa é software livre se os usuários possuem as quatro liberdades essenciais: 
A liberdade de executar o programa como você desejar, para qualquer propósito (liberdade 0).
A liberdade de estudar como o programa funciona, e adaptá-lo às suas necessidades (liberdade 1). Para tanto, acesso ao código-fonte é um pré-requisito.
A liberdade de redistribuir cópias de modo que você possa ajudar outros (liberdade 2).
A liberdade de distribuir cópias de suas versões modificadas a outros (liberdade 3). Desta forma, você pode dar a toda comunidade a chance de beneficiar de suas mudanças. Para tanto, acesso ao código-fonte é um pré-requisito.
Aplicações OpenSource 
O mercado possui diversas aplicações OpenSource que são mantidas sob a licença da GPL, em muitos casos utilizamos elas todos os dias mesmo sem ter ciência disso. Grande parte dos softwares licenciados pela FSF são transparentes ao usuário, como por exemplo o Apache, que é o servidor Web mais utilizado no mundo (fonte netcraft.com). A MediaWiki e a WikiMedia também são licenciados pela GPL e vêm desempenhando um papel deveras importante, pois em muitas vezes ele supre a necessidade de conhecimento de determinados assuntos. É possível consultar a lista de softwares livres aqui. 
Distribuições
Uma vez licenciado pela GPL dependendo da modalidade, os códigos fonte das Distribuições ficam abertos para os usuários, o que proporciona na criação de diversas variações de Sistema Operacionais. Com isso, a lista de distribuições só tem crescido, conforme pode ser consultado na linha do tempo de distribuições disponibilizadas aqui. 
Distribuições Linux (também chamadas Distribuições GNU/Linux ou simplesmente distros) consistem em sistemas operacionais formados pelo kernel Linux e “pacotes” de software para satisfazer as necessidades de um grupo específico de usuários, dando origem a versões domésticas, empresariais e para servidores. Alguns exemplos de Distribuições Linux são: Ubuntu, Debian, Slackware, Fedora, Red Hat, Gentoo, Mandriva, openSUSE etc. 
	The Code é um documentário finlandês de 2001 sobre a história do GNU/Linux, feito com algumas das pessoas mais influentes do movimento software livre. Disponível em: https://libreflix.org/i/the-code 
Hierarquia dos diretórios
A FHS (FilesystemHierarchy Standard) Estrutura Padrão de Diretórios. tem a função de padronizar a estrutura de arquivos de Sistemas GNU/Linux; mantida pelo Free Standards Group (IBM, RedHat, Dell…), são 13 diretórios obrigatórios e 2 opcionais. 
Guardar as informações no disco deve ser de forma organizada e facilitada de acesso. É por estas características que os sistemas operacionais são robustos e uma maneira de organizar as informações dentro dos discos é distribuir os arquivos em diretórios e subdiretórios. Esta distribuição vale para todos os sistemas operacionais Windows, Linux, etc. 
Sistemas operacionais com kernel Linux criam um sistema de arquivos virtual, o que faz com que todos os arquivos em todos os dispositivos pareçam existir em uma única hierarquia. Isso significa que, nesses sistemas, existe um diretório raiz e cada arquivo existente no sistema está localizado em algum lugar abaixo do diretório raiz. Os diretórios são distribuídos no Linux em forma de árvore, só que ao contrário, pois no topo é que está a base de tudo, chamada de raiz ou root e representada por “/”. Não existe o conceito de disco C: ou D: por exemplo. Na figura é apresentada a estrutura típica de diretórios Unix/Linux seguida com a tabela com um resumo da função de cada diretório.
Figura 1 - Estrutura de Diretórios Típica. Sistemas Unix/Linux
Tabela 2 - Hierarquia de diretórios
	Diretório
	Descrição
	/
	raiz ou root, base do sistema de arquivos
	/bin
	possui todos os arquivos executáveis, inclusive o kernel do Linux
	/dev
	possui os dispositivos do sistema
	/etc 
	possui os arquivos de configuração
	/home
	diretório dos usuários
	 /lib
	biblioteca do Linux
	/media
	diretório de montagem para mídias removíveis;
	/mnt
	diretório de montagem para sistemas de arquivos temporários
	/proc 
	informações do sistema operacional
	 /opt 
	 possui aplicativos extras
	/root 
	é o home do super usuário
	/sbin
	arquivos do sistema utilizados apenas pelo usuário root
	/srv
	possui aplicativos extras
	/tmp
	 Diretório de arquivo temporário, suas informações são removidas automaticamente a cada reboot
	/usr
	possuem arquivos dos usuários, este diretório é a 2ª maior hierarquia de diretórios no Linux
	 /var 
	 informações do sistema (log, e-mail, print, etc.)
	/boot
	armazena o kernel e alguns arquivos usados na fase inicial do boot
	/sys
	 informações de dispositivos instalados, incluindo o tipo, fabricante, capacidade, endereços usados etc
Shell
Antes de ícones e janelas tomarem as telas de computador, era necessário digitar comandos para interagir com a maioria dos computadores. Em sistemas UNIX, do qual o Linux se originou, o programa usado para interpretar e gerenciar comandos era referido como shell. Hoje, você pode usar o Linux a partir de uma interface de desktop gráfica, mas, a medida que for crescendo em Linux, vai precisar usar o shell. Embora o shell seja menos intuitivo do que interfaces gráficas (GUIs) comuns, a maioria dos especialistas considera o shell do Linux como sendo muito mais poderoso do que as GUIs. O shell permite criar arquivos de script executável, executar programas, trabalhar com sistemas de arquivos, compilar código e gerenciar o computador. E, independentemente da distribuição Linux usada, você sempre terá um shell disponível para você. Eis uma outra boa razão para aprender a usar o shell: você saberá se virar em qualquer sistema Linux.
O shell do linux mais comumente usado é chamado de bash, que é uma abreviação de Bourne Again Shell. Embora o bash seja incluído na maioria das distribuições e seja considerado um padrão, outros shells estão disponíveis, incluindo o shell C (csh), que é popular entre os usuários de BSD UNIX, e o shell Korn (ksh), que é popular entre os usuários de Unix System V. O Ubuntu usa o shell dash, por padrão, que é projetado para executar mais rápido do que o shell bash. 
A maneira mais fácil de abrir o terminal é clicando no botão "Mais aplicativos" e encontrá-lo nessa lista exibida usando a função de busca. Outra forma, é utilizar o atalho de teclado: Ctrl + Alt + T. Ao abrir o terminal, você notará que há um comando na tela com uma sintaxe semelhante a esta:
	usuario@nomepc:~$
Aqui “usuario” indica o nome de usuário que iniciou o terminal e “nomepc” indica o nome da máquina, ou seja, o “apelido” do computador, usado para algumas funções do Ubuntu. Já o til ( ̃) em seguida indica que o terminal está aberto na pasta Home, que é a pasta padrão de usuário..
Já, os TTYs são os terminais nativos do sistema que podem ser acessados utilizando CTRL+F1 … até F6. É possível utilizar vários terminais desses ao mesmo tempo para acessar a interface gráfica. Primeiro o Sistema Operacional deve ter instalado o servidor gráfico nele, caso já o tenha, basta pressionar CTRL+F7. 
Lembrando que isso serve apenas quando você está fisicamente na máquina, quando acessamos o equipamento remotamente ou quando abrimos um terminal pela interface gráfica, na realidade não estamos acessando um TTY, mas sim um PTS (shell), que é um pseudo terminal. Logo, ele tem as mesmas características que um TTY, porém ele é volátil, diferente dos TTY que mesmo sem utilizar, eles sempre vão existir. Os PTS são criados apenas quando abrimos alguma aplicação que “emula” o terminal, ou conectando no equipamento de forma remota
Sintaxe
Os comandos de texto no shell possuem a seguinte sintaxe:
	$ COMANDO -[PARÂMETROS] [ARQUIVO/SERVIÇO/AÇÃO] 
Porém, não é necessário atender sempre a sintaxe completa. Os comandos mais simples de executar partir de um shell são formados apenas pelo nome do comando. Vamos conhecer e experimentar alguns desses comandos. 
	$ date # exibe dia, mês, data, hora, fuso horário e ano
	$ pwd # print work directory - exibe o diretório de trabalho atual 
	$ hostname # exibe o nome de host do seu computador
	$ ls # exibe os arquivos do "diretório atual"
	$ clear # limpa a tela
A maioria dos comandos permitem que você adicione parâmetros, ou seja, opções para mudar o seu comportamento. Em geral, as opções consistem em uma letra precedida por um hífen conforme exemplo a seguir.
	$ ls -l 
Mas você pode agrupar opções de uma letra ou preceder cada uma com um hífen, para usar mais de uma opção de cada vez. Por exemplo, os dois seguintes usos de opções para o comando ls são os mesmos.
	$ ls -l -a -t
$ ls -lat
Em ambos os casos, o comando ls é executado com as opções: -l (listagem longa); -a (exibe arquivos de ponto ocultos) e -t (lista por tempo).
Alguns comandos incluem opções que são representados por uma palavra inteira. Para instruir um comando a usar uma palavra inteira como uma opção, você geralmente a precede com um hífen duplo (--). Por exemplo, para usar a opção de ajuda em muitos comandos, você digita --help na linha de comando. Sem o hífen duplo, as letras h, e, l e p devem ser interpretadas como opções separadas. (Há alguns comandos que não seguem a convenção de hífen duplo, usando um único hífen antes de uma palavra, mas a maioria dos comandos usará hífens duplos para as opções de palavras.)
	$ ls --color
	Os comandos são, em geral, em letras minúsculas. É importante lembrar que a linha de comando é case sensitive, isto é, diferencia letras maiúsculas de minúsculas. Portanto, “echo" e diferente de “Echo", que são diferentes de \ECHO". Isso também vale para nomes de diretórios e arquivos. 
Além das opções, é possível adicionar argumentos aos comandos, como nomes de arquivos ou caminho de diretórios. Veja um exemplo de comando com argumento a seguir.
	$ ls /etc # exibe o conteúdo do diretório etc localizado dentro do raiz (/) 
Navegação entre diretórios
O comando cd (change directory) permitirá quevocê altere os diretórios e percorra o sistema de arquivos. Para navegar por vários níveis de diretório de uma só vez, especifique o caminho completo do diretório
	$ cd / # navega no diretório raiz
A navegação entre os diretórios pode ser feita de duas maneiras, utilizando o caminho absoluto ou o caminho relativo. O caminho absoluto quando nos referimos ao diretório para ir a partir da raiz.
	$ cd /var/cache/bind # caminho absoluto 
Já o caminho relativo, indica para onde você deseja ir a partir de onde você está.
	# pwd 
/home/tux 
# cd ../../var/cache/bind 
O “.” e “..” são links que sempre se referem: 
. Diretório atual 
.. Diretório anterior 
O comando cd também permite alguns atalhos rápidos, conforme apresentado a seguir.
	$ cd ~ # navega até o seu diretório pessoal
	$ cd - # volta ao diretório anterior
	$ cd .. # volta um nível na hierarquia de diretórios
	Você pode digitar os comandos e nomes de arquivos ou diretórios pela metade e depois pressionar \Tab". O shell “tentará completar" o que falta para você. Se houver mais de uma opção para completar o que foi digitado, as alternativas possíveis serão mostradas. 
 
Obtendo ajuda
Os comandos ficam armazenados normalmente dentro de /usr/bin, /usr/sbin, /bin, /sbin, /usr/local/bin e /usr/local/sbin. Porém, isso não impede que sejam armazenados em outros diretórios. Portanto, podemos utilizar os comandos digitando o caminho completo deles, conforme exemplo a seguir:
	# /bin/echo “Ola Mundo”
Ou podemos digitar apenas o comando, sem seu caminho:
	# echo “Ola Mundo”
Mas então, como o sistema sabe o local desses binários (comandos)? Utilizando uma variável de ambiente chamada PATH. Ela possui todos os diretórios onde os binários podem estar armazenados. Para consultar esses diretórios, você pode utilizar o comando “echo”.
	# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Procurando por Comandos
Existem várias formas de procurarmos comandos dentro dentro do sistema. Nesse caso já que não temos pistas, podemos usar o comando apropos. Esse comando procura determinada palavra em todos os comandos do sistema e manuais. Por exemplo, se quisermos encontrar um comando para adicionar um usuário ao sistema, podemos tentar buscar pela palavra user.
	# apropos user
Porém, antes de utilizarmos um comando, precisamos entender onde esse comando está e como ele funciona. O comando which mostra onde está o binário, conforme segue.
	# which useradd
	# whereis useradd
Funcionamento dos Comandos
Através da própria linha de comando é possível obter ajuda e informações a respeito dos comandos. O comando man (manual) mostra uma página de manual para um determinado comando. Essa é uma ótima opção para descobrir a função, os argumentos e as opções aceitas para modificar determinado comando.
 
	$ man [comando]
	$ man ls exibe o manual do comando ls
Para sair de uma pagina de manual, basta digitar q".
Você pode usar a opção --help com a maioria dos comandos para ver as opções e argumentos que eles suportam: 
	$ [comando] --help
	$ hostname --help
	Além do comando man e do –help, existe um site que pode auxiliar na busca de ajuda na syntaxe dos comandos: https://explainshell.com/
Gerenciamento de arquivos
Para os sistemas Linux, o gerenciamento de arquivos é uma atividade mais complexa do que no ambiente Windows. Isso ocorre pela necessidade de se conhecer os detalhes de cada um dos vários tipos de sistemas de arquivos disponíveis. Além de alguns comandos não existirem em modo gráfico, apenas em modo de terminal. Porém é possível afirmar que, independente do sistema de arquivos, a organização dos diretórios é a mesma para todos, inclusive as definições e restrições nos nomes de arquivos.
Tipos de arquivos 
Veja na tabela seguinte os tipos de arquivos do Linux.
Tabela 1 - Arquivos do Linux
	Tipo
	Descrição
	Arquivos Comuns
	Suportam qualquer tipo de dado, seja ASCII, Unicode, arquivos comprimidos e até os programas executáveis (também chamados de arquivos binários).
	Diretórios
	São arquivos especiais que contém os nomes dos arquivos que estão armazenados ou organizados como um grupo. 
	Links 
	Um link é um arquivo que faz uma referência a outro arquivo ou diretório dentro do sistema de arquivos. Esta característica permite que um arquivo esteja em dois ou mais lugares ao mesmo tempo, na sua localização original e no lugar referenciado pelo arquivo de link. Há dois tipos de arquivos de links: O hard link cria novos nomes para um arquivo, associando assim dois ou mais para um mesmo arquivos. O soft link, ou link simbólico é o conjunto de arquivos que fazem referência ao arquivo original, contendo o caminho completo até o mesmo.
	Device 
	São arquivos especiais que representam dispositivos no sistema, como um disco rígido, por exemplo.
	Sockets
	São arquivos utilizados para comunicação entre processos, sendo estes processos executados na mesma máquina ou então em outro computador dentro de uma rede.
	Pipes 
	São arquivos utilizados para intercomunicação entre processos, normalmente, processos locais.
O Linux marca alguns tipos de arquivos, conforme abaixo:
arquivos executáveis possuem um * no final do nome;
arquivos de backup possuem um ~ no final do nome;
diretórios são marcados com um / no final do nome;
arquivos do tipo link simbólico possuem um @ no final do nome;
arquivos do tipo socket possuem um = no final do nome;
arquivos do tipo pipe possuem um | no final do nome;
diretórios ocultos possuem um . antes do nome.
	Para visualizar estes caracteres nos nomes dos arquivos, digite ls -F 
Comandos básicos de manipulação de arquivos e diretórios
Os comandos de manipulação de arquivos e diretórios implementam uma das mais importantes funções em qualquer sistema operacional. Por exemplo, funções como criar arquivos, removê-los e procurá-los são de vital, importância para o uso do sistema. A seguir serão apresentados os principais comandos de manipulação de arquivos e diretórios do linux.
Criando arquivos - touch
O comando touch serve para dois fins: criar um novo arquivo (vazio), ou atualizar a data e hora de acesso e modificação de arquivos existentes.
	$ touch [nomedoarquivo] 
	A T E N Ç Ã O
O GNU/Linux não faz distinção de arquivos por conta de suas extensões. Programas específicos as utilizam para saber proceder com a forma correta de manipulá-los.
Vendo o conteúdo de um arquivo
Com o cat, é possível visualizar o conteúdo de um ou mais arquivos. 
	$ cat [nomedoarquivo] 
Tanto o comando tail, quando o head, exibem na tela as 10 primeiras linhas (head) ou as 10 últimas linhas (tail) de determinado arquivo. 
	# head /etc/passwd
# tail /etc/passwd 
O more é bem semelhante ao comandos less, porém ele permite visualizar o conteúdo com “paginação”. Então toda vez que você pressionar um tecla, ele mudará de página.
	$ less [nomedoarquivo] 
	$ more [nomedoarquivo] 
Copiando arquivos e diretórios - cp
O comando cp (copy paste) é utilizado para se fazer cópias tanto de arquivos quanto de diretórios. Portanto, o comando necessita de um arquivo de origem, o qual será copiado, e de um destino, local onde será colocado a sua cópia.
	$ cp [opção] origem destino 
No exemplo a seguir o arquivo1 que está no diretório corrente é copiado para o diretório /tmp.
	$ cp arquivo1 /tmp 
Quando um diretório for copiado, é desejável que todo seu conteúdo também seja copiado. Esse conceito é conhecido como cópia recursiva e é representado pela opção -R. No exemploum diretório é copiado, incluindo seus subdiretórios, para dentro de outro diretório.
	$ cp -R /tmp /home 
Movendo arquivos - mv
O comando mv (move) move ou renomeia arquivos ou diretórios. Ele possui sintaxe de uso similar ao cp. A origem pode ser um arquivo ou diretório. O destino é o local para onde está sendo levado a origem ou o novo nome dado. Porém no uso do mv não é necessário indicar a recursividade. 
	$ mv [opção] origem destino 
No exemplo o arquivo2 é movido para dentro do /tmp, mas com um nome novo que, nesse caso, é chamado de arquivo_novo.
	$ mv arquivo2 /tmp/arquivo_novo 
Criando diretórios - mkdir
O comando mkdir (make directory) serve para a criação de diretórios. Um diretório é um local que serve de armazenamento para outros diretórios ou arquivos, criando-se assim, uma estrutura organizada. No exemplo a seguir o diretório pasta1 é criado no diretório corrente.
	$ mkdir pasta1 
Removendo arquivos e diretórios - rm
Para remover um diretório use o comando rmdir conforme segue
	$ rmdir [opção] diretório 
A função do comando rm é a de remoção de arquivos, mas se trabalhado com a recursividade, o mesmo poderá servir para deletar diretórios vazios ou não. 
	$ rm [opção] arquivo/diretório 
Administração de usuários
Administrar usuários significa criar, remover, bloquear, etc., as contas dos usuários. Na maioria dos sistemas operacionais você pode criar usuários, e atribuir a eles perfis com características especiais. Os tipos de usuários podem ser divididos basicamente em "usuário" e o "administrador". No Windows podemos definir vários usuários como Administradores. 
No Linux, existe apenas um administrador, o superusuário chamado root. Portanto este usuário tem todos os privilégios e pode alterar tudo que há no sistema. Porém, podemos colocar permissões especiais em determinados comandos para outros usuários. No Linux, também temos um tipo de usuário que é chamado de usuário de sistema, ele responsável pelos serviços do sistema. Então se eu instalar um apache, um mysql da vida, ele vai ter um usuário para casa serviço deste e controlar essa aplicação. Por fim,á os usuários comuns que são usuário que não tem privilégios de administrador, aqui no caso o Tux. Portanto No GNU/Linux (e no Unix em geral) existem 3 tipos de usuários:
Usuário Administrador que é apenas o ROOT;
Usuário de Sistema responsáveis pela Aplicações
Usuário Comum que possui privilégios limitados.
No momento da instalação do Ubuntu Server, a senha digitada é a do usuário que criamos e não do root. No entanto, esse usuário possui privilégios para executar todos os comandos de administração. Porém esse privilégio não o torna um (root). Vamos aprender como utilizar root. Mas, primeiro precisamos conhecer os comandos o “su” e o “sudo”. 
Tabela 9 - Comandos “su” e “sudo”
	su (switch user)
	 permite você se logar como algum usuário. Sintaxe: su [opções] [usuário]
Onde usuario é o nome do usuário que deseja usar. Se não digitado, é assumido o usuário root. 
	sudo (superuser do)
	permite dar privilégios temporários de root para o seu ou outro usuário. Todo usuário que estiver contido no grupo "sudoers" poderá se utilizar do "sudo". 
Conta de root 
No Ubuntu, o root vem desabilitado por padrão. Para ativá-lo, você deve definir uma senha para ele.
	$ sudo passwd root
password: (digite a senha criada na instalação)
New Password Unix: (digite a senha que será do root)
Repeat Password Unix: (repita a senha que será do root) 
Pronto, você acaba de criar senha para o root ao definir a senha, a conta de root é ativada e você passa a poder usá-la normalmente. Para logar como root digite:
	$ su
password: (digite a senha do root) 
Digite exit quando desejar retornar a identificação de usuário anterior:
	$ exit
Se você habilitou a conta de root e agora quer desabilitar, use o seguinte comando
	$ sudo passwd -l root 
Comando sudo
O superusuário pode fazer tudo. Portanto, trabalhar diariamente como superusuário pode ser perigoso. Você pode digitar o comando incorretamente e derrubar o sistema. Para resolver esse problema, você pode logar em sua conta de usuário comum e, se desejar executar algum comando, com privilégios de superusuário basta utilizar o comando sudo. O exemplo a seguir atualiza a lista de pacotes.
	# apt-get update
A senha que o sudo pede, por padrão, é a sua senha de usuário comum. Esta é uma forma de o administrador do sistema compartilhar privilégios administrativos limitados a outros usuários, sem revelar a senha de root. 
Quando você executa uma aplicação como root no Ubuntu, utilizando o sudo, a sessão não pedirá senha nos próximos 15 minutos. Essa é a configuração padrão, que muitos acham inseguro, pois aplicações suspeitas podem agir sobre arquivos do sistema neste intervalo. Você pode mudar esse padrão abrindo o arquivo sudoers para editá-lo:
	# nano /etc/sudoers 
Adicione a seguinte linha ao final do arquivo:
	$ Defaults:nome_de_usuario timestamp_timeout=0 
Substitua nome_de_usuario pelo nome do seu usuário. O número 0 significa que o tempo em que o sistema não pedirá senha é de 0 minutos (você pode modificar de acordo com suas preferências). Você também pode fazer o sudo pedir a senha de root ao invés da do seu usuário. Adicione a palavra-chave rootpw na linha que começa com Defaults do arquivo /etc/sudoers.
Criando contas de usuários
Há duas formas de criar as contas de usuários. A primeira é por meio do useradd. Para acessar esta opção você terá que passar alguns parâmetros para a criação do usuário. A segunda maneira é mais fácil, utilizando o comando adduser. Desta forma, o sistema solicita os dados do usuário.
O comando adduser, utiliza o arquivo /etc/adduser.conf como parâmetro para criação do usuário, então quando um usuário é adicionado pelo adduser, ele já vem configurado na sua home e no seu interpretador do Shell (terminal). Diferente do useradd que apenas adiciona o usuário em baixo nível sem nenhum tipo de tratamento, se não for especificado durante sua adição (utilizando parâmetros). 
	# adduser <nome do usuário>
Mas como o sistema conseguiu criar essa home? Ele conseguiu criar essa home porque o próprio sistema faz uma cópia de um outro diretório para cá: o /etc/skel/. Esse diretório tem todas as informações padrões dos usuários. Portanto, toda vez que é criado um novo usuário, e ele precisa criar uma home, ele copia o /etc/skel/ inteiro para a home desse usuário. Então, se você quiser deixar algo padrão para todos os novos usuários, basta vocês acrescentarem no /etc/skel. Aqui no caso só vai ter arquivo oculto, nao vai aparecer nada.
Quando o usuário é adicionado no sistema utilizando o adduser, ele usa o diretório /etc/skel para criar a home do usuário. Caso você queira alguma configuração padrão para todos os novos usuários, você deve alterar o /etc/skel. Como saber qual é a home do usuário atual? Existe uma variável global chamada HOME com este valor:
# echo $HOME
É possível utilizar o comando useradd com outros parâmetros para adicionar o usuário já pertencendo à um grupo específico e criar a home do usuário automaticamente. Se utilizarmos a opção -m, também será criada uma pasta para o usuário dentro de /home.
	# useradd -m tux
# useradd ­m ­g GRUPO USUARIO
Alterando contas de usuários 
Para realizar alterações nas contas de usuários.
	# usermod <opções> conta do usuário
Tabela 11 - Opções de alteração nas contas
	Opções
	-d
	Altera o diretório home do usuário.
	-c
	Altera o número do grupo do usuário..
	-g
	Altera o número do grupo do usuário.
	-s
	Altea o Shell do Linux.
	-L
	Usado para bloquear a conta do usuário.
	-U
	Desbloqueia a conta do usuário.
Para alterar ou criar senhas de usuários, utilize:
	# passwd <usuário> 
Dessa forma, o sistema irá solicitar uma nova senha para o usuário. Nota: o root pode alterar a senha de todo equalquer usuário, mas o usuário altera apenas a sua própria senha.
Remoção de uma conta de usuário
	$ sudo userdel <opções> conta do usuário	
Outros comandos 
	$ id usuário utilizado para verificar informações do usuário.
$ groups <usuário> exibe grupos de um determinado usuário.
$ users exibe usuários ativos no sistema. 
Arquivo de usuários
E como saberemos se o usuário realmente existe no sistema depois de criado? Existe um arquivo chamado passwd, que contém informação de todos os usuários cadastrados no sistema. 
Para consultar um usuário é possível utilizar o comando getent passwd:
	# getent passwd root 
root:x:0:0:root:/root:/bin/bash
 No Linux as contas são armazenadas no arquivo chamado passwd que está localizado “/etc/passwd”. Este arquivo possui a conta do usuário, nome, grupo, diretório home, etc. Para acessá-lo digite os seguintes comandos.
	$ nano /etc/passwd
Analisando a primeira linha da vemos que cada informação do arquivo passwd é separada por “:”.
Figura 2 - Detalhes do arquivo passwd
Tabela 10 - Detalhamento do arquivo passwd
	Login
	Nome da conta do usuário para entrar no sistema. 
	X
	Este“x”representa a senha do usuário. Caso tenha um “x” é porque a senha está registrada no arquivo /etc/shadow .Colocar neste campo um asterisco "*" é a maneira típica de desabilitar uma conta para evitar que seja utilizada.
	Id do usuário (UID)
	Identificador de usuário, o número que o sistema operacional utiliza para propósitos internos. Ele não precisa ser único.
	Id do grupo
(GID)
	O quarto campo é o campo de identificador do grupo. Este número identifica o grupo primário do usuário; todos os arquivos que forem criados por este usuário pertencerão inicialmente a este grupo.
	Gecos
	O quinto campo, chamado campo Gecos, é um comentário que descreve a pessoa ou a conta. Tipicamente, é um conjunto de valores separados por vírgulas, incluindo o nome completo do usuário e detalhes para contato. 
	Diretório
home
	Faz referência ao nome da pasta criada para o usuário.
	Shell
	Indica qual Shell o usuário utilizará para a execução de suas aplicações. Por padrão é utilizado o“/Bin/bash”, mas podemos utilizar outros Shell. Se colocarmos a expressão false, exemplo“/Bin/false”, o usuário não terá permissão para acessar o sistema.
Em relação aos tipos de usuários:
O usuário root sempre vai ser UID “0”; 
O usuário do sistema, como por exemplo o usuário que gerencia determinado serviço como o Apache, receberá um UID entre 100 e 999; 
Os usuários comuns do sistema receberam o UID 1000 ou maior. 
Como você pode observar, a senha do usuário é representada por um X. Isto acontece porque este arquivo é muito utilizado para verificação de nome de usuário, pasta home e outras informações. Dessa forma, a senha mesmo estando criptografada, tornou-se vulnerável e não é mais armazenada em passwd. O arquivo /etc/shadow é usado para armazenar as senhas dos usuários criptografadas, além de informações sobre datas de expiração e validade das contas. Esse arquivo somente pode ser lido pelo usuário root ou membros do grupo shadow, possuindo permissões bem restritivas.
	$ sudo nano /etc/shadow
Administração de grupos 
Os grupos dos usuários facilitam as configurações de permissões de acesso aos diretórios e arquivos. Uma vez permitido a um grupo acessar um diretório, você estará dando permissão para um conjunto de usuários cadastrado neste grupo. O arquivo responsável por guardar os grupos é o group, localizado em “/etc/group”. Assim como o arquivo de usuários, cada informação do arquivo group é separada por “:”.
 Tabela 12 - Informações do arquivo group
	Nome do grupo
	Faz referência ao nome dado ao grupo de usuários.
	X
	Faz referência à senha que por ventura o grupo venha possuir. As senhas dos grupos estão no arquivo“gshadow”, localizados em“/etc/gshadow”.
	ID do grupo
	Faz referência a um número único para código do grupo. Este número é o mesmo contido no arquivo passwd.
	Usuários do grupo
	Faz referência a todos os usuários cadastrados no grupo.
Criação de grupos - groupadd
	 $ groupadd <grupo> 
 Remoção de grupos - groupdel
	$ groupdel <nome do grupo>	
Modificação de grupos - groupmod
	$ groupmod <opções> grupo
Permissões de arquivos e diretórios
As permissões de acesso aos arquivos em sistemas Linux é implementada de forma diferente do que nos ambientes Windows. Quando executamos o comando “ls -l /” nos são mostrados todos diretórios e arquivos na raiz do sistema, é fácil identificar nessas listagens o nome, tamanho, data e dono dos diretórios e arquivos. Os 10 primeiros caracteres das linhas listadas pelo “ls -l” definem precisamente o que os usuários de cada classe podem fazer com seus arquivos. Esses caracteres são chamados de modos de permissão dos arquivos e se dividem em 4 grupos com 1, 3, 3 e 3 caracteres:
Figura 3 - Modos de permissão dos arquivos
O primeiro caracter define o tipo de arquivo que pode ser:
“-” : significa um arquivo normal.
“d” : significa um diretório.
“l” : significa um ‘link’ simbólico.
Os outros 9 caracteres devem ser separados em 3 grupos de 3 caracteres como o exemplo acima, sendo:
permissões de acesso do dono do arquivo (normalmente quem cria ou é definido pelo root);
permissões de acesso do grupo ao qual o arquivo pertence;
permissões de acesso aos demais usuários.
Para cada tipo de categoria acima, há três tipos básicos de permissões:
r=read (leitura)
w=write (gravação, alteração, deleção)
x=execute (execução) 
OBS: Permissão negada é indicada com um “-“.
	➤ Vamos analisar!
 drwxr-xr-x 2 root root 3072 2018-01-29 10:13 bin
Observando os detalhes do diretório “bin” temos as permissões drwxr-xr-x , que podemos interpretar como:
tipo = d (diretório)
dono = rwx (permissão total)
grupo = r-x (permissão de leitura e execução, não pode gravar nem deletar)
outros = r-x (permissão de leitura e execução, não pode gravar nem deletar)
O primeiro campo apresenta o permissionamento do arquivo listado, ele é dividido da seguinte forma:
Sendo que o significado de cada letra é:
r – read (leitura), representado por 4;
w – write (escrita), representado por 2;
x – execute (execução), representado por 1.
Por padrão, todos os arquivos que são criados no Linux, não recebem permissão de execução para aplicarmos. Para tal permissão basta executar:
# chmod +x /root/mapeamento.sh
Desta forma, é acrescentado o “x” de execute para todos os usuários. Neste caso, ele irá executar todos os comandos que vimos nessa aula de forma automática.
Também é possível aplicar o permissionamento de execução utilizando a forma octal, uma vez que sabemos que gostaríamos de aplicar, por exemplo quando o root cria um arquivo, por padrão ele recebe o permissionamento:
Neste caso este arquivo possui o permissionamento 644, se quisermos adicionar execução para o usuário dono, o grupo dono e os outros bastaria acrescentar 1 em cada campo:
# chmod 0755 /root/mapeamento.sh
Permissionamento Especial
Além do permissionamento comum de leitura, escrita e gravação também existe o permissionamento especial que são utilizados para as finalidades abaixo:
SUID bit – Utilizado em binários, serve para herdar as permissões do dono do arquivo ao executar. Exemplo:
-rwsr-xr-x 1 root root 54192 Nov 20 2014 /usr/bin/passwd
O binário passwd deve ser executado por qualquer usuário, porém estes usuários não têm acesso ao arquivo /etc/shadow, logo eles precisam executar este binário com a herança do dono que é o “root”.
SGID bit – Usado em diretórios para que os novos arquivos herdem o mesmo grupo dono do diretório.
STICKY bit – Usado em diretórios para que apenas o dono dos arquivos possam deletar os mesmos.
Gerenciamento de permissões
O gerenciamento de permissões de acesso nos sistemas Unix/Linux poderá ser realizado em linha de comando, por meio das ferramentas chmod e chown. A primeira permitea mudança das permissões de acesso com relação à leitura, escrita ou execução, tanto para o dono, grupo ou demais usuários. Já a ferramenta chown, permite a mudança na definição do dono do arquivo ou do grupo do arquivo. Vamos aprender de modo simples a usar as permissões que muitas vezes é bastante complicado. Tendo em mente que o conceito de binário significa 0 = desligado e 1 = ligado, vejamos como fica na tabela abaixo:
Tabela 13- Permissões para acesso aos arquivos e diretórios do Linux
	String
	Binário (rwx)
	Decimal
	Permissões
	---
	000
	0
	Nenhuma permissão
	--x
	001
	1
	Executar
	-w-
	010
	2
	Gravar
	-wx
	011
	3
	Gravar e executar
	r--
	100
	4
	Ler
	r-x
	101
	5
	Ler e executar
	rw-
	110
	6
	Ler e gravar
	rwx
	111
	7
	Ler, gravar e executar
Feito isso, sabemos que um arquivo ou diretório possui 3 modos de permissão. Uma permissão para o dono do arquivo ou seja, quem o criou, uma outra permissão para o grupo do usuário dono do arquivo, e outra permissão para qualquer outro usuário ou grupo.
O comando chmod
O comando para definir permissões para um arquivo é o chmod. Por exemplo, temos um diretório chamado mp3 que eu quero permissão total para o dono [eu], permissão de apenas leitura para o meu grupo e nenhuma permissão para o resto do mundo. 
	$ chmod 740 /mp3 
Porém, neste exemplo eu apliquei a permissão somente ao diretório, e não a todo o conteúdo dele. Para que todo o conteúdo, incluindo sub-diretórios, tenham a permissão que estou aplicando, usaremos o argumento recursivo:
	$ chmod -R 740 /mp3
Lembra do “r”, “w” e do “x” falado acima? Também posso usar o chmod para aplicar permissões diretas a um arquivo ou diretório. Neste caso usaremos as letras.
	$ chmod +x arquivo permite execução por qualquer usuário 
	$ chmod +w arquivo permite escrita por qualquer usuário
	$ chmod +rw arquivo permite leitura por qualquer usuário 
	$ chmod -w arquivo desabilita a possibilidade de escrita no arquivo
O comando chown
O comando chown altera o dono e o grupo de um arquivo. A sintaxe básica do chown é:
	$ chown dono:grupo [arquivo ou diretório]
Vamos entender isso: eu tenho um arquivo chamado teste.txt que ao executar o ls -l, percebo que o dono é o usuário aluno e o grupo é classe. Caso eu queira mudar o grupo do arquivo teste.txt de classe para admin, executaria o chown assim:
	$ chown aluno:admin teste.txt
E se eu quisesse alterar o dono e o grupo do teste.txt para o root (dono root e grupo root)? Faria assim:
	$ chown root:root teste.txt ou
$ chown root: teste.txt
E se quiséssemos alterar o dono/grupo de um diretório? Podemos? Sim, claro. Porém devemos atentar que, se este diretório possuir sub-diretórios e eu quiser alterar o dono/grupo de tudo que está lá dentro, devo usar o argumento recursivo, assim
	$ chown -R root: pasta/
Além do comando chown para trocar o Dono do Arquivo, temos também o chgrp para trocar o Grupo Dono:
	$ chgrp root test.txt
Gerência e administração de Recursos
Para resolver a primeira etapa, info da distro. Dependendo da distro, existem alguns comandos que permitem a gente consultar essa informação. Porém, podemos consultar o arquivo /etc/os-realse que independente da distribuição, ele sempre irá existir e trazer qual a distribuição que está sendo usada.
	Less /etc/0s-release q
Para informações dos recursos da máquina, podemos utilizar o conteúdo dentro do diretório /proc. O diretório /proc possui 3 tipos de conteúdo:
Subdiretórios de processos; (todos os processos que estão rodando na máquina no momento vão estar na forma de subdiretórios em /proc)
Arquivos Informativos; (podemos consultar memória ram, processador, tipo de filesystem suportado, as partições que ele reconheceu)
Parâmetros alteráveis
Para consultar informações do processador
	less /proc/cpuinfo
Para saber quantos núcleos tem essa maquina
	cat /proc/cpuinfo | grep processor
Para verificar as informaçõe da RAM
	less /proc/meminfo
Porém, podemos perceber que as as informações vem em kbytes. Isso acontece por que o SO usa o /proc para consultar informações e portanto elas nao estao pronto para para serem consultadas por nós humanos. Existem outras formas de consultarmos informações do recursos do PC, como veremos a seguir.
Gerenciamento de Memória
Podemos usar o comando free para exibir a quantidade de memória livre e usada no sistema. O free exibe a quantidade total de memória física e de swap usada no sistema, bem como os buffers e caches usados ​​pelo kernel. 
	$ free
É muito comum termos que consultar informações do sistema utilizando comandos, normalmente a saída do comando trás informações que não são usuais para nós humanos, para isso muitos comandos possuem parâmetros como “-h” de Human, no caso do “free” ele sempre vai trazer o formato adaptado para Mega, Giga, Tera, etc.
	$ free -h
Gerenciamento de processos
O Linux é um sistema multitarefa. Isso significa que é possível executar muitos programas ao mesmo tempo. Cada instância de um programa em execução é referida como um processo. Por exemplo, pode haver um determinado programa no sistema. Mas se o programa estiver sendo executado por 15 usuários diferentes, esse programas será representado por 15 processos diferentes. E, cada processo será identificado por um número de ID exclusivo (PID) e estará associado a uma conta de usuário e a uma conta de grupo. O Linux fornece ferramentas para, a partir de um shell, carregar processos, listar processos em execução, monitorar o uso do sistema e parar (ou eliminar) processos quando necessário. 
Para consultar as informações de processo, nós utilizamos ferramentas como ps ou top ao invés de investigar cada subdiretório dos processos
Listando processos com ps
O utilitário mais comum para verificar os processos em execução é o comando ps. Use-o para ver quais programas estão em execução, os recursos que eles estão usando e quem os está executando. 
	$ ps
Listando e alterando processos com top
O comando top por padrão exibe os processos ordenados por quanto tempo de CPU eles estão atualmente consumindo (mas você também pode ordenar por outras colunas). 
	$ top
Informações gerais sobre o sistema aparecem na parte superior da saída de top, seguidas por informações sobre cada processo em execução. No topo, você pode ver há quanto tempo o sistema está ativo, quantos usuários estão conectados nele e quanta demanda tem havido sobre o ele no(s) último(s) 1, 5 e 10 minutos. Outras informações gerais incluem quantos processos (tarefas) estão atualmente em execução, quanto da CPU está sendo usado e quanta memória RAM e swap estão disponíveis e sendo usadas. Depois das informações gerais, vêm as listas de cada processo, ordenadas pela porcentagem da CPU sendo usado por cada processo. Todas essas informações são exibidas novamente a cada 5 segundos, por padrão. 
	A T E N Ç Ã O
Se quiser ser capaz de eliminar ou repriorizar processos, você precisará executar top com o usuário root. Se só quiser exibir processor, talvez, eliminar ou mudar seus próprios processos, você pode fazer isso como um usuário regular.
Uma prática comum é usar top para encontrar processos que estão consumindo muita memória ou poder de processamento e, então, agir sobre esses processos de alguma forma. Você pode usar top para eliminar (terminar completamente) ou repriorizar (“renice”) esse processo. 
Repriorizando um processo
Observe o ID do processo que você deseja repriorizar e pressione r. Quando a mensagem do PID para repriorizar aparecer, digite o ID do processo que você deseja repriorizar. Quando solicitado a informar o valor para repriorizar o PID (Renice PID to value): digite um número entre –19 e 20.
Eliminando um processo
Observe o ID doprocesso que você deseja eliminar e pressione k. Digite 15 para terminar de forma limpa ou 9 para simplesmente eliminar o processo imediatamente. 
Processos em primeiro e segundo plano
Há várias maneiras de colocar um programa ativo em segundo plano. Uma delas é adicionar uma letra E comercial (&) ao final de uma linha de comando quando você executá-lo. Para parar a execução de um comando e colocá-lo em segundo plano, pressione Ctrl+Z. Depois que o comando parar, você pode trazê-lo de volta para o primeiro plano para que seja executado (o comando fg) ou iniciá-lo rodando em segundo plano (o comando bg). 
Gerenciamento de Redes
Obtendo informações da rede
O comando hostname mostra ou muda o nome de seu computador na rede. 
	# hostname 
 
O comando ifconfig é usado para configurar (e posteriormente manter) as interfaces de rede. É 
usado durante o boot para configurar a maioria delas para um estado usável. 
	# ifconfig -a # lista as informações de suas Interfaces de Rede
 -a — Exibe informações de todas as interfaces de rede ativas ou inativas no servidor. 
O comando mii-tool verifica ou define o status da interface de rede. A maioria dos adaptadores Fast 
Ethernet usa uma MII para auto negociar a velocidade do link e a configuração do duplex. Para verificar a conectividade física da interface podemos executar:
	# mii­-tool enp0s3 
 
O comando route — Permite gerenciar configurações de rotas no sistema. Para verificar o roteador padrão, execute o seguinte comando:
	# route -n 
 
-n — Mostra as rotas definidas, sem resolver nomes. 
O arquivo /etc/resolv.conf é o arquivo de configuração principal do código do resolvedor de nomes. Seu 
formato é um arquivo texto simples com um parâmetro por linha e o endereço de servidores DNS 
externos são especificados nele. Existem três palavras chaves normalmente usadas que são: 
● domain — Especifica o nome do domínio local. 
● search — Especifica uma lista de nomes de domínio alternativos ao procurar por um 
computador, separados por espaços. A linha search pode conter no máximo 6 domínios ou 256 
caracteres. 
● nameserver — Especifica o endereço IP de um servidor de nomes de domínio para resolução 
de nomes. Pode ser usado várias vezes. 
Para verificar os servidores DNS para resolução de nomes, execute o comando: 
	# cat /etc/resolv.conf 
 
O arquivo /etc/hosts faz o relacionamento entre um nome de computador e endereço IP local. 
Recomendado para IPs constantemente acessados e para colocação de endereços de virtual 
hosts (quando deseja referir pelo nome ao invés de IP). Verifique a resolução de nomes manual através do comando: 
	# cat /etc/hosts 
Administrando a Rede
Explorando o comando IP 
O comando ip constitui uma ferramenta extremamente poderosa. Em sistemas Linux, podemos configurar a maioria das necessidades, interfaces de rede, utilizar do arp, políticas de roteamento, túneis de vpn inclusive substituir os comandos ifconfig, arp, route e muito mais. 
Visualize as informações das interfaces de rede: 
	# ip address 
 
	# ip a 
 
Visualize as informações de uma interface de rede específica:
 
	# ip a show enp0s3 
 
Desative e remova a configuração de uma interface de rede com os comandos: 
	#ip link set enp0s3 down
# ip addr del 10.0.2.15/24 dev enp0s3
# ip a show enp0s3
 
Opções do comando ip 
● address — Exibe ips das interfaces de rede. 
● a show <interface> — Exibe o ip de uma interface específica. 
● link set <interface> down — Desabilita uma interface de rede. 
● addr del — Exclui um endereço IP de uma interface específica. 
● addr add a <ip> dev <interface> label <label> — Configura um rótulo para seleção de 
endereço. No exemplo estamos criando uma interface virtual a partir da interface física. 
Configurando IP e Máscara 
O comando dhclient permite efetuar a configuração de uma ou mais interfaces de rede usando o 
protocolo DHCP (Dynamic Host Configuration Protocol). Obtenha configurações automáticas da interface de rede, execute os comandos: 
	# dhclient enp0s3 
 
IP Virtual
A configuração de IP Virtual é uma prática usada quando existe uma limitação de placas físicas, porém uma necessidade de interligar redes com diferentes range de IPs. Você pode criar diversos alias para uma mesma placa. 
Para adicionar a interface virtual enp0s8:0, use o subcomando add do comando ip: 
	# ip add a 10.10.0.20/16 dev enp0s8 label enp0s8:0 
 
Para remover a interface virtual enp0s8:0, use o subcomando del do comando ip: 
	# ip addr del 10.10.0.20/16 dev enp0s8:0 
 
Configurar roteamento 
 
Um computador precisa de um roteador padrão (Gateway) para navegar em outras redes, ou seja, 
para sair para a internet. No Linux, o comando que define de forma temporária o gateway do 
sistema é o ip route. 
Opções do comando ip route 
● route del — Remove uma rota estática. 
● route add — Adiciona uma rota estática. 
Liste as configurações de rota padrão: 
	# ip route show 
 
Remova as configurações de rota padrão:
	# ip route del default 
 
Adicione configurações de rota padrão: 
	# ip route add default via 172.16.100.101 
 
Configurar resolução de nomes 
Name Services Switch 
O arquivo nsswitch.conf (Name Services Switch) é responsável por definir a ordem da resolução de nomes, onde a resolução de rede é uma das opções desse arquivo. 
Opções principais do arquivo nsswitch.conf 
● dns — Lê o arquivo /etc/resolv.conf. 
● files — Lê o arquivo /etc/hosts. 
Podemos alterar a ordem de resolução: 
	# nano /etc/nsswitch.conf 
hosts: dns files myhostname 
 
Após alterar o arquivo, verifique em qual servidor DNS está sendo feita a busca na internet : 
	# cat /etc/resolv.conf
 
Configuração Estática de Rede 
Tudo que vimos até agora, são configurações que podem ser atribuídas através de linha de 
comando (configurações dinâmicas). Porém nosso “host” deve estar devidamente configurado para que, por exemplo, após um “boot”, a máquina mantenha as configurações certas. 
Descrição dos arquivos 
● /etc/network/interfaces — Arquivo usado pelos comandos ifconfig <interface> ifup e ifconfig 
<interface> ifdown, respectivamente para ativar e desativas as interfaces de rede. 
Opções do arquivo /etc/network/interfaces 
● iface lo inet loopback — É usado para configurar a interface loopback (lo) IPv4. 
● iface <interface> inet static — Configura um endereço IPv4 fixo para a interface. 
● address — Endereço IP da Interface de rede (por exemplo, 192.168.1.1). 
● netmask — Máscara de rede da Interface de rede (por exemplo, 255.255.255.0). 
● broadcast — Endereço de Broadcast da interface (por exemplo, 192.168.1.255). 
● network — Endereço da rede (por exemplo, 192.168.0.0). 
● gateway — O gateway é o endereço do computador responsável por conectar o seu 
computador a outra rede. Use somente se for necessário em sua rede. 
● iface <interface> inet dhcp — Este método é usado para obter os parâmetros de 
configuração através de um servidor DHCP da rede através das ferramentas: dhclient, pump 
(somente Kernels 2.2.x) ou dpcpcp (somente kernels 2.0.x e 2.2.x) 
● /etc/hostname — Arquivo lido pelo utilitário hostname para definir o nome de sua estação de 
trabalho. 
● /etc/hosts — Banco de dados DNS estático que mapeia o nome ao endereço IP da estação de 
trabalho (ou vice versa).
/arquio netplan
Config estaticas x dinamicas
Comando route
Hostname -i
Há algum tempo o nosso querido Ubuntu Server mudou consideravelmente a sua forma de configuração de rede padrão, se antigamente nós configurávamos as nossas placas de rede em /etc/network/interfaces, à partir do Ubuntu 18.04 LTS (Server ou não) as configurações de rede devem ser feitas através do "netplan". Aprenda a fazer essa configuração.
Para configurara rede no Ubuntu Server, atualmente, você deve navegar até o diretório /etc/netplan, onde será possível encontrar um arquivo com a extensão .yaml, é nele que você deve fazer os seus ajustes.
Entendendo a formatação e configuração do arquivo .yaml de rede
Eu sei, "old habits die hard", mas o novo formato permite um único tipo de configuração de rede em todas as versões do Ubuntu disponíveis, do seu desktop até a "internet das coisas", e bom, mesmo que você não goste muito da ideia de mudar, francamente, não há muito que você possa fazer nesse sentido, porém, a configuração atual é, na verdade, extremamente simples.
Dica: Para editar estes arquivos eu vou usar o editor de textos "nano", no meu caso a sintasse para abrir o arquivo de configuração seria:
sudo nano /etc/netplan/50-cloud-init.yaml
Verifique qual o nome do seu arquivo de configuração de rede com:
ls /etc/netplan/
Esta é a imagem de um arquivo de configuração de um dos meus servidores:
O arquivo por si só já é identado, então, recomendo tomar esse cuidado na organização, isso vai fazer com que seja realmente simples de entender tudo.
Indicado com a seta, você tem o nome (ID) da sua placa de rede.
Logo abaixo você tem:
- Endereço do IP que você quer para a máquina, seguido de uma máscara de sub-rede, declarada nesse caso com um simples "/24" (255.255.255.0);
- gateway4 para IPV4, se você for usar IPV6, terá de declarar como "gateway6";
- dhcp4 para IPV4, suportando "verdeiro" ou "falso" para DHCP ativo ou não, com as palavras em Inglês "true" e "false", asssim como o gateway, caso você vá utilizar IPV6, ele deve ser declarado como "dhcp6";
- "optional" define se essa placa de rede deve ser aguardada (false) ou não (true) na hora do boot para iniciar o sistema;
- Por último você deve configurar o seu DNS sob "nameservers". Observe a identação, você pode adicionar mais de um DNS na mesma linha, apenas separando-os por vírgula, é bem simples de entender observando o exemplo acima.
Observe, na imagem acima também, como é feita a organização das informações para que tudo saia corretamente. Antes de fazer qualquer alteração nesse arquivo, você pode, é claro, fazer um backup dele.
Configurando DHCP no arquivo de Netplan
A configuração de rede do Ubuntu Server pode ser feita no momento da instalação, se você marcar para ele usar DHCP ou ignorar a configuração de rede, esse será o comportamento padrão do sistema, porém, caso você tenha alterado alguma configuração ou queira fazer algum tipo de teste, o DHCP padrão do Ubuntu Server se configura dessa forma:
E claro, você pode mesclar as coisas e adicionar configurações extras, como usar um DNS específico.
Dica: Como descobrir o ID da minha placa de rede?
Como você deve ter percedido, é necessário declarar a sua placa de rede para então fazer as configurações adequadas. Geralmente o próprio Ubuntu adincionará essa identidade ao arquivo por padrão se as placas estiverem no servidor na hora da instalação, mas em caso de dúvida, use o comando:
ip address
Mesmo sem internet no computador você verá um resultado semelhante a esse, observe o local onde a placa de rede é exibida:
Se precisar estudar mais o netplan para fazer configurações menos comuns, basta consultar o manual:
man netplan
No site da Canonical você encontra uma versão web desse manual.
Testando e aplicando o "seu plano de rede"
O "Netplan" possui alguns recursos interessantes, como uma ferramenta para testar se a configuração está funcional, antes de você aplicar mudanças:
sudo netplan try
Dessa forma o "Netplan" tentará implementar a suas modificações no sistema, caso algo dê errado, ele vai te avisar. Nesse caso, eu escrevi a palavra "true" errado propositalmente para mostrar o resultado, veja:
Ajustando esse erro e repetindo o teste:
Repare que agora o meu arquivo de configuração foi aprovado como "funcional", eu posso aplicar a modificação ao sistema simplesmente pressionando "enter" novamente, caso contrário, em 2 minutos o arquivo será revertido ao padrão anterior.
Caso você já saiba fazer as modificações e simplesmente queira aplicar direto as suas configurações, basta rodar:
sudo netplan apply
Como você pode ver, especialmente se você era um dos que constumava fazer ajustes em /etc/network/interfaces, aqui não é necessario reiniciar nenhum serviço ou mesmo o servidor. No entanto, vale a pena observar que caso você edite o seu arquivo (com o nano por exemplo), o salve, e depois reinicie o seu computador, ele vai usá-lo como "netplan" sem a necessidade do "apply".
Uma forma nova de configurar o seu Ubuntu Server
Apesar de eu ter tratado isso como algo novo, esse método já está disponível para as pessoas que vão usar o Ubuntu Server há praticamente um ano e não é necessariamente mais difícil do que o modo antigo, é apenas diferente. De fato, tirando o nome meio esquisito que o seu "yaml" pode ter, o resto é simples até demais.
Espero que o artigo tenha ajudado, se ele lhe foi útil, não esqueça de compartilhar, até a próxima!
 
	# ip -­a
O parâmetro “-a” é para ele exibir todas as interfaces, incluindo as que estiverem desabilitadas. 
Portas de Serviços
As portas servem para encaminhar determinados pacotes para serviços correspondentes. Então, por exemplo, quando um cliente da dexter digitar no navegador dexter.com.br um pacote vai sair pela interface de rede dele, da máquina dele lá do navegador, e vai para o servidor da dexter, com destino a porta 80. Então o servidor da dexter vai receber esse pacote na porta 80, e quem vai estar ouvindo na porta 80? O serviço do apache, que é o serviço do servidor web. E aí o serviço do apache sabe o que fazer com esse pacote, ele sabe como responder essa informação. Então as portas servem para entregar determinado pacote para determinado serviço.
	# ss ­nltpu
-n se eu nao colocar, o ss tenta resolver cada ip para nome, isso leva muito tempo, vale mais a pena colocarmos -n e observarmos apenas os ips
-l quias as portas ele está ouvindo
-t todas portas cujo protocolo seja tcp
U udp
P process
A ordem dos parâmetros é indiferentes
Aqui nao tem nada rodando nesta máquina
O binário ss faz parte do pacote iproute2 (mesmo pacote pacote que contém o binário ip), esse comando serve para apresentar e filtrar as portas que estão abertas e conexões que estão ativas no servidor no momento atual. Os parâmetros mais utilizados são:
n → Para não resolver os nomes, quando o comando é executado sem este parâmetro ele tende a demorar mais, uma vez que ele irá tentar resolver cada IP para nome nos servidores DNS conhecidos;
l → Limita a saída do comando, mostrando apenas as portas que estão sendo ouvidas (listening), não apresentando as conexões ativas no momento; 
t → Mostra as conexões TCP;
p → Exibe o ID do processo vinculado à esta conexão;
u → Mostra as conexões UDP.
Além do comando ss também é possível utilizar o netstat, porém este comando faz parte do pacote net-tools que vem sendo retirado das distribuições, os parâmetros utilizados são os mesmos:
	# netstat ­nltpu
Dispositivos de armazenamento
Antes de pegarmos o espaço em disco, temos que entender o conceito de unidade no linux. No linux, não existe unidade, mas sim ponto de montagem. La no windows, se vc tiver duas partições ele vai criar duas unidades (Letrada D:/ e E:/). Aqui no linux, cada partição eh reconhecida por um arquivo dentro do /dev, e esses arquivos podem ser montados onde vc preferir. Nos sistemas mais atuais ele monta dentro /media
Quando conectamos um dispositivo de bloco em um linux, ele é reconhecido e interpretado como um arquivo dentro de /dev, porém para esse dispositivo ser acessado é necessário que esteja montado em algum diretório, diferente do Windows que reconhece os dispositivos como uma unidade e atribuindo uma letra para acessá-lo.
Logo, no Linux é necessário acessar o ponto de montagem para poder visualizar os arquivos do disco. O comando abaixolista todos os discos conectados no equipamento, mesmo os que não estão montados:
O comando df apresenta apenas o relatório dos dispositivos montado, e o parâmetro -h serve para apresentar os valores em formatos “humanos” como no comando free. Caso exista a necessidade, você pode consultar o tamanho de determinado arquivo utilizando o comando “du”:
# du ­hs /etc
3.6M /etc/
Du -h /var/log/
O parâmetro -h tem o mesmo significado dos demais (human), já o parâmetro -s vem de sumarizar, serve para ele exibir apenas o tamanho total de cada Arquivo.
O Linux possui suporte a diversos dispositivos: disco SCSI, disco SATA, CD-ROM, PEN-DRIVE etc. Estes dispositivo, podem ser formatados como sistema de arquivo padrão do Linux ( EXT4 ou btrFS) ou, ainda, em outro tipo de sistema de arquivo de sua escolha, como os do tipo journaling ou reiserfs, ou os oriundos da Microsoft FAT, FAT16, FAT32 e NTFS. 
Todo dispositivo de armazenamento no Linux é identificado por um arquivo dentro do diretório /dev/. O nome utilizado para o arquivo depende do tipo do dispositivo (SATA, SCSI etc) e de suas partições. Discos rígidos (SCSI ou SATA), mesmo os externos, são nomeados /dev/sda, /dev/sdb, /dev/sdc, etc, na ordem correspondente à que são identificados pelo sistema. 
A primeira partição do disco /dev/sda será /dev/sda1, a segunda partição neste disco será /dev/sda2, assim por diante. O mesmo vale para os demais dispositivos de armazenamento de bloco, como pendrives. Em versões mais antigas do kernel, os dispositivos IDE eram identificados como /dev/hda, /dev/hdb, etc. Nos sistemas Linux mais recentes, desde a versão 2.6 do Kernel, os discos IDE serão identificados como se fossem discos SATA. Já um leitor/gravador de CD/DVD conectado ao primeiro canal IDE será identificado como /dev/sr0. Se conectado ao segundo canal IDE será identificado como /dev/sr1. 
Tabela 4 - Nomeação dos dispositivos de armazenamento e das suas localizações
	Nomeação da localização dos dispositivos:
	/dev – localização do dispositivo;
/sd – faz referência a um disco scsi, sata ou ide.
/sr - faz referência a leitor/gravador de CD/DVD
	Nomeação do Disco 
	/dev/sda – disco no primeiro canal;
/dev/sdb – disco no segundo canal;
/dev/sdc – disco no terceiro canal.
	Nomeação das partições
	/dev/sda1 – primeira partição do disco sda
/dev/sda2 – segunda partição do disco sda
Criando partições e formatando
Como já visto, as partições são criadas preferencialmente na instalação do sistema operacional, mas é possível criá-las, também, após o término do procedimento. Existem diversos programas que permitem criar, listar, apagar e alterar partições. O comando fdisk é um utilitário baseado em texto para visualizar e gerenciar partições do disco rígido no Linux.. Para a execução deste programa utilizam-se alguns parâmetros, conforme a tabela a seguir.
	Tabela 5 - Opções do fdisk para criação de uma nova partição
	Opção
	Descrição
	a
	Ativa partição
	d
	Apaga partição
	l
	Lista as partições ativas no disco
	n
	Nova particição
	p
	Tabela de partição em memória
	q
	Sai do fdisk e não salva as alterações realizadas
	r
	Altera o tipo de partição
	w
	Salva as alterações realizadas no disco
Depois de criarmos partições podemos utilizar alguns comandos para formatar os discos. O mkfS (make filesystem) é o comando utilizado para formatar as partições criadas por meio do FDISK. Acompanhe um exemplo de formatação de uma partição /dev/sda3 com sistema de arquivo EXT4 e com o nome DADOS.
	# mkfs --t ext4 --L dados /dev/sda3
Gerenciando o sistema de arquivos 
Para realizar tarefas importantes como montar e desmontar, verificar a capacidade e a integridade dos dispositivos, diversos programas são utilizados. Nesta sessão, vamos apresentar alguns.
DF - O comando DF verifica o espaço total e a utilização de um sistema de arquivo. 
	# df [opções] <dispositivo>
Tabela 6 - Opções do DF
	Opções 
	Descrições
	-i
	Valores em inodes
	-k
	Valores em KB 
	-h
	Valores em MB e GB
DU - O comando disk usage detalha a utilização do disco por diretórios.
	# du [opções] <arquivo>
Tabela 7 - Opções do DU
	Opções
	Descrição
	-a
	Mostra arquivos e diretórios
	-h
	Mostra em MB e Gb
	-s
	Mostra espaço total ocupado
 
FSCK - O comando FSCK é utilizado para verificar e corrigir erros no sistema de arquivos
	# fsck [opções] <dispositivo>
Tabela 8 - Opções do fsck
	Opções
	Descrição
	-A
	Verifica os sistemas contidos no /dev/fstab 
	-c
	Verifica os setores defeituosos
	-t tipo_sist
	Verifica por tipo de sistema
	-p
	Repara o sistema automaticamente
	-y
	Executa sem realizar perguntas
Montando Dispositivos 
As mídias removíveis se tornaram muito comuns em plataformas de microcomputadores. Para obter acesso a arquivos em dispositivos externos, o sistema operacional deve primeiro ser informado onde, na árvore de diretórios, esses arquivos devem aparecer. Esse processo é chamado de montagem de um sistema de arquivos. Por exemplo, para acessar os arquivos em um HD externo, deve-se informar ao sistema operacional "pegue o sistema de arquivos desse HD e faça-o aparecer em tal diretório". O diretório fornecido ao sistema operacional é chamado de ponto de montagem. Atualmente, a maioria dos sistemas provêem mecanismos de automontagem, onde o sistema faz automaticamente a montagem para o usuário. Entretanto, algumas vezes temos que fazer esse processo manualmente, o que é feito utilizando-se o comando mount.
	/media é o ponto de montagem para mídia removível. Esse diretório contém subdiretórios usados ​​para montar mídias removíveis, como CD-ROMs, HDs, etc.
/mnt é geralmente usado para montar temporariamente os arquivos quando necessário.
O comando mount
O comando mount é utilizado para montar dispositivos após a carga do sistema operacional. No exemplo a seguir é montado um HD externo identificado como /dev/sdc em “ mnt/hdexterno”.
	# mount /dev/sdc /mnt/hdexterno
Para verificar quais sistemas de arquivos estão montados, digita-se apenas:
	# mount 
O comando umount
Este comando faz o contrário do “mount”, ou seja, desmonta o dispositivo montado pelo mount. 
	# umount /mnt/hdexterno
Buscas, Redirecionamento e Expressões Regulares
A busca no Linux é extremamente poderosa quando se tem domínio dos comandos. O comando “find” possui diversos parâmetros, inclusive para tomar ações com os arquivos encontrados. 
	# find /etc -name interfaces
Esse -name é um parâmetro do comando find. 
	# Find - /etc -iname INTERFACESS
Além do find também temos o locate, porém nem sempre ele vai encontrar os arquivos, pois sua indexação não é em tempo real, logo você tem que forçar a atualização da base de arquivos conhecidos por ele antes de efetuar a busca, mas ele é muito mais rápido.
	# updatedb 
# locate interfaces
Como procurar um arquivo que tem determinado parâmetro, determinada configuração? Por exemplo um número ip. Podemos utilizar um comando chamado grep (global regular expression), ou seja, é uma ferramenta para usarmos expressões regulares
Consulta de forma recursiva (diretorios e subdiretorios)
O comando grep (global/regular expression/print) é utilizado para fazer filtro na saída padrão de comandos, ou buscar determinadas palavras em arquivos. 
	# grep - R “eth0” /etc/
Como o seu próprio nome já diz, ele suporta diversos metacaracteres de Expressão Regular, o que pode facilitar quando queremos encontrar determinados termos. Tudo o que casar com a palavra buscada é exibido na tela, como por exemplo para filtrar apenas os IPs do comando “ip a”.
	# ip a | grep inet
Pipe “|” O Pipe serve para redirecionar a saída de determinado comando para outro comando, ele é muito utilizado em conjunto com o grep, pois em muitos casos as saídas dos comandos podem ser grandes, o que dificulta a visualização da informação buscada. Para isso,

Continue navegando