Professional Documents
Culture Documents
Ferreira
Linux essencial
Por trás da interface gráfica
www.tinarede.com.br
Licença
Você pode:
Se você alterar, transformar ou criar outra obra com base nesta, somente poderá
distribuí-la sob uma licença equivalente à original.
Todo e qualquer material disponibilizado por meio deste projeto é revisado, tendo como objetivo
garantir um alto nível de qualidade e excelência. Não nos responsabilizamos de forma alguma por
quebra de direitos autorais ou violação de propriedade intelectual que possa resultar em um ato
considerado ilegal. Cada autor é responsável por responder legalmente por seu material.
www.tinarede.com.br
Sumário
Introdução ........................................................................................................................................ 7
www.tinarede.com.br
3.1.2 man ................................................................................................................................. 24
3.1.3 logout .............................................................................................................................. 24
3.1.4 shutdown, poweroff e halt ............................................................................................... 24
3.1.5 reboot ............................................................................................................................. 25
3.1.6 pwd (print working directory) .......................................................................................... 25
3.1.7 history ............................................................................................................................. 25
3.2 Manipulação de arquivos e diretórios .................................................................................... 26
3.2.1 ls (list) ............................................................................................................................. 26
3.2.1.1 Listando o conteúdo do diretório corrente ............................................................... 26
3.2.1.2 Opções (atributos de listagem) ................................................................................ 26
3.2.1.3 Listar arquivos ocultos ............................................................................................. 27
3.2.2 cd (change directory) ...................................................................................................... 28
3.2.3 cp (copy) ......................................................................................................................... 28
3.2.4 rm (remove) .................................................................................................................... 28
3.2.5 mkdir ............................................................................................................................... 29
3.2.6 rmdir ............................................................................................................................... 29
3.2.7 cat (concatenar) .............................................................................................................. 29
3.2.8 more ............................................................................................................................... 29
3.2.9 cut (cortar) ...................................................................................................................... 30
3.2.10 find ................................................................................................................................ 30
3.2.11 grep .............................................................................................................................. 30
3.2.12 head .............................................................................................................................. 31
3.2.13 tail (lê do fim do arquivo) .............................................................................................. 31
3.2.14 wc (contar) .................................................................................................................... 31
3.2.15 tar (empacotar e desempacotar) .................................................................................. 32
3.2.16 gzip e bzip2 (compactar e descompactar) .................................................................... 32
3.2.17 Outros comandos ......................................................................................................... 33
3.3 Curingas ................................................................................................................................ 34
3.4 Utilizando | (pipe) para direcionar o processamento ............................................................. 34
3.5 Encadeando execuções com ; (ponto e vírgula) e && .......................................................... 35
3.5.1 Exemplos ........................................................................................................................ 35
3.5.2 Redirecionar saída com > ou >> .................................................................................... 35
3.6 Atalhos essenciais ................................................................................................................. 36
3.7 Resumo ................................................................................................................................. 36
www.tinarede.com.br
4.3 O que são permissões ........................................................................................................... 38
4.4 Gerenciamento de usuários e grupos ................................................................................... 38
4.4.1 Criar usuário ................................................................................................................... 39
4.4.2 Editar usuário e senha .................................................................................................... 40
4.4.3 Excluir usuário ................................................................................................................ 40
4.4.4 Criar um grupo ................................................................................................................ 40
4.4.5 Adicionar e remover usuário de um grupo ..................................................................... 41
4.4.6 Excluir grupo ................................................................................................................... 41
4.4.7 Diretório home do usuário .............................................................................................. 41
4.5 Gerenciamento de permissões .............................................................................................. 41
4.5.1 Adicionar, remover e definir permissões com chmod ..................................................... 42
4.5.2 Usando chmod com método numérico ........................................................................... 43
4.5.3 Umask ............................................................................................................................ 45
4.5.3.1 Calcular umask ........................................................................................................ 45
4.5.3.2 Umask para permissão ............................................................................................ 45
4.5.3.3 Alterando umask ...................................................................................................... 45
4.5.4 Permissões especiais ..................................................................................................... 46
4.5.4.1 SUID (set user id) .................................................................................................... 46
4.5.4.2 SGID (set group id) .................................................................................................. 47
4.5.4.3 Sticky (sticky bit) ...................................................................................................... 47
4.5.4.4 Vantagens (SUID, SGID e Sticky bit) ...................................................................... 48
4.5.5 Sudo ............................................................................................................................... 49
4.6 Resumo ................................................................................................................................. 49
www.tinarede.com.br
6.1 Pacotes .................................................................................................................................. 58
6.2 Gerenciador de pacotes ........................................................................................................ 58
6.3 Repositório ............................................................................................................................ 59
6.4 Apt-get ou Aptitude? .............................................................................................................. 59
6.4.1 Apt-get / apt-cache (básico) ........................................................................................... 60
6.4.2 Aptitude (básico) ............................................................................................................. 61
6.5 Yum ....................................................................................................................................... 62
Exercícios ...................................................................................................................................... 69
Respostas ...................................................................................................................................... 76
Conclusão ...................................................................................................................................... 82
Contatos ......................................................................................................................................... 83
www.tinarede.com.br
Introdução
A sociedade moderna está totalmente dependente da tecnologia – esse é um fato consumado.
Porém, em muitos aspectos somos meros usuários, ou seja, não compreendemos seu
funcionamento e, por conta disso, nos tornamos reféns daqueles que detêm o poder sobre as
tecnologias que utilizamos no dia a dia. Em alguns casos, somos considerados consumidores de
tecnologia sem voz ativa nem poder de escolha.
Não seja um mero usuário; tome as rédeas do jogo. Não sabe como? Neste momento, estou lhe
convido a estudar, pesquisar e se aventurar no universo do software livre, um universo de
possibilidades infinitas, limitadas tão somente pela sua imaginação e capacidade de inovar.
Venha desbravar novos horizontes, ou melhor, venha por meio desta obra realizar uma mudança
cultural na forma como você interage com o seu computador; deixe de ser um mero espectador
refém das vontades da “máquina”, assuma o controle e passe a ditar as regras do jogo. Construa
um conhecimento sólido e aprenda a solucionar problemas até então considerados “bichos de sete
cabeças”. Dedique algumas poucas horas do seu dia a se encantar com o tema foco desta obra e
garanto que não será uma perda de tempo; ainda que nem todo conhecimento adquirido aqui seja
aplicado no seu cotidiano, todo e qualquer conhecimento é um bem valioso que mais cedo ou mais
tarde irá render alguns bons frutos.
Em 2007 iniciei meus estudos e pesquisas sobre o tema Linux. Minha dedicação e vontade foram
tamanhas que, poucos dias após iniciar os estudos, resolvi remover o Windows da minha máquina
e instalar uma distribuição Linux; essa foi sem dúvida uma grande mudança “cultural” na minha
vida. Foi uma longa jornada, porém obtive ótimos resultados com essa mudança. Em virtude da
experiência adquirida, algumas portas se abriram e várias oportunidades de trabalho surgiram;
confesso que foi um ótimo investimento de tempo dedicar atenção ao assunto, mas isso não veio
do nada. Na verdade, eu estava há algum tempo acompanhando a comunidade de software livre,
e fiquei encantado com o entusiasmo e empenho dos membros da comunidade; eles
compartilhavam a experiência de uso e os conhecimentos cultivados na convivência diária com o
uso desse incrível sistema.
Esta obra irá abordar os pontos teóricos e práticos referentes ao sistema operacional GNU/Linux.
Considere-a o seu ponto de partida.
Aproveito para deixar um alerta: engana-se quem pensa que o mercado de TI está carente de vagas
de trabalho. Na verdade, nos últimos anos esse mercado tem enfrentado um sério problema: a falta
de profissionais qualificados para ocupar postos de trabalho nos mais diversos níveis hierárquicos
das organizações. Sendo assim, sugiro que invista em si mesmo; essa será sua melhor aposta
e também a garantia de seu sucesso!
www.tinarede.com.br
Capítulo 1
Linux – introdução teórica
"Quem pensa segundo a opinião dos outros está muito longe de ser um homem livre."
— Autor desconhecido
No capítulo 2 iremos partir para uma abordagem prática. Porém, antes disso, se faz necessário
entender alguns conceitos, filosofias, impactos e a importância do Linux na sociedade. Diante disso,
peço que por gentileza tente não pular os tópicos deste primeiro capítulo introdutório.
Alguns dos termos discutidos neste capítulo serão utilizados até o fim desta obra; sendo assim, seu
entendimento se torna no mínimo obrigatório!
Ao desenvolvê-lo, Linus quebrou todos os conceitos comerciais da história. Deixou aberto o código-
fonte do sistema, algo que resultaria em uma grande mudança, um fenômeno sem precedentes na
história da evolução humana dos tempos modernos: o software livre.
Pode-se dizer que software livre é um movimento social que defende aspectos ligados diretamente
à liberdade que o usuário tem perante o software.
Segundo a FSF, qualquer software/programa deve obedecer a quatro liberdades para ser
considerado um software livre. São elas:
www.tinarede.com.br
• Liberdade 3 - Liberdade para melhorar o programa e disponibilizar as melhorias para o
público, de forma que toda a comunidade possa se beneficiar delas.
Cuidado: não confunda software livre (free software) com software grátis
(freeware).
A definição oficial de software livre pode ser encontrada no site do projeto GNU, ao acessar o link:
http://www.gnu.org/philosophy/free-sw.html
A Open Source Initiative (OSI) tenta ser mais flexível do que a Free Software Foundation na
classificação de software. Para tanto, dita dez regras utilizadas para classificar um software como
open source; são elas:
2) Código-fonte: O programa deve incluir seu código-fonte e deve permitir a sua distribuição
também na forma compilada. Se o programa não for distribuído com seu código-fonte, deve
haver algum meio de obtê-lo, seja via rede, seja com custo apenas de reprodução. O código
deve ser legível e inteligível para qualquer programador.
5) Não discriminação contra pessoas ou grupos: A licença não pode ser discriminatória
contra qualquer pessoa ou grupo de pessoas.
www.tinarede.com.br
6) Não discriminação contra áreas de atuação: A licença não deve restringir o uso do
programa por qualquer pessoa em um ramo específico de atuação. Por exemplo, ela não
deve proibir que o programa seja usado em uma empresa, ou para pesquisa genética.
9) Licença não restritiva a outros programas: A licença não pode colocar restrições em
outros programas que são distribuídos junto com o programa licenciado. Isto é, a licença
não pode especificar que todos os programas distribuídos na mesma mídia de
armazenamento sejam programas de código aberto.
10) Licença neutra em relação a tecnologia: Nenhuma cláusula da licença pode estabelecer
uma tecnologia individual, estilo ou interface a ser aplicada no programa.
É importante ter em mente que, em muitos casos, um software livre também pode ser um open
source e vice-versa. A FSF e a OSI não são inimigas, mas possuem pontos de vista divergentes.
1.4 Código-fonte
São basicamente as instruções que formam um programa. Essas instruções são escritas com base
em alguma linguagem de programação, como por exemplo Java, C, Delphi, entre outras.
Ter acesso ao código-fonte do software significa basicamente ter acesso às instruções inscritas
nele em qualquer que seja a linguagem de programação. Mas, como assim? Não poderíamos
simplesmente editar o software? Não, o resultado final de um software normalmente é um arquivo
binário; em outras palavras, este arquivo nada mais é do que uma transformação da linguagem de
programação para uma linguagem de máquina, incompreensiva para nós, meros mortais. Diante
disso se faz necessário ter acesso ao código-fonte para poder estudar e/ou melhorar um software.
www.tinarede.com.br
O projeto GNU tinha como objetivo criar um sistema operacional completo, gratuito e livre. Quase
tudo estava pronto, porém o GNU ainda não possuía a parte mais importante, um núcleo para o seu
sistema. Foi aí que Linus Torvalds entrou na história, e da união do GNU com o Linux surgiu o
GNU/Linux, que hoje é popularmente conhecido apenas como Linux, nome que não faz justiça a
todos aqueles que contribuíram e continuam contribuindo para o crescimento do sistema
operacional GNU/Linux.
Existe um outro entendimento segundo o qual Linux é o nome dado a qualquer sistema que utilize
o núcleo (kernel) Linux. Porém, não custa nada colocar um GNU antes do nome, né? 😉
Este conceito é extremamente importante e vasto, mas não nos convém entrar em detalhes neste
momento.
1.7.1 GPL
Em geral, o GNU/Linux segue as regras prescritas na GPL (GNU Public License), criada em 1989
e revisada pela primeira vez em 1991, quando resultou na GPLv2 (GPL versão 2). A revisão mais
recente até o lançamento desta obra é a de 2007, a GPLv3 (GPL versão 3). As quatro liberdades
do software livre são garantidas graças à licença GPL.
1.7.2 Copyleft
Este é um termo comum no mundo do software livre; ele é basicamente o oposto do copyright.
www.tinarede.com.br
determinados direitos/permissões consentidos por sua licença acompanhem o software durante sua
existência, e que versões derivadas dele carreguem consigo a mesma licença do software original.
Existem algumas distribuições comerciais e outras não comerciais. No caso das distribuições
comerciais, o utilizador paga pelo sistema e recebe suporte técnico para ele; já no segundo caso,
não existe essa cobrança pelo uso do sistema, porém, se surgir algum problema, o utilizador terá
que buscar ajuda em alguma lista de discussão na internet para tentar obter uma solução.
As distribuições não comerciais também são conhecidas como distribuições comunitárias; um bom
exemplo é o GNU/Linux Debian, um sistema operacional disponibilizado gratuitamente, mantido
por uma comunidade de desenvolvedores e amantes do universo livre.
Recordo-me de dois fatos históricos da trajetória desse sistema: o primeiro foi em 2001, quando a
IBM anunciou o investimento de 1 bilhão de dólares em Linux; já o segundo foi em julho desse
mesmo ano, quando a NASA anunciou o lançamento de um assistente pessoal de satélite baseado
em Linux.
Você pode nem imaginar, mas grandes estúdios de animação, tais como Pixar Estúdios, Lucas
Arts e DreamWorks já utilizaram ou ainda utilizam o Linux na renderização de suas obras. Alguns
www.tinarede.com.br
bons exemplos de obras renderizadas utilizando o Linux são: O Senhor dos Anéis, Vida de Inseto
e Shrek.
• Servidor: Para montar servidores gosto muito de utilizar a distribuição Debian; essa é uma
distribuição comunitária muito famosa e com uma comunidade altamente ativa.
• Uso pessoal: Em meu desktop e notebook gosto de utilizar o Linux Mint; essa distribuição
já vem por padrão com uma suíte de multimídia e software básicos pré-instalados. A distro
em questão também possui uma central de software, ou seja, um local onde você tem um
catálogo de itens que podem ser baixados e instalados automaticamente, sem necessitar
de nenhuma interação humana. Mais simples que isso, impossível.
Então, Debian é a melhor opção para montar servidor e Linux Mint para uso pessoal? Não; essas
foram as melhores opções para mim, mas cada um de nós vê o mundo de uma forma diferente e
possui necessidades distintas. Sugiro que faça como eu: teste outras distribuições Linux até
encontrar sua cara-metade.
Em alguns casos gosto inclusive de usar o CentOS para servidor e o Ubuntu para uso pessoal,
porém a minha maior preferência é pelos sistemas citados no início deste tópico.
• Segurança: Esse é um assunto que poderia render facilmente várias páginas, porém não
pretendo me aprofundar nele, uma vez que não representa o foco principal desta obra. Os
tópicos abaixo possuem a função de expor os pontos fortes no quesito segurança das
distribuições Linux:
www.tinarede.com.br
Ao utilizar a máquina com o usuário comum, já elevamos nosso grau de segurança.
Existem ainda as contas de usuário de sistema/serviço. Falaremos delas mais
adiante;
o Firewall no nível de kernel: Por padrão, o firewall das distribuições Linux está
presente dentro do próprio kernel, ou seja, faz parte do núcleo do sistema, o que
adiciona 1 ponto extra no quesito segurança; em capítulos posteriores falaremos
sobre este recurso.
• Custo/benefício: Seu custo de aquisição pode ser igual a 0 (zero). Caso queira, você
poderá adquirir seu futuro sistema operacional sem pagar nada, ou até mesmo montar um
ambiente inteiro sem tirar um centavo do bolso. Os software e suítes de aplicativo podem
seguir essa mesma filosofia;
• Customização 100%: Essa é uma vantagem que o software proprietário não dá: a liberdade
para modificar o código-fonte e/ou redistribuir o resultado final desse trabalho;
Os benefícios listados acima serão abordados na prática em capítulos posteriores, então fique
tranquilo; até o fim desta obra garanto que, no mínimo, você será um(a) amante de Linux. 😂
A “cultura do botão” se aplica às pessoas que carregam o seguinte lema: “me dê um botão que eu
clico”. Sem dúvida, as mentes mais engraçadinhas estão fazendo piada depois disso; não os culpo,
www.tinarede.com.br
também ri até chorar! 😂
Deixar de lado o entendimento de algo para se apegar com afinco à interface gráfica pode nos
render muita dor de cabeça. A perfumaria visual chamada de interface gráfica deve acima de tudo
agradar os olhos, ou seja, de uma hora para outra pode sofrer uma reformulação visual que deixe
você desorientado, sem saber onde aquele botão que você tanto utilizava foi parar. Até se adaptar
ao novo visual, você poderá sofrer um pouco, sem falar que a adaptação pode não ser tão rápida.
Uma interface gráfica rica e elegante sempre conquista admiradores e, no fim das contas, somos
todos usuários de alguma interface visual; isso é inevitável, porém é mais do que recomendado
entender como as coisas funcionam por trás dessa perfumaria visual. No mundo GNU/Linux temos
a figura da linha de comando, um recurso que nos dá acesso total ao sistema e nos abre
possibilidades não proporcionadas pela interface gráfica, sem falar que esse recurso não sofre com
a volatilidade dos elementos visuais, ou seja, os comandos estarão sempre lá, aguardando você.
1.13 Resumo
Neste capítulo, entendemos conceitos teóricos básicos e considerados obrigatórios. O
entendimento desses conceitos facilitará sua vida ao longo dos vários capítulos que compõem esta
obra, tornando ainda mais proveitosa sua estadia conosco.
Neste primeiro capítulo entendemos qual é a real diferença entre os termos Linux e GNU/Linux,
software livre e open source. Discutimos ainda questões de relevância comum, tais como qual a
melhor distribuição Linux, onde cada uma é utilizada, sua importância e os benefícios
proporcionados por sua utilização.
Recomendo que realize pesquisas adicionais, consulte outras obras e visite as comunidades de
software livre, com o objetivo de complementar o conteúdo passado por meio desta obra. Posso
garantir que este conhecimento será de grande valia para seu crescimento profissional e,
consequentemente, pessoal.
Chegamos ao fim da parte teórica. Do próximo capítulo em diante, iniciaremos nosso primeiro
contato “íntimo” com o GNU/Linux. Caso queira fazer uma pausa para o café, esta é a hora, pois os
próximos capítulos desta obra prometem fortes emoções!
www.tinarede.com.br
Capítulo 2
Estrutura e funcionamento do Linux
"Quem pensa pouco erra muito."
— Leonardo da Vinci
Para prosseguirmos com este capítulo, é necessário que você tenha uma distribuição Debian
devidamente instalada. Caso não conheça o processo de instalação ou necessite de algum auxílio,
consulte o material de apoio “Linux – Instalando a distribuição Debian”.
Ao longo desta obra utilizaremos a distribuição Debian como referência de estudo, porém, as
técnicas, conceitos e comandos apresentados daqui por diante poderão ser aplicados em qualquer
outra distribuição. Talvez a maior diferença que você pode encontrar entre as várias distribuições
disponíveis seja a localização de arquivos específicos de sistema, porém iremos aprender
comandos e técnicas de pesquisa que nos permitirão localizar qualquer arquivo facilmente.
• Tty: é uma espécie de terminal virtual. Os tty de 1 até 6 são basicamente terminais de linha
de comando, já o tty7 é reservado para a interface gráfica quando instalada;
www.tinarede.com.br
2.2 Terminal Virtual (ttyN)
O GNU/Linux é um sistema multiusuários, ou seja, permite que vários usuários utilizem uma
máquina ao mesmo tempo. Isso é possível graças aos terminais virtuais, que são uma espécie de
console isolada, recurso este que permite que os usuários trabalhem de forma isolada em uma
mesma máquina sem que um interfira na experiência de uso do outro.
Uma das formas mais comuns de vários usuários acessarem e trabalharem ao mesmo tempo em
uma máquina é fazendo uso de conexões remotas. Nos sistemas baseados em Linux, o tipo de
conexão remota mais comum é o ssh (abordado a fundo mais adiante).
O Bash é o shell mais famoso do universo GNU/Linux; sua popularidade se deve aos inúmeros
recursos que possui, que facilitam a vida do usuário. Ao longo desta obra iremos trabalhar com o
bash, porém existem outras soluções de shell, cada qual com suas características próprias. Seguem
alguns exemplos: csh, ksh, tcsh e zsh.
• Superusuário: Nos termos técnicos do universo Linux, chamamos este usuário de root. Ele
é o usuário master do sistema, ou seja, o administrador. Tem acesso irrestrito;
• Usuário comum: Com exceção do root, todos os usuários se enquadram nesta categoria.
Possuem acesso limitado ao sistema;
www.tinarede.com.br
• Usuário de sistema/serviço: Estes usuários são utilizados para controlar serviços no
sistema, não possuem senha nem diretório home.
Para identificar o nível de acesso do usuário logado, basta observar o símbolo que se encontra à
esquerda do cursor; caso seja uma # (tralha), significa que o usuário logado é o root; se for um $
(cifrão), significa que este é um usuário comum.
Figura 2 – Logon
O processo de inicialização pode levar alguns segundos; vai depender do hardware da sua
máquina. Quando o resultado da sua tela for equivalente ao da Figura 2, isso significará que o
sistema já está disponível para uso. Observe a primeira linha: o tty1 (destacado de verde) é o
terminal virtual que está comportando essa sessão. Utilize usuário e senha criados na etapa de
instalação:
Caso não tenha errado o nome do usuário nem a senha, teremos um logon efetuado com sucesso:
Na Figura 3, o retângulo vermelho é o que chamamos de banner. Ele será apresentado sempre que
um usuário efetuar logon. Seu texto padrão pode ser personalizado, porém vamos deixar isso para
um outro momento.
www.tinarede.com.br
Ao acessar o sistema, nosso diretório inicial será /home/user, ou seja, nosso user tem um diretório
pessoal dentro do diretório /home. Já o diretório pessoal do usuário root é o /root. Mais adiante
entenderemos melhor como isso funciona. Uma coisa de cada vez. 😉
Diretório Descrição
/ Nível raiz
home Neste local ficam armazenados os diretórios pessoais dos usuários comuns
sbin Binários essenciais ao sistema; somente o root tem privilégio para executá-los
sys Contém praticamente as mesmas informações do diretório proc, porém, mais organizadas
Arquivos temporários. Por exemplo: dados temporários criados por programas ou usuários
tmp
são salvos aqui. Ao reiniciar o sistema, este diretório é esvaziado
www.tinarede.com.br
opt Pacotes de software e aplicações adicionais que não fazem parte do sistema
Ao longo desta obra voltarei a mencionar os diretórios mais relevantes e/ou importantes ao nosso
estudo, conforme a necessidade for surgindo.
2.6 Case-sensitive
O GNU/Linux é um sistema case-sensitive, ou seja, diferencia letras maiúsculas de minúsculas.
Sendo assim, tome muito cuidado ao referenciar diretórios e arquivos. Por exemplo:
• /bin • /biN
• /Bin • /BIN
Apesar da semelhança, os quatro diretórios citados acima são referências distintas. O mesmo se
aplica a comandos. Por exemplo:
• pwd • pWD
• Pwd • PWD
A escrita correta desse comando tem todos os caracteres em caixa baixa; ao escrever de forma
diferente o sistema irá apresentar uma crítica de que o comando não existe ou não foi encontrado.
www.tinarede.com.br
Veja as formas possíveis de se deslocar do diretório var para o bkp (Figura 4):
Os 2 pontos (..) indicam um nível acima. Vamos supor que você está no diretório bkp (Figura 4) e
deseja voltar para a raiz do sistema (/); então você necessita subir 2 níveis, e para isso deve usar
a representação (../..). Os primeiros 2 pontos tiram você do diretório bkp e o colocam dentro do etc;
a próxima ocorrência irá tirá-lo do diretório etc e, dessa forma, você estará no diretório raiz,
representado por um sinal de barra (/).
Devemos ter muita atenção ao utilizar referência relativa, pois este tipo de apontamento é variável.
Para fixar o entendimento, veja os exemplos abaixo, baseados na estrutura da Figura 4:
Na referência absoluta nosso ponto de partida é a raiz do sistema; como tudo está abaixo deste
nível, independentemente de onde estiver no sistema, o destino será sempre alcançado. Já na
referência relativa esse apontamento tem que se adequar a sua posição atual no sistema, ou seja,
acaba sendo uma forma relativa/volátil de apontar um destino.
Existem três termos que fazem parte deste conceito. São eles:
2.9 Resumo
Neste capítulo tivemos nosso primeiro contato prático com o GNU/Linux, entendemos o
funcionamento do sistema e seu padrão organizacional, capaz de predizer o local onde determinado
arquivo será alocado.
Conceitos como logon, logout, terminal virtual e shell foram devidamente apresentados.
A proposta de conteúdo para o capítulo 2 poderia render facilmente mais algumas páginas, talvez
www.tinarede.com.br
algumas dezenas. Porém, este grau de detalhamento adicional poderia quebrar a proposta de
objetividade, simplicidade e relevância, considerando a temática de conteúdo essencial proposta
para esta obra.
www.tinarede.com.br
Capítulo 3
Comandos Programas essenciais
"Busco um instante feliz que justifique minha existência"
— Fiódor Dostoiévski
O termo comando é uma forma popular de fazer referência aos programas comuns a quase todas
as distribuições GNU/Linux. Em geral um comando nada mais é do que um arquivo binário.
Ao executar os comandos listados mais adiante, não se esqueça que o caractere cifrão ($), presente
à esquerda do cursor, indica que este pode ser executado pelo usuário comum; já a tralha (#) indica
que este deve ser obrigatoriamente executado pelo usuário root.
3.1.1 help
É uma opção de ajuda rápida, utilizada para consultar as opções disponibilizadas por um programa.
Sua sintaxe é:
$ [comando] --help
Devemos substituir o marcador [comando] pelo programa para o qual desejamos obter ajuda. Veja:
A seta em vermelho (primeira linha) mostra que foi solicitada ajuda para o comando ls (apresentado
adiante). Na segunda linha temos uma demonstração de como o comando deve ser usado; já nas
linhas seguintes temos o restante dos parâmetros aceitos pelo programa, neste caso o ls.
www.tinarede.com.br
3.1.2 man
As páginas de manual do GNU/Linux contêm a descrição dos comandos, bem como listam de
forma detalhada as opções disponíveis e como elas funcionam. Sua sintaxe é:
• q: sai do manual;
• PageDown ou f: rola 25 linhas para baixo;
• PageUp ou w: rola 25 linhas para cima;
• Seta para cima ou k: rola 1 linha para cima;
• Seta para baixo ou e: rola 1 linha para baixo;
• p ou g: volta para o início;
• h: mostra a página de ajuda do manual.
Opções:
• -k: caso não saiba o nome de um determinado comando, basta utilizar essa opção para
buscar ocorrências dentro do manual e retornar os possíveis comandos.
3.1.3 logout
Os comandos abaixo podem ser utilizados para encerrar nossa sessão no terminal:
$ exit
$ logout
$ <CTRL> + d
# shutdown -h now
# poweroff
# halt
Pessoalmente gosto de utilizar o comando poweroff para desligar a máquina. Ele funciona como
um alias (apelido) para o “shutdown -h now”, com a vantagem de ser curto e fácil de decorar.
www.tinarede.com.br
3.1.5 reboot
Comando responsável por reiniciar a máquina:
# reboot
$ pwd
Resultado:
3.1.7 history
Lista os comandos mais recentes executados no terminal. Este é um recurso do bash (discutido no
capítulo anterior). Exemplo de uso:
$ history
Resultado:
Observe que temos no lado esquerdo um valor numérico identificando cada comando. Aproveito
para deixar a seguinte dica: se você utilizar um sinal de exclamação + o número + a tecla ENTER,
por exemplo, !7, no meu caso iria ser autoexecutado o comando da posição 7, ou seja, essa
instrução serve como atalho para comandos presentes no history (histórico).
Caso seu shell seja o bash, utilize as setas para cima e para baixo para percorrer o histórico.
Para descobrir o shell atualmente em uso, basta imprimir o valor da variável de sistema $0:
www.tinarede.com.br
$ echo $0
Resultado:
O retorno acima confirma que estamos usando o bash. Caso queira mudar para outro shell, por
exemplo, sh, basta digitar sh e pressionar ENTER; já para sair de um shell basta digitar exit e
pressionar ENTER.
3.2.1 ls (list)
Utilizado para listar o conteúdo de um diretório ou as propriedades de um arquivo. Sintaxe:
$ ls [opções] [caminho_do_arquivo_ou_diretório]
$ ls
Resultado:
O comando ls executado acima não retornou nenhum valor, o que significa que no diretório corrente
não existe nenhum conteúdo para ser listado, ou que os conteúdos estão ocultos (isso será discutido
mais adiante).
As opções podem listar mais informações ou até mesmo formatar os dados apresentados:
$ ls -lt /home
www.tinarede.com.br
Resultado:
Iremos analisar a Figura 10 linha por linha. Sendo assim, vamos à 1ª linha:
Na 2ª linha, o valor “total 4” representa o total de blocos do sistema de arquivo que estão sendo
utilizados pelo conteúdo listado. Este conceito é um pouco avançado, porém, irrelevante ao escopo
desta obra. Sendo assim, deixaremos para tratar deste assunto em uma outra oportunidade.
Figura 11 – Atributos
Respectivamente:
Para listar um arquivo oculto é muito simples: basta utilizar o atributo -a. Veja:
$ ls -a
www.tinarede.com.br
No exemplo acima estamos listando os arquivos ocultos do diretório corrente, porém, poderíamos
informar outro diretório, ou até mesmo substituir a opção -a por -al (L minúsculo), respectivamente,
para mostrar arquivos ocultos e listar as suas propriedades.
No universo Linux, um arquivo oculto é representado por um ponto final (.) à esquerda de seu nome.
Por exemplo:
• .exemplo1 • .arquivo_oculto
Para tirar a propriedade de oculto, basta renomear o arquivo ou diretório retirando o ponto; já para
ocultar, basta adicionar o caractere ponto. Veremos como fazer isso mais adiante.
$ cd [diretório]
3.2.3 cp (copy)
Permite copiar arquivos e diretórios. Sintaxe:
Opções:
3.2.4 rm (remove)
Remove arquivos e diretórios. Sintaxe:
rm [opções] [caminho_do_arquivo_ou_diretório]
Opções:
www.tinarede.com.br
3.2.5 mkdir
Permite criar diretório no sistema. Sintaxe:
Opções:
3.2.6 rmdir
Remove um diretório vazio. Sintaxe:
Opções:
3.2.8 more
Este comando é utilizado para paginar o resultado apresentado na tela. Sintaxe de uso:
Opções:
Opções internas:
www.tinarede.com.br
Uma outra boa alternativa para paginação é o comando less, que é muito semelhante ao more,
porém permite a navegação linha a linha, além da navegação por página igual à do comando more.
Opções:
3.2.10 find
Pesquisa por arquivos ou diretórios no sistema. Sintaxe:
Opções:
Exemplos:
Na primeira linha, a consulta é feita somente dentro do diretório /etc por qualquer arquivo que
contenha em seu nome a palavra “casa”. Já na segunda linha, o caractere / indica que a consulta
deve ser feita em toda a raiz do sistema, -type f indica que devem ser pesquisados somente
arquivos, e -size +1000k que o tamanho tem que ser superior a 1000 Kbytes.
3.2.11 grep
Faz busca em arquivos. Sintaxe:
www.tinarede.com.br
grep [opções] [expressão] [arquivo]
Expressão:
Palavra ou frase a ser pesquisada; se composta deve ser delimitada por aspas duplas.
Opções:
Exemplo:
3.2.12 head
Lê por padrão as 10 primeiras linhas de um arquivo. Sintaxe:
Opções:
Opções:
• -f: permite a leitura constante do arquivo, o que é recomendado para arquivos que estão
crescendo, quando há necessidade de acompanhar o que está sendo inserido em tempo
real;
• -n: altera o número padrão de linhas a serem lidas/apresentadas.
3.2.14 wc (contar)
Conta caracteres, palavras e linhas. Sintaxe:
www.tinarede.com.br
wc [opções] [arquivo]
Opções:
Opções:
Exemplo:
Conforme pode ser observado, informamos o nome do arquivo a ser gerado, no exemplo acima
pacote.tar.bz, e podemos passar um arquivo, diretório ou uma lista de vários arquivos e diretórios
a serem empacotados. Observe que ao empacotamento foi adicionada a opção -z; isso irá instruir
o tar que, após o empacotamento, ele deve compactar este arquivo com gzip. Já para extrair
poderíamos fazer o seguinte:
www.tinarede.com.br
$ gzip [opções] pacote.tar
$ bzip2 [opções] pacote.tar
Opções:
Normalmente o bzip2 gera arquivos menores, porém, seu tempo de compactação é um pouco
maior.
A lista vai muito além dos comandos listados acima, porém, como já foi dito, esta obra não é um
manual de comandos.
www.tinarede.com.br
3.3 Curingas
Os curingas são recursos utilizados para que possamos nos referir a um conjunto de arquivos ou
diretórios de forma genérica, permitindo que mais de um arquivo ou diretório seja manipulado ao
mesmo tempo. Com este recurso somos capazes de realizar pré-seleções e buscas avançadas. As
possibilidades são infinitas; nesta obra iremos focar na sua forma de uso mais cotidiana, contudo,
nada o impede de se aprofundar no assunto ao buscar mais informações na web.
No exemplo abaixo, informamos que iremos remover qualquer arquivo/diretório que comece com
“arq”, tenha qualquer sequência posterior e termine com “.txt”:
$ rm arq*.txt
Já neste exemplo iremos remover qualquer arquivo/diretório que comece com qualquer letra,
seguida pela sequência “rquivo”, e finalize com qualquer sequência de caracteres:
$ rm ?rquivo.*
Existe ainda a possibilidade de realizar buscas considerando um intervalo alfanumérico ou uma lista
predefinida:
rm arquivo[2,4].txt
Os curingas podem ser utilizados no sistema como um todo, não somente com o comando rm.
ls /etc | sort
www.tinarede.com.br
No comando acima utilizamos o “ls” para listar os arquivos do diretório “/etc”; inserimos um pipe
para pegar essa saída e mandar para o programa “sort”. Este programa tem a função de ordenar
caracteres alfanuméricos, ou seja, ele irá reordenar em ordem alfanumérica a saída do ls.
É possível encadear quantas instruções forem necessárias; isso vai depender da sua necessidade.
cd /ettc ; ls /
cd /ettc && ls /
A primeira instrução irá retornar uma lista de diretórios. Já a segunda, uma mensagem de erro
informando que o arquivo ou diretório não foi encontrado.
Ao utilizar ; (ponto e vírgula) somos capazes de encadear numa mesma linha várias instruções a
serem executadas sequencialmente, e independentemente do resultado da instrução anterior a
próxima será executada. Já ao utilizar &&, instruímos o sistema a executar a próxima instrução
somente se a anterior tiver sido executada com sucesso.
No exemplo acima, a linha 2 não realizou a listagem de diretórios pois o /ettc não existe, logo a
instrução “cd /ettc” foi concluída com erro, não passando assim na validação do &&.
3.5.1 Exemplos
ls -l /etc | more
ls -l /etc | wc
Os comandos acima haviam sido apresentados como manipuladores de arquivos, porém, estes
podem ser utilizados com pipe (|) para processar a saída de outro comando.
Essa forma de uso não se limita aos programas apresentados até aqui.
• > (sinal de maior que): permite redirecionar a saída para um arquivo. Caso este arquivo
exista, seu conteúdo anterior será apagado; do contrário, ele será criado;
www.tinarede.com.br
• >> (dois sinais de maior que): permite redirecionar a saída para um arquivo. Caso o arquivo
exista, a saída será adicionada ao seu fim; do contrário, um arquivo será criado.
Exemplo:
A instrução acima lista o conteúdo do diretório /etc e redireciona a saída que seria apresentada na
tela para o arquivo output.txt que não existia no diretório /tmp, e portanto foi criado. Para ver o
fruto de seu trabalho, utilize o comando de leitura cat da seguinte forma:
cat /tmp/output.txt
Viu só? O conteúdo gerado pelo comando ls -l está no arquivo, logo o redirecionamento ocorreu
com sucesso. Este recurso é muito valioso; pode ter certeza de que em algum momento irá precisar
dele para gerar relatórios, salvar lista de arquivos ou até mesmo output de algum shell script (tema
para outro momento).
3.7 Resumo
O segredo para ter sucesso neste capítulo não está em decorar a lista de comandos, mas sim em
saber que determinada ação pode ser executada. Quando precisar executar a ação desejada, você
pesquisa o comando e utiliza o man e o help para saber como ele funciona. Com o passar do
tempo, você irá naturalmente decorar as opções mais relevantes.
www.tinarede.com.br
Além dos comandos, vimos como utilizar curingas, pipe, redirecionadores de saída e operadores
de encadeamento, porém, nada disso irá fixar-se na mente se você não praticar; então, antes de ir
para o próximo capítulo, sugiro que volte ao início deste e teste todos os comandos passados até
aqui.
Mãos à obra!
www.tinarede.com.br
Capítulo 4
Usuários, grupos e permissões
"Pensa como pensam os sábios, mas fala como falam as pessoas simples"
-- Aristóteles
Um dos recursos do GNU/Linux que mais me encanta é o seu controle de permissões baseado em
usuários e grupos, recurso este que atribui ao sistema do pinguim uma camada extra de segurança.
Neste capítulo iremos aprender a criar usuários e grupos, bem como a manipular suas propriedades
e permissões.
Antes de prosseguirmos, é importante que você saiba da existência de dois arquivos altamente
importantes no nível de sistema. São eles:
www.tinarede.com.br
§ /etc/shadow: é a base onde ficam armazenadas as senhas (hash) dos usuários;
§ /etc/group: é a base onde ficam armazenados os grupos existentes.
# useradd zezinho
# adduser zezinha
• useradd: cria um usuário simples, que não possui senha nem diretório /home;
• adduser: cria um usuário completo, com senha e diretório /home.
Estes nomes de usuários são interessantes para nós, meros mortais, porém, o sistema não os
compreende. Quando um usuário é criado, a ele é atribuído um ID, pelo qual o sistema interpreta e
identifica os usuários. Para consultar um ID, utilize a instrução:
$ id nome_do_usuário
• uid: id do usuário;
• gid: id do grupo do usuário;
• grupos: id dos grupos dos quais o usuário faz parte.
Conforme já foi dito anteriormente, o arquivo /etc/passwd é a base onde ficam armazenados os
usuários da máquina. Logo, se faz necessário entender que este arquivo é dividido em 7 campos
separados por dois-pontos (:). Os respectivos campos são:
Agora que sabemos da existência do arquivo /etc/passwd e de como ele é estruturado, podemos
utilizar o cut para listar o login dos usuários e seus respectivos IDs. Veja:
www.tinarede.com.br
4.4.2 Editar usuário e senha
Para alterar configurações do usuário, como grupo principal, shell, data de expiração e outras, utilize
o usermod. Darei o caminho das pedras, mas o resto é com você:
# usermod --help
$ passwd
Caso o comando seja executado conforme acima, este irá alterar a senha do usuário que o
executou. Se for informado um login, será alterada a senha do usuário informado, porém, para isso,
você necessita ter privilégio de root.
Já para alterar informações adicionais como nome completo do usuário, telefone etc., utilize:
$ chfn
# userdel -r login
A opção -r é utilizada para remover o diretório /home do usuário; caso contrário, somente o seu
login seria removido.
# groupadd nome_do_grupo
A primeira instrução retorna todos os grupos e seus respectivos IDs. Já a segunda instrução faz um
filtro por meio do grep (-i = ignora diferença entre maiúsculo e minúsculo) e retorna somente o grupo
informado.
www.tinarede.com.br
4.4.5 Adicionar e remover usuário de um grupo
Para adicionar o usuário a um grupo, utilize a sintaxe:
# groupdel nome_do_grupo
$ ls -a /etc/skel
No diretório /etc/skel ficam os arquivos que serão copiados para o diretório home do usuário sempre
que uma nova conta for criada. Você pode modificar os arquivos presentes no diretório ou até
mesmo adicionar novos.
$ cd /tmp
$ touch arquivo
$ ls -l arquivo
www.tinarede.com.br
Caso tenha executado todas as linhas corretamente, o retorno será algo como:
As letras rwx e o caractere - (sinal de hífen) são utilizados para representar as permissões passiveis
de atribuição a algum elemento do sistema, tais como arquivos e diretórios:
• r = leitura / read
• w = escrita / write
• x = execução / execution
• - (sinal de hífen) = permissão desativada
• u = dono
• g = grupo
• o = outros
• a = todos
www.tinarede.com.br
A instrução acima indica que:
• O tipo de operação executada foi de definição, operação indicada pelo sinal de igual (=);
• O dono (u) do arquivo possui permissão de escrita;
• O grupo (g) possui permissão de leitura e escrita;
• Os outros (o) possuem permissão de leitura e escrita.
• O novo conjunto de permissões após a execução da instrução será --w-rw-rw-
Figura 13 – Permissões
$ cat arquivo
Retorno:
Não foi possível ler o arquivo; isso se deve ao fato de que o dono não possui permissão de leitura,
apenas de escrita. Para adicionar a permissão de leitura, execute a instrução:
Ao tentar ler o arquivo novamente, teremos sucesso. Nenhum dado será apresentado, pois o
arquivo está vazio, porém agora temos permissão de leitura.
As permissões do dono, do grupo e de outros podem ser alteradas de forma individual conforme
pode ser observado na operação de adição executada logo acima, coletivamente ao utilizar a vírgula
para separar o conjunto de “entidades/pessoas” com permissões distintas, ou podem-se ainda
informar todas as “entidades” e respectivamente as permissões desejadas. Não se esqueça que
você pode utilizar a representação a (todos) para atribuir as mesmas permissões a todos os três
conjuntos de pessoas.
• r (leitura / read) = 4
• w (escrita / write) = 2
• x (execução / execution) = 1
www.tinarede.com.br
• - (sinal de hífen / permissão desativada) = 0
Ao utilizar o chmod com método numérico, representamos o conjunto de permissões por meio de
uma sequência de 3 dígitos numéricos, sendo o menor valor 000 e o maior, 777.
Como a representação no método numérico não se dá por meio de três grupos de três números, é
necessário realizar um cálculo para saber qual número representa um conjunto de permissões. Veja
um exemplo:
www.tinarede.com.br
4.5.3 Umask
Já notou que, ao criar um arquivo ou diretório, este já vem com uma máscara padrão de permissão?
Essa configuração padrão vem da variável de sistema umask.
$ umask
Será retornado o valor 0022 (valor padrão), que não faz muito sentido, não é mesmo? Experimente
utilizar o próprio umask para traduzir esse número para algo mais compreensivo:
$ umask -S
777
- 755
022
Com o umask 0022, terei o seguinte conjunto de permissão: u=rwx,g=rx,o=rx, que em formato
decimal seria 755.
777
- 022
755
O cálculo acima mostra que o umask 0022 representa o conjunto de permissões 755. O umask é
representado por 4 dígitos; o primeiro representa permissões especiais vistas mais adiante.
Podemos utilizar o próprio comando umask para alterar o valor padrão de permissão. Veja:
$ umask 0077
www.tinarede.com.br
Com essa instrução vamos impor a máscara 700 (o dono pode tudo e os demais não podem nada).
Porém, essa alteração é temporária e será esquecida quando o usuário encerrar sua sessão.
Para fazer a alteração de forma permanente, é necessário modificar o umask na profile do usuário
(/home/.nome_do_usuario/.profile); não realizaremos essa alteração agora pois ainda não
apresentei a você, leitor, os editores de texto, porém tenha em mente essa informação.
No conjunto de permissões “rwsr--r--“, a letra “s” substitui a letra “x” no bloco de permissões do dono
do arquivo para representar uma propriedade SUID. Este campo pode assumir dois valores:
Já vimos como o chmod funciona, então vamos nos atentar somente ao que desrespeita a
propriedade SUID. O primeiro número “4” da sequência “4744” e a letra “s” da expressão “u+s”
representam uma propriedade SUID, que pode ser atribuída ou removida como qualquer outra
permissão.
Por fim, é interessante saber que podemos pesquisar arquivos que contenham essa propriedade
por meio de qualquer uma das instruções abaixo:
Caso não tenha ficado claro, é importante salientar que a propriedade SUID faz parte do conjunto
de permissões aplicadas ao dono do arquivo.
www.tinarede.com.br
4.5.4.2 SGID (set group id)
No conjunto de permissões “rwxr-sr--“, a letra “s” substitui a letra “x” no bloco de permissões do
grupo para representar uma propriedade SGID. Este campo pode assumir dois valores:
Já vimos como o chmod funciona, então vamos nos atentar somente ao que desrespeita a
propriedade SGID. O primeiro número “2” da sequência “2754” e a letra “s” da expressão “g+s”
representam uma propriedade SGID, que pode ser atribuída ou removida como qualquer outra
permissão.
Por fim, é interessante saber que podemos pesquisar arquivos que contenham essa propriedade
por meio de qualquer uma das instruções abaixo:
Caso não tenha ficado claro, é importante salientar que a propriedade SGID faz parte do conjunto
de permissões aplicadas ao grupo.
Quando aplicado a arquivos executáveis, faz com que o sistema mantenha uma imagem deles na
memória; isso irá melhorar o desempenho na próxima execução, mas utilize essa capacidade com
sabedoria: lembre-se que a memória RAM é um recurso limitado. Já em diretórios, essa propriedade
impede que outros usuários possam deletar ou renomear arquivos dos quais não são donos
independentemente das permissões que possuam; somente o dono e o root serão capazes de
executar tais ações.
No conjunto de permissões “rwxr-xrwt“, a letra “t” substitui a letra “x” no bloco de permissões que
representa outros usuários. Este campo pode assumir dois valores:
www.tinarede.com.br
Para atribuir este conjunto de permissões, basta fazer assim:
Já vimos como o chmod funciona, então vamos nos atentar somente ao que desrespeita a
propriedade Sticky bit. O primeiro número “1” da sequência “1757” e a letra “t” da expressão “o+t”
representam uma propriedade Sticky bit, que pode ser atribuída ou removida como qualquer outra
permissão.
Por fim, é interessante saber que podemos pesquisar arquivos que contenham essa propriedade
por meio de qualquer uma das instruções abaixo:
Caso não tenha ficado claro, é importante salientar que a propriedade Sticky bit faz parte do
conjunto de permissões aplicadas ao grupo.
Pode ser que você esteja pensando: “mas qual a real vantagem destas permissões especiais?”.
Simples: promover uma camada ainda mais sofisticada de segurança. Calma, não fique estressado;
irei explicar.
Vamos supor que existe um programa que somente o usuário “zezinho” pode executar devido às
suas permissões, porém, um belo dia você é informado que outros usuários também devem ser
capazes de executar este mesmo programa. Quais são as possibilidades possíveis?
Já o Sticky bit é um recurso valioso que pode proteger os arquivos, impedindo que sejam excluídos.
www.tinarede.com.br
• S: não possui permissão de execução;
• t: possui permissão de execução;
• T: não possui permissão de execução.
As letras acima substituem a letra “x”, que representa justamente a permissão de execução. Mas
tenha em mente que, se a nova letra for um “s” ou “t”, isso significa que o arquivo possui a permissão
“x” e mais o recurso SUID, SGID ou Sticky bit, dependendo da letra e da posição em que se
encontra. O que estou querendo pontuar é que a permissão de execução é “somada” à permissão
especial aplicada.
4.5.5 Sudo
O sudo faz parte do contexto de gerenciamento de permissões; ele permite que um usuário comum
possa executar uma ação que somente um usuário com privilégios elevados teria autorização para
executar, como por exemplo o root.
O sudo é um comando programa que normalmente já vem instalado na maioria das distribuições, e
sua forma mais comum de uso é:
$ sudo ifconfig
O ifconfig é um programa que será apresentado ainda nos próximos capítulos, porém, só o root tem
permissão para executá-lo. Mas quando utilizamos o sudo estamos indicando que o usuário comum
que está logado deve ser autorizado a executar a instrução seguinte; logo a senha do root será
solicitada e, caso esteja correta, a instrução será executada pelo usuário comum, utilizando-se para
tanto dos privilégios de root.
As possibilidades são muitas, logo não irei me aprofundar em mais detalhes; deixarei esse desafio
para você. Boa sorte! 😉
4.6 Resumo
O gerenciamento de permissões sofisticado do GNU/Linux é um dos seus grandes trunfos. Isso é
o que proporciona a esse sistema operacional uma camada de segurança mais robusta.
Neste capítulo, vimos como criar usuários e grupos, e como limitar o acesso destes a diretórios,
arquivos e recursos do sistema, utilizando-se do mecanismo de permissões.
Identificamos ainda quais são os arquivos de sistema que guardam informações, como a senha
(hash), o diretório home e o shell padrão do usuário. Não podemos nos esquecer do umask e do
www.tinarede.com.br
sudo, dois recursos valiosos que certamente merecem a atenção que a eles foi atribuída no grau
que assim foi apresentado.
www.tinarede.com.br
Capítulo 5
Editores de texto (Nano e VIM)
"Eu apenas invento e espero que outros apareçam precisando do que inventei"
-- R. Buckminster Fuller
Em algum momento seremos obrigados a editar um arquivo e manipular seu conteúdo; para que
isso seja possível é necessário que saibamos trabalhar com editores de texto de linha de comando.
Para nosso estudo, separei dois ótimos software para edição de texto; o Nano, considerado simples
e objetivo, e o VIM, uma opção mais sofisticada e cheia de recursos.
5.1 Nano
O GNU Nano (publicado em 2001) foi projetado para ser um substituto livre para o editor de texto
Pico, parte da suíte de e-mail Pine da Universidade de Washington. Ele tem como objetivo ser tão
simples quanto ou até mais simples que o Pico e incorporar recursos extras.
$ nano
Por se tratar de um arquivo novo, no canto superior temos a referência Novo Buffer; ao editar um
arquivo, essa referência indicará a ação de modificação e o nome do arquivo.
www.tinarede.com.br
Observe que no canto inferior do editor existe uma barra de opções; para acessá-las, pressione a
tecla CTRL + a letra da opção a ser executada.
Um aviso será emitido na parte inferior, questionando com qual nome o arquivo deve ser gravado.
Dê um nome qualquer, como por exemplo curso.txt, e pressione ENTER; ao fazer isso o trabalho
será salvo e você voltará para a tela de edição; pressione CTRL + X para sair. Supondo que você
salvou o arquivo com o nome curso.txt, execute o comando “cat curso.txt” e o conteúdo que você
digitou será apresentado na tela.
$ nano nome_do_arquivo
É interessante saber que, se você estiver editando um arquivo e tentar sair do editor sem ter salvado
este trabalho, o nano irá questionar se você deseja salvar ou não o trabalho atual. Basta você
escolher a opção desejada e pressionar ENTER.
Pessoalmente, gosto muito de utilizar o nano devido a sua simplicidade, porém, existem momentos
nos quais ele não atende às minhas necessidades. Nestes casos, utilizo o Vim.
$ vi
www.tinarede.com.br
Veja a tela de boas-vindas:
O Vim pode operar basicamente de quatro formas: modo normal, modo de inserção, modo visual e
modo de comando. Veja as definições:
• Modo normal: falaremos deste mais adiante; por enquanto se apegue somente à
informação de que para entrar neste modo basta pressionar a tecla ESC. Quando o Vim é
iniciado, ele carrega por padrão neste modo;
• Modo de inserção: esse modo é voltado especificamente para a edição de texto; para
acessá-lo, basta entrar no modo normal e pressionar uma das teclas a seguir:
o a (append): inicia o modo de inserção um caractere após o atual;
o A: inicia o modo de inserção no final da linha;
o i (insert): inicia o modo de inserção antes do caractere atual;
o I (i maiúsculo): inicia o modo de inserção no início da linha.
• Modo visual: permite selecionar texto verticalmente, exibindo um destaque visual; para
acessá-lo, basta entrar no modo normal e digitar:
o v: seleção de caracteres;
o V: seleção de linhas;
o ^V: seleção de blocos.
• Modo de comando: falaremos deste mais adiante; por enquanto se apegue somente à
informação de que, para acessá-lo, basta entrar no modo normal e pressionar : (dois-
pontos).
A instrução :wq (modo de comando) informa ao editor que desejamos escrever/salvar o texto e
posteriormente sair do editor. O nome do arquivo só é obrigatório caso este ainda não exista, ou
www.tinarede.com.br
seja, quando se trata de um arquivo novo. Já para editar um arquivo existente, utilize a instrução:
$ vi nome_do_arquivo
www.tinarede.com.br
A todas as 4 possibilidades acima podemos anteceder um valor numérico caso seja de nosso
interesse deslocar o cursor x caracteres ou x linhas de uma única vez. Por exemplo: 5j (desloca o
cursor 5 linhas para baixo).
5.2.1.4 Editar
A lista acima nos permite apagar parte do texto, porém, o conteúdo apagado na verdade é copiado
para a memória (buffer = área de transferência), o que nos permite deslocar o cursor para outra
posição e utilizar a tecla p para colar o texto na posição desejada, caso seja essa a intenção. Outra
informação igualmente importante é que um valor numérico pode anteceder os comandos dl, dw e
dd, respectivamente para apagar um número x de letras, palavras ou linhas.
Já se sua intenção for copiar o conteúdo sem deletá-lo/apagá-lo, basta utilizar os comandos:
Assim como ocorre para dl, dw e dd, também podemos anteceder os comandos yl, we e yy com
um valor numérico para representar respectivamente o número de letras, palavras e linhas a serem
copiadas. Por exemplo: 5yy (irá copiar 5 linhas).
www.tinarede.com.br
5.2.1.5 Desfazer (modo normal)
O Vim é muito completo e permite até mesmo realizar operações complexas baseadas em
expressão regular. As possibilidades são muitas; para mais informações consulte os links
apresentados acima.
Considere utilizar ambos os editores e com o tempo você verá qual atende melhor cada caso;
recomendo que saiba trabalhar com ambos.
Além dos links acima, considere utilizar o help e o man para consultar os manuais
de ajuda do Nano e do Vim.
5.4 Resumo
O Nano e o Vim são dois ótimos editores, tradicionais em qualquer distribuição GNU/Linux. Mas
não tome estas indicações como sendo as únicas opções que você tem; pesquise e teste outros
editores para então determinar qual será sua escolha final.
Só digo uma coisa: você não conseguirá ir muito longe se não souber utilizar nenhum editor de
linha de comando. Mesmo que o Nano ou o Vim não sejam sua escolha preferida, recomendo que
www.tinarede.com.br
saiba ao menos fazer o uso básico destes. Pode ser que um dia você tenha que lidar com uma
máquina onde só existem estas duas opções!
www.tinarede.com.br
Capítulo 6
Instalar, atualizar e remover software
"Quem pouco pensa engana-se muito."
-- Leonardo da Vinci
Neste capítulo irei apresentar os gerenciadores de pacotes mais comuns pertencentes às famílias
Debian e Red Hat. Obviamente, se você estiver utilizando um sistema operacional que não é
derivado de nenhuma das duas distribuições citadas anteriormente, não precisa se desesperar;
consulte a documentação do seu gerenciador de pacotes na internet para saber como ele funciona.
6.1 Pacotes
Os pacotes são conjuntos de arquivos encapsulados, ou seja, conjuntos normalmente compostos
de arquivo binário, arquivos de configuração e arquivos de controle, os quais possuem a função de
instalar e realizar as configurações básicas do software com a finalidade de torná-lo utilizável no
escopo do sistema em que foi instalado. Em palavras simples, um pacote nada mais é que o
instalador de um software.
Assim como citado no início deste capítulo, focaremos nas distribuições Debian e Red Hat; com
isso conseguimos atingir os sistemas derivados, tais como Ubuntu, CentOS, Fedora etc.
Nos sistemas derivados do Debian temos os pacotes de extensão .deb; já nos derivados do RedHat
temos os pacotes de extensão .rpm.
O processo de instalação de um pacote não é muito simples, porém, essa dificuldade é transparente
para nós; o gerenciador de pacotes é quem faz o trabalho pesado. Ele verifica as necessidades de
cada pacote caso possua dependências; ou seja, caso ele dependa de outro pacote o gerenciador
irá procurar este pacote, baixá-lo e instalá-lo “automaticamente”, a fim de satisfazer as
dependências e então poder prosseguir com a instalação do pacote solicitado por você.
Para os sistemas baseados em Debian temos o gerenciador de pacote apt-get ou aptitude; para
os sistemas baseados em RedHat temos o yum.
www.tinarede.com.br
6.3 Repositório
É um local on-line (internet) ou off-line (mídia) onde o gerenciador de pacotes vai buscar novos itens
passíveis de instalação ou atualização.
Recomendo que utilize um editor de texto para comentar a segunda linha do arquivo
/etc/apt/sources.list; do contrário, sempre que utilizar o gerenciador de pacotes este tentará fazer
uma consulta primeiro na mídia física CD/DVD para só então ir ao repositório remoto.
A utilização dos repositórios remotos garante que você terá sempre a versão mais recente do pacote
desejado. Novos repositórios podem ser adicionados à lista conforme for necessário.
Na instalação mais básica do Debian, ou seja, sem os complementos da opção standard, o apt-get
será o gerenciador instalado por padrão. Caso queira utilizar o aptitude, você terá que efetuar sua
instalação utilizando o gerenciador de pacotes presente no momento, ou seja, o apt-get.
Além dos gerenciadores citados aqui, existem outras opções tão boas ou quem sabe até melhores;
vai depender do seu “paladar”. Consulte a documentação da sua distribuição para saber qual
gerenciador de arquivos ela utiliza.
www.tinarede.com.br
6.4.1 Apt-get / apt-cache (básico)
# apt-get update
Antes de instalar ou atualizar um pacote, execute a instrução acima. Isso irá garantir que você
instale a versão mais recente presente no repositório. Como assim? Os gerenciadores de pacote,
em um contexto geral, possuem uma lista local dos pacotes e suas respectivas versões presentes
no repositório remoto; porém, com o passar do tempo, a lista local fica desatualizada em relação à
lista remota, e a instrução acima consulta o repositório e atualiza a lista local.
Para instalar um novo pacote ou atualizar um já existente, podemos utilizar a instrução abaixo:
Opções:
• -y: assume sim para todas as perguntas, ou seja, você não será questionado se deve ser
instalada a dependência “X” ou realizada a configuração “Y”;
• install: indica que o processo em questão se trata de uma instalação;
• aptitude: nome do pacote a ser instalado; neste caso é o “aptitude”.
Na quarta linha, temos o output “Aptitude já é a versão mais nova”, ou seja, neste caso em especial
o pacote atualmente instalado já é a versão mais recente e, conforme pode ser observado na linha
seguinte, não existem novos pacotes para serem atualizados, instalados nem removidos.
A tecla TAB pode ser utilizada para completar o nome do pacote; existindo mais
de uma possibilidade, seus respectivos nomes serão apresentados em uma lista.
Opções:
www.tinarede.com.br
Já para listar os detalhes a respeito de um pacote podemos utilizar a instrução:
Opções:
# apt-get upgrade
# apt-get dist-upgrade
A primeira opção faz uma atualização dos pacotes que não possuem dependências, e a segunda
realiza uma atualização completa, baixando dependências conforme forem necessárias.
A primeira linha efetua a remoção do pacote informado, neste caso do pacote “tree”. Já a segunda
linha é responsável por efetuar a remoção de pacotes órfãos, mantendo desta forma o sistema mais
limpo e organizado. Assim como foi visto em capítulos anteriores, poderíamos encadear ambas as
instruções da seguinte forma:
# aptitude update
# aptitude install tree
# aptitude search tree
# aptitude show tree
# aptitude upgrade
# aptitude dist-upgrade
# aptitude remove --purge tree
www.tinarede.com.br
A única particularidade relevante fica por conta da instrução “aptitude remove --purge tree”; neste
caso --purge significa que queremos, além de remover os pacotes, remover as configurações
destes.
Algo interessante no aptitude que não encontramos no apt-get é a possibilidade de navegar pela
lista de diretórios. Digite:
# aptitude
Figura 20 – Aptitude
Podemos observar que na segunda linha da imagem existe um conjunto de teclas de funções; por
exemplo, para sair do aptitude basta pressionar a tecla q; já para baixar/instalar/remover um pacote
basta pressionar g.
Navegue entre as listas de diretórios utilizando as setas direcionais, ENTER para acessar os
diretórios e alt+l (L minúsculo) para realizar filtros.
O aptitude é tão simples quanto o apt-get; logo, deixarei você se aventurar nele ao encerrar este
tópico por aqui.
6.5 Yum
O yum, gerenciador de pacote pertencente à distribuição Red Hat e a derivadas dela, possui uma
sintaxe bem parecida com a do apt-get/aptitude.
Como a sintaxe é praticamente a mesma e você já é um expert neste assunto, vamos encerrá-lo
por aqui; não se justifica prolongar o assunto sem uma real relevância/necessidade.
www.tinarede.com.br
Capítulo 7
Gerenciamento de rede
"Pensa como pensam os sábios, mas fala como falam as pessoas simples"
-- Aristóteles
Este conteúdo é vasto e, dependendo da forma como for tratado, pode apresentar características
com alto grau de complexidade. Mas, calma! Parece até que você não me conhece. Não pretendo
complicar as coisas, afinal de contas meu “sobrenome” é simplicidade!
Brincadeiras à parte, vamos ao que interessa. Este capítulo tem como objetivo garantir que você
consiga resolver problemas relacionados à conectividade da sua máquina com o mundo externo.
Para um melhor aproveitamento deste capítulo, é imprescindível que você tenha conhecimento de
alguns conceitos básicos, tais como: ip, máscara de rede, endereço MAC e gateway.
7.1.1 Ping
É um utilitário que utiliza o protocolo ICMP para testar a conectividade entre máquinas; este ainda
nos retorna o tempo (time) que levou para receber uma resposta do alvo, que pode ser utilizado
para medir a latência (tempo de espera por uma resposta). Veja:
Figura 21 – Ping
Na ocorrência acima, o número 5 representa o total de testes/saltos que desejo executar antes de
encerrar o teste; caso este parâmetro seja omitido, o teste continuará ocorrendo indefinidamente, e
para encerrá-lo será necessário pressionar o atalho CTRL + C; na sequência vem o endereço alvo
do teste, seja seu nome, seja seu ip.
www.tinarede.com.br
Observe que, ao final do teste, temos um relatório estatístico informando dados como o total de
pacotes transmitidos e recebidos. Na Figura 21 não tivemos nenhuma perda.
Esse teste não é conclusivo e você deve saber que, caso o efetue dentro de uma rede que não seja
a sua, podem existir elementos de segurança que bloqueiam requisições ICMP, algo que poderia
dar a impressão errada de que não existe comunicação externa.
7.1.2 Telnet
O telnet pode proporcionar um teste “mais” assertivo. Veja:
Figura 22 – Telnet
7.1.3 Traceroute
O traceroute é um utilitário de rede que nos permite mapear a rota até um alvo. Veja:
Figura 23 – Traceroute
No teste realizado na Figura 23, somos capazes de observar que existe rota até o destino
google.com.br, tanto é que na segunda linha somos informados que o ip desse destino é
189.6.75.245.
O traceroute tenta mapear a rota; quando não consegue determinar o ip da máquina pela qual ele
www.tinarede.com.br
passou, são retornados * (asteriscos) indicando que naquele ponto não foi possível determinar o ip.
Por padrão, ele realiza 30 saltos e ao fim devolve o cursor para a linha de comandos.
7.2.1 Ifconfig
Segundo o manual do próprio GNU/Linux, o ifconfig é usado para configurar e posteriormente
manter as interfaces de rede. Para visualizar as configurações de rede, execute:
# ifconfig
O ifconfig deve ser executado com privilégio de usuário root. O resultado será algo parecido com:
Figura 24 – ifconfig
Na Figura 24 temos duas interfaces de rede apontadas pelas setas; uma é a eth0, representando
nossa placa de rede com ip 10.0.2.15, e a outra é a lo, representando a interface de loopback
mantida pelo próprio sistema.
Já para definir uma configuração específica de ip e máscara de rede, podemos fazer assim:
www.tinarede.com.br
Neste caso, estamos atribuindo um ip a interface eth0 e posteriormente uma máscara de rede. Essa
configuração é volátil, ou seja, quando a máquina for reiniciada o sistema irá ler o arquivo
/etc/network/interfaces e aplicar as configurações lá presentes.
Este conhecimento pode ter sua utilidade, principalmente em momentos em que você está em um
local onde cada endereço MAC tem permissão para usar X horas de conexão, tais como conexões
normalmente disponibilizadas na praça de alimentação de shoppings.
7.2.2 dhclient
O comando dhclient permite efetuar a configuração de uma ou mais interfaces de rede usando o
protocolo DHCP (Dynamic Host Configuration Protocol).
# dhclient -r eth0
Essa instrução libera a configuração atual, ou seja, sua interface de rede ficará sem configuração
alguma. Posteriormente a isso você pode renovar sua conexão solicitando uma nova configuração
desta forma:
# dhclient eth0
Pronto, é só isso. Mais simples impossível, não é? Lembre-se de que você pode utilizar o ifconfig
para ver o que ocorreu para cada uma dessas duas instruções; observe que na primeira instrução
o endereço ip e a máscara de rede somem; já após a execução da segunda instrução, ambos são
atribuídos.
Figura 25 – /etc/network/interfaces
www.tinarede.com.br
Vamos destrinchar esse arquivo pontuando somente o que é relevante:
• As linhas iniciadas por # são comentários, então não possuem relevância para o sistema;
• auto lo e iface lo inet loopback: interface de loopback mantida pelo sistema;
• allow-hotplug eth0: indica que a interface eth0 deve ser iniciada junto com o sistema;
• iface eth0 inet dhcp: indica que a configuração será atribuída via protocolo DHCP.
Mas e se eth0 fosse estática, ou seja, não tivesse atribuição via DHCP? Como ficaria esse arquivo
de configuração após a edição? Seria algo mais ou menos assim:
Foi necessário tão somente informar que a interface eth0 não receberia mais atribuição via DHCL,
mas sim de forma estática (static); logo na sequência passamos às configurações de rede a serem
atribuídas.
Essa configuração será aplicada somente na próxima vez que o sistema for reiniciado. Caso não
possa ou não queira reiniciar a máquina após a configuração, mas deseje ter seu efeito aplicado
imediatamente, basta executar esta instrução:
# /etc/init.d/networking restart
Isso irá reiniciar sua interface de rede e aplicar as configurações presentes no arquivo
/etc/network/interfaces.
7.3 Resumo
Neste capítulo, vimos como realizar testes de conectividade e como configurar uma interface de
rede para endereçamento dinâmico via protocolo DHCP ou via configuração estática.
Os aspectos básicos inerentes a este capítulo foram apresentados considerando uma abordagem
direta, simples e objetiva; com isso não se justifica prolongá-lo, nem que seja uma linha mais. Em
uma obra posterior, poderei entrar em um grau de aprofundamento maior a respeito do
gerenciamento de redes no ambiente GNU/Linux.
www.tinarede.com.br
Lista de exercícios
O questionário abaixo tem como objetivo servir de base ou até mesmo demostrar algumas das
possíveis questões que podem vir a cair na prova 101 da certificação LPI, ou seja, a primeira prova.
Obviamente, a obra “Linux essencial – Por trás da interface gráfica” não foi desenvolvida pensando
exclusivamente na certificação LPI, porém, seu conteúdo tornou propício o lançamento desta lista
de exercícios voltada principalmente para a prova supracitada. Não seria coerente deixar essa
oportunidade “de ouro” passar despercebida!
Considerando o que foi dito vamos em frente; uma lista considerável de exercícios comentados está
à nossa espera. Sugiro que tente fazer toda a lista de exercícios para somente então consultar suas
respectivas respostas!
www.tinarede.com.br
Exercícios
1) Em que arquivo de configuração fica armazenado o shell padrão do usuário?
a. /etc/shells
b. /etc/passwd
c. /etc/profiles
d. /home/shell
7) É correto afirmar que “cd /etc” e “cd /Etc” levam o usuário para o mesmo destino, ou seja,
para o diretório de arquivos de configuração do sistema?
a. Sim
b. Não
www.tinarede.com.br
8) Você está no diretório /etc/network e deve ir para o diretório /tmp. Qual comando irá
proporcionar este resultado?
a. cd ../tmp
b. cd ../.. && cp tmp
c. cd /tmp
d. Todas as anteriores estão corretas
9) Como poderíamos realizar uma busca em todo o sistema pelo arquivo sources.list?
a. find / -name sources.list
b. search / -name sources.list
c. find sources.list
d. locale / sources.list
11) Caso o shell padrão do usuário não seja o bash, qual das instruções abaixo o usuário pode
executar para alterar o shell?
a. set bash
b. Bash
c. bash
d. define bash
12) Como faríamos para remover todos os arquivos que começam com a sequência “arq”, têm
uma quantidade indefinida de caracteres e finalizam com “.txt”?
a. rm arq?.txt
b. rm arq[a-z].txt
c. rm arq[0-9].txt
d. rm arq*.txt
13) Em uma instrução encadeada, como podemos impedir que o processamento continue caso
a instrução anterior não tenha sido concluída com sucesso?
a. Basta separar as instruções com ; (ponto e vírgula)
b. Basta separar as instruções com &&
c. Basta separar as instruções com | (pipe)
d. Basta separar as instruções com , (vírgula)
14) Qual dos comandos abaixo cria um usuário completo, com senha e diretório home?
a. adduser
b. useradd
c. user –create
d. useradd –full
www.tinarede.com.br
15) O número 755 representa respectivamente as permissões que dono, grupo e outros usuários
têm sobre determinado arquivo/diretório ou recurso. Nesse sentido, o número 755
representa que conjunto de permissões?
a. 7 = Leitura/escrita e execução, 5 = Leitura e execução e 1 = execução
b. 7 = Escrita e execução, 5 = Leitura/escrita e execução e 1 = execução
c. 7 = Leitura/escrita e execução, 5 = Leitura e execução e 1 = leitura
d. 7 = Leitura/escrita e execução, 5 = Leitura e execução e 1 = escrita
20) Ao utilizar o tail em um arquivo de 50 linhas, este irá retornar por padrão quantas linhas?
22) No Vim, além das teclas direcionais (setas), quais são as teclas que nos permitem deslocar
o cursor respectivamente para a esquerda, para baixo, para cima e para a direita?
a. h, j, k, l
b. j, k, l, h
c. a, s, w, d
d. a, x, w, d
23) Qual instrução posso utilizar para sair do Vim e salvar o arquivo caso tenha ocorrido alguma
alteração?
www.tinarede.com.br
a. ESC: s
b. ESC: x
c. ESC: m
d. ESC: salve
26) Antes de atualizar ou instalar um pacote com apt-get é recomendado executar qual
instrução?
a. apt-get check
b. apt-get upgrade
c. apt-get update
d. apt-get release
www.tinarede.com.br
c. remove -d
d. wc
31) No Vim, que combinação irá apagar a linha atual e as próximas 9 (total 10)?
a. 10dd
b. 10d
c. 10x
d. d10d
32) O arquivo lista.txt contém nome de usuários. Como efetuar a apresentação do conteúdo de
forma ordenada?
a. cat < lista.txt | sort
b. cat > lista.txt | sort
c. sort | lista.txt
d. lista.txt | sort
33) Qual das instruções abaixo faria o mesmo que cat arq1 > arq2?
a. cat arq1 | arq2
b. cat arq1 > arq2
c. cat arq1 && arq2
d. cat arq1 arq2
34) Qual das instruções abaixo ignora linhas que começam com #?
a. grep -v ˆ# arquivo.txt
b. grep -ignore ˆ# arquivo.txt
c. grep -i # arquivo.txt
d. ignore # arquivo.txt
36) Independentemente do retorno da primeira instrução, quero executar a segunda. Que opção
me permite isso?
a. ls /var1 && pwd
b. ls /var1 ; pwd
c. ls /var1 | pwd
d. ls /var1 || pwd
www.tinarede.com.br
38) É correto afirmar que arquivos e diretórios com sinal de ponto final à esquerda de seu nome
são arquivos ocultos?
a. Sim
b. Não
39) O arquivo texto.txt possui permissão rwxrwxrwx; após a execução do comando “chmod
u=wr, g=r, o=r texto.txt” qual será a permissão final?
a. rwxr--r--
b. rwx---r--
c. rwxr---w-
d. rw-r--r--
40) O arquivo arq.txt possui permissão rw-r--r--; após a execução do comando “chmod u+x
arq.txt” qual será a permissão final?
a. rwxr--r--
b. rw----r--
c. rwxr-xr-x
d. rw-x--x--
42) O kernel é a camada responsável por interagir com o hardware. Isso está correto?
a. Sim
b. Não
43) O atalho CTRL + C pode ser utilizado para abrir uma nova linha de comando descartando a
atual. Essa afirmação está correta?
a. Sim
b. Não
44) No /bin podemos encontrar os binários acessíveis a todos os usuários. Isso está correto?
a. Sim
b. Não
46) Qual das alternativas abaixo representa as opções especiais disponíveis no sistema?
a. SUID, SGID e SOID
b. SUID, SGID e Stricky bit
www.tinarede.com.br
c. SGID, SOID e Stricky bit
d. SUID, SGID e Strack
48) A propriedade Sticky bit é representada pela letra y. Essa afirmação está correta?
a. Sim
b. Não
49) O comando sudo é utilizado para adicionar novos usuários. Essa afirmação está correta?
a. Sim
b. Não
50) Em que diretório ficam os arquivos executáveis aos quais somente o root tem acesso?
a. /bin
b. /r oot
c. /sbin
d. /system/root
www.tinarede.com.br
Respostas
1. b) /etc/passwd
Explicação:
O shell padrão do usuário é definido por meio da coluna 7 (última coluna) do arquivo
/etc/passwd. Caso queira, pode ser utilizada a instrução “cut -f1,7 -d: /etc/passwd” para
listar respectivamente o usuário e o shell padrão.
Explicação:
O comando poweroff é praticamente um alias, ou seja, um apelido para shutdown -h now.
3. b) /proc
Explicação:
O diretório /proc é um diretório virtual, ou seja, construído quando o sistema está em uso.
Neste podemos encontrar informações vindas do/geradas pelo kernel, tais como dados do
processador, memória etc. Veja um exemplo: cat /proc/cpuinfo
4. c) /etc
Explicação:
O padrão FHS (Filesystem Hierarchy Standard) diz que o diretório /etc é o local onde ficam
concentrados os arquivos de configuração do sistema, padrão adotado pelos sistemas
baseados em Linux.
5. a) /tmp
Explicação:
O padrão FHS (Filesystem Hierarchy Standard) diz que o diretório /tmp é utilizado para
armazenar arquivos temporários de sistema, programas e de usuários. Este é esvaziado
quando o sistema é reiniciado.
6. c) /root
Explicação:
O padrão FHS (Filesystem Hierarchy Standard) determina que o diretório pessoal do
usuário root é o /root.
7. b) Não
www.tinarede.com.br
Explicação:
O GNU/Linux é um sistema case-sensitive, ou seja, diferencia letras maiúsculas de
minúsculas. Logo, /etc e /Etc são diretórios distintos e, a menos que você o tenha criado, o
/Etc não existe.
11. c) bash
Explicação:
Basta chamar o nome do shell que deseja executar. No caso, como se trata de um sistema
case-sensitive, bash é escrito em minúsculo.
12. d) rm arq*.txt
Explicação:
O caractere curinga * (asterisco) atua como substituto para uma sequência de caracteres
na posição em que foi inserido.
Explicação:
Ao utilizar &&, a instrução seguinte só será executada caso a anterior tenha sido concluída
com sucesso.
14. a) adduser
16. d) rwxrw-r-x
Explicação:
7 (rwx = leitura/escrita e execução), 6 (rw- = leitura e escrita) e 5 (r-x = leitura e execução).
17. Resposta:
c) 765
Explicação:
Fórmula: permissão total - umask = permissão desejada.
Cálculo: 777 - 012 = 765.
www.tinarede.com.br
18. a) 67
Explicação:
Fórmula: permissão total - permissão desejada = umask.
Cálculo: 777 - 710 = 67.
19. a) ls -d
Explicação:
A opção -d indica que serão listados somente diretórios. Outra alternativa seria ls -l | grep
ˆd
20. 10
Explicação:
Esse valor pode ser alterado ao definir a opção –n
21. history
22. a) h, j, k, l
23. b) ESC: x
Explicação:
Pressione ESC, posteriormente : (dois-pontos) e por fim pressione ENTER. A instrução em
questão orienta o editor a salvar o documento somente caso este tenha sofrido alteração.
24. a) /etc/vim/vimrc
Explicação:
Este caminho não foi mencionado em nossa obra, porém, bastava lembrar-se de que
normalmente os arquivos de configuração ficam dentro do /etc e você logo teria matado
essa questão.
Explicação:
Essa instrução irá ler o repositório remoto e atualizar a lista local. É recomendado executar
essa instrução antes de instalar um pacote com o intuito de obter a sua versão mais
recente.
27. b) /etc/apt/sources.list
www.tinarede.com.br
28. d) /etc/network/interfaces
30. b) uniq
31. a) 10dd
Explicação:
O símbolo de direcionamento < (sinal de menor que) está pegando o conteúdo de lista e
direcionando-o para que seja processado/lido por cat; na sequência passamos por meio do
pipe o conteúdo a ser processado por sort. Também poderíamos fazer assim: sort <
lista.txt
35. a) ESC: q!
37. a) Sim
38. a) Sim
39. d) rw-r--r--
40. a) rwxr--r--
41. b) Não
Explicação:
O Linux nada mais é do que um kernel (núcleo) do sistema; já o GNU/Linux é um
sistema operacional completo, formado pela camada de kernel e pelos demais
componentes do projeto GNU, tais como: programas diversos, drivers, interface gráfica
etc.
42. a) Sim
43. a) Sim
www.tinarede.com.br
44. a) Sim
47. a) Sim
48. b) Não
Explicação:
Essa propriedade é representada pela letra “t” ou “T”.
49. b) Não
Explicação:
O sudo está ligado diretamente a fatores de privilégios. Para adicionar um novo usuário ao
sistema, podemos utilizar os comandos adduser ou useradd.
50. c) /sbin
www.tinarede.com.br
Sugestões de estudo
• Copiar, mover e renomear diretórios individualmente ou em “lote”;
• Remover arquivos e diretórios;
• Usar curingas;
• Buscar arquivos por tamanho, tipo e tempo (data de criação, modificação etc.);
• Usar o histórico de comandos;
• Editar arquivo com Vi (Vim);
• Comandos essenciais do Vi (Vim);
• Encadear comandos;
• Redirecionar output;
• Estudar a hierarquia FHS;
• Pesquisar comandos no manual do Linux;
• Gerenciar permissões;
• Permissões especiais SUID, SGID e Sticky bit;
• Criar e gerenciar usuários e grupos;
• Gerenciar pacotes (foco em apt-get e yum).
Obviamente seu estudo deve ir além da lista sugerida acima; pense nesta como um ponto de
partida.
Sugiro ainda que estude todos os comandos apresentados na obra Linux Essencial – Por trás
da interface gráfica, e faça uma listinha com todos os comandos.
Caso seu foco seja uma certificação LPI, sugiro que estude o conteúdo indicado no link:
http://www.lpibrasil.com.br/lpic-1
www.tinarede.com.br
Conclusão
Chegamos ao fim desta obra, mas não fique triste! Seu estudo não acaba aqui. Seu perfil
profissional e até mesmo sua curiosidade incessante devem fazê-lo ir além destas poucas páginas;
considere ler outras obras, pesquisar na internet e visitar fóruns voltados ao assunto.
Assim como esse assunto me conquistou, espero que conquiste seu coração e que você possa
viver uma linda história de amor com a distribuição GNU/Linux que mais lhe agradar. O que importa
é ser feliz, não é mesmo? 😅
A curiosidade, o interesse e o desejo incessante por compreender “tudo” à minha volta me levaram
a estudar assuntos diversos ligados aos mais variados temas da tecnologia da informação. Com
base na experiência adquirida e na convivência com profissionais do segmento estou buscando,
sempre que possível, desenvolver obras como esta. Assim, espero que o leitor faça uma boa leitura
e que este material seja de grande valia para o seu crescimento profissional e pessoal.
Esta obra chegou ao fim, mas deixo como orientação a seguinte mensagem: não encerre por aqui
os estudos iniciados por meio deste material. Procure outras obras, artigos e demais materiais para
aprofundar o conhecimento já adquirido e se destacar perante os demais profissionais da área.
Ficarei agradecido caso o leitor possa me enviar o seu feedback quanto a esta obra. Para
isso deixo, à disposição meus dados para contato na página seguinte.
www.tinarede.com.br
Contatos
Fábio J. L. Ferreira
Em caso de dúvidas, sugestões, elogios, críticas ou demais assuntos,
favor entrar em contato por meio de uma das opções abaixo:
E-mail: fabiojanio@tinarede.com.br
Links do autor:
@_SDinfo #blogfabiojanio
fabiojanio blog
Caso os links acima não funcionem de forma adequada, utilize as ligações abaixo:
Twitter: http://www.twitter.com/_SDinfo
Facebook: http://www.facebook.com/blogfabiojanio
LinkedIn: http://br.linkedin.com/in/fabiojanio
Blog: http://www.fabiojanio.com/
www.tinarede.com.br