Buscar

SEGURANÇA DE SISTEMAS OPERACIONAIS (WINDOWS - LINUX) IV

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 73 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 73 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 73 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

146
Unidade IV
Unidade IV
7 INTRODUÇÃO AO SISTEMA OPERACIONAL GNU/LINUX
Neste tópico, faremos uma breve apresentação do sistema operacional GNU/Linux. Entenderemos 
um pouco do seu histórico, da motivação para a sua criação e de como funciona o seu processo 
de desenvolvimento, que não está baseado em uma empresa específica. Falaremos sobre a importância do 
projeto GNU e das licenças GPL e sobre o que significa um software ser considerado livre. Posteriormente, 
discorreremos a respeito do que é uma distribuição do GNU/Linux.
Abordaremos, também, a questão da documentação do sistema, explorando algumas ferramentas 
úteis para explicar o funcionamento dos comandos e das suas peculiaridades. Contemplaremos itens 
relativos ao mecanismo de segurança do GNU/Linux e exporemos o mecanismo de autenticação e o 
mecanismo de controle de acesso.
7.1 Projeto GNU e Linux
O que normalmente chamamos de sistema operacional GNU/Linux (ou simplesmente Linux) é, 
na realidade, uma coleção de diferentes projetos que são utilizados de forma integrada. Um sistema 
operacional é um software incrivelmente complexo, formado por diversas partes e diversos programas 
que se complementam. Por uma questão de praticidade, costumamos chamar de Linux toda essa coleção 
de ferramentas e projetos, mas, se formos cuidadosos, iremos perceber que estamos falando de várias 
coisas diferentes.
Lembremos da teoria de sistemas operacionais, que o kernel, ou núcleo, representa o “coração” 
do sistema operacional. Existem vários núcleos disponíveis no mercado, sendo um deles o Linux 
propriamente dito.
Não podemos utilizar um kernel de forma isolada: é necessário que existam outros programas para 
que um computador possa ser utilizado, como programas fundamentais para a cópia ou a remoção de 
arquivos, além de editores de texto, interfaces gráficas e navegadores para a internet, por exemplo.
O projeto GNU tinha como objetivo original desenvolver um sistema operacional que fosse 
completamente livre. Por “liberdade”, o projeto GNU tinha em mente as quatro ideias (ou liberdades 
fundamentais) expostas a seguir (STALLMAN, 2020):
1 Deve haver liberdade de utilização, ou seja, qualquer pessoa deve ser livre para executar um 
programa da forma que ela quiser. Dessa forma, uma empresa não deve ser capaz de restringir o 
usuário em relação à maneira como ele queira executar um programa nem de restringir quem executa 
o programa em si.
147
SEGURANÇA DE SISTEMAS OPERACIONAIS (WINDOWS / LINUX)
2 O código-fonte de um programa deve estar disponível para estudo, a fim de que possamos 
entender como um programa funciona, fazer modificações ou melhorias ou transportá-lo para outras 
plataformas, entre outras possibilidades.
3 Devemos ser livres para copiar um programa quantas vezes quisermos e “darmos” esse programa 
para outras pessoas.
4 Baseados na ideia exposta no item 2, se modificarmos um programa, deveremos ser livres para 
distribuir o programa modificado livremente.
Vale notar que, frequentemente, as liberdades são numeradas a partir do zero, mas, aqui, vamos 
começar do número 1.
Um programa que apresente uma licença de uso que respeite essas quatro liberdades é chamado de 
software livre pelo projeto GNU. Esse projeto visava produzir um sistema operacional em que todos os 
programas que fizessem parte da sua estrutura fossem livres e dessem liberdade total aos seus usuários.
Devemos ter em mente que essa tarefa é longuíssima. Fabricantes de software investem fortunas 
para produzir apenas uma fração do que o projeto GNU tinha o objetivo de fazer. Mesmo assim, com a 
ajuda de colaboradores distribuídos pelo mundo todo, muitos deles sem nenhuma forma de pagamento, 
o projeto GNU foi produzindo aos poucos as peças desse grande quebra-cabeça, fazendo programas 
como utilitários para a cópia e a remoção de arquivos e compiladores, entre muitos outros.
O desenvolvimento do kernel mostrou-se muito mais complexo do que originalmente se pensava, e 
esse foi um desafio para o projeto GNU durante um bom tempo. Contudo, alguns anos após a origem 
do projeto GNU, o programador finlandês Linus Torvalds começou a trabalhar em um kernel que 
iria ser chamado de Linux. Além disso, Linus resolveu utilizar a licença do projeto GNU, a GPL, para 
lançar o seu kernel.
Assim, a peça que faltava para o projeto GNU, o kernel, foi encontrada. Tornava-se possível haver um 
sistema operacional completo pelo uso dos diversos programas providos pelo projeto GNU, com o Linux 
como kernel. Esse sistema operacional é chamado de GNU/Linux, mas, frequentemente, as pessoas usam 
apenas a terminologia Linux, por simplificação.
148
Unidade IV
 Saiba mais
Para saber mais sobre o projeto GNU, acesse o site:
gnu.org
O site da Free Software Foundation também é bem interessante:
fsf.org
Para saber mais sobre software livre, podemos encontrar vários textos 
na seguinte página:
GNU. Filosofia do Projeto GNU. [s.d.]. Disponível em: https://www.gnu.
org/philosophy/philosophy.html. Acesso em: 17 set. 2020.
7.1.1 Um breve histórico do Linux
Vimos que o sistema operacional GNU/Linux utiliza o Linux como seu kernel. O desenvolvimento do 
Linux nasceu de uma necessidade: Linus Torvalds, o criador do Linux, queria usar um sistema operacional 
similar ao Unix no seu computador pessoal.
É interessante termos em mente o contexto no qual o Linux foi escrito, especialmente com relação 
aos sistemas operacionais disponíveis no final da década de 1980 e no início da década de 1990 nos 
computadores pessoais. O principal sistema operacional de microcomputadores ainda era o MS-DOS. 
Esse sistema operacional já mostrava limitações para os computadores da época, especialmente por 
causa das restrições no uso de memória e da ausência do recurso de multitarefas (execução simultânea 
de processos), ao menos na sua configuração padrão.
Por outro lado, os computadores pessoais haviam evoluído muito no que se refere às suas estruturas. 
Um microprocessador lançado pela Intel em 1985, o 80386, era uma máquina poderosa, de 32 bits e 
com recursos avançados (para a época) de gerenciamento de memória. Contudo, o sistema operacional 
não explorava todos os recursos disponíveis.
Linus queria utilizar na sua máquina um sistema operacional similar ao sistema Unix, usado, na 
ocasião, em computadores maiores e mais caros. Na época, existia um sistema operacional chamado 
de Minix, escrito pelo pesquisador Andrew Tanenbaum, mas esse sistema operacional era limitado 
e mais voltado para pesquisa. Linus chegou a sugerir mudanças e melhorias no Minix, que foram 
rejeitadas por Tanenbaum.
149
SEGURANÇA DE SISTEMAS OPERACIONAIS (WINDOWS / LINUX)
Os demais Unix da época ou eram muito caros ou estavam em meio a uma disputa legal com relação 
ao seu uso, devido a problemas de copyrights. Esse contexto estimulou Linus a começar a escrever o Linux.
Um aspecto interessante do desenvolvimento do Linux é o de que ele é aberto: Linus optou por 
compartilhar o código-fonte com quem estivesse interessado, de forma gratuita. Além disso, ele utilizou 
a licença GPL, o que permitiu que seu uso e sua cópia pudessem ser feitos de maneira livre. Muitas 
pessoas, do mundo todo, passaram a trabalhar com o kernel do Linux juntamente com Linus, o que 
gerou uma verdadeira rede internacional de colaboradores.
Nesse ponto, temos uma espécie de feliz coincidência: o projeto GNU dispunha de diversas 
ferramentas básicas para um sistema operacional, mas não tinha um kernel. Ao mesmo tempo, Linus 
tinha um kernel, mas não tinha as ferramentas. Dado que ambos os projetos eram abertos, a sua junção 
foi um passo natural e extremamente proveitoso.
Contudo, é preciso considerarmos que a simples disponibilização de um kernel e de programas ainda 
não é suficiente. É necessário integrar todas as aplicações em um conjunto coeso. Bibliotecas utilizadas 
por várias aplicações devem ser agrupadas e colocadas em locais convenientes e compartilhados. 
Deve ser criado um modelo de configuração. É necessário implantarum mecanismo de instalação em 
máquinas novas. Para atender a essas necessidades, surgiram as muitas distribuições Linux do mercado.
 Lembrete
Vale lembrar que o Unix, em geral, e o Linux, em particular, estão 
presentes como sistemas operacionais em uma percentagem significativa 
do parque computacional mundial. Logo, alguma familiaridade com o Linux 
amplia o escopo de atuação dos profissionais da área de TI.
7.2 As diversas distribuições do GNU/Linux
As distribuições GNU/Linux (coloquialmente chamadas de distros) agrupam milhares de aplicações 
de forma integrada. Existe uma forte influência do mundo Unix na estrutura da maioria das distribuições, 
tanto do ponto de vista de arquitetura quanto do ponto de uso, ainda que o modelo do Linux possa ser 
diferente do Unix em alguns aspectos.
Muitas das distribuições GNU/Linux centralizam-se na instalação de programas. Esses programas 
são distribuídos por meio de pacotes. O pacote contém o programa propriamente dito e outros arquivos 
necessários para a sua execução, como imagens, arquivos de configuração e documentação, entre 
outros. As distribuições padronizam o local de instalação dos programas, de modo que a sua atualização 
e a sua remoção se tornam mais fáceis e mais seguras.
No entanto, o papel das distribuições é mais do que simplesmente colecionar programas: muitas 
distribuições trabalham com um sistema nos quais os pacotes estão relacionados uns aos outros.
150
Unidade IV
Por exemplo, suponha que um programa utilize determinada biblioteca compartilhada. Essa biblioteca 
pode ser usada por outros programas também. Bibliotecas dinâmicas são instaladas em arquivos em separado, 
justamente pelo fato de serem utilizadas por vários programas diferentes. Um gerenciador de pacotes deve 
saber quais são as dependências entre diversos pacotes a fim de que a instalação de um pacote implique a 
instalação de todas as suas dependências, como uma biblioteca.
Outro problema que as distribuições devem resolver está ligado à manutenção. Programas 
frequentemente apresentam defeitos que devem ser corrigidos. Em outros casos, uma nova versão de 
um programa é lançada não por causa de erros, mas porque novas funcionalidades foram adicionadas.
Boas distribuições devem prover mecanismos que permitam a atualização consistente dos programas 
e das suas dependências. Versões de programas e de bibliotecas devem ser cuidadosamente controladas 
pelo mantenedor de determinado pacote. Esse é um problema muito sério, especialmente crítico quando 
temos vários programas com dependências conflitantes (o que, de fato, acontece em algumas situações).
Um ponto que deve ser controlado refere-se às licenças dos diversos programas envolvidos. Algumas 
distribuições são restritas e incluem apenas pacotes de programas que tenham licenças consideradas 
livres. Outras distribuições são mais permissivas e englobam pacotes com diversos tipos de licenças, 
inclusive proprietários.
A popularização da internet e a facilidade em se disponibilizar o código (devido a licenças abertas 
como a GPL) levou à enorme proliferação de distribuições Linux. Muitas foram abandonadas, outras 
ficaram confinadas para uso em nichos específicos. Há versões que se tornaram extremamente populares, 
como as distribuições Red Hat e Debian. Na realidade, muitas distribuições são baseadas nessas duas, 
mesmo tendo nomes diferentes.
Ainda que o uso e a estrutura geral das distribuições sejam similares, eles apresentam uma série de 
diferenças, que são importantes especialmente do ponto de vista da segurança.
Algumas distribuições, como o Debian, apresentam um ciclo de lançamento de versões mais demorado. 
Versões de teste do Debian GNU/Linux são lançadas antes da versão final, com o objetivo de que sejam 
detectados defeitos antes que eles afetem os usuários. Isso faz que os pacotes dessa distribuição não 
correspondam às últimas versões em desenvolvimento (com isso, algumas pessoas podem achar que os 
programas estão “desatualizados”).
Outras distribuições apresentam um ciclo de lançamento de versões mais agressivo, o que significa 
que elas podem conter, potencialmente, mais defeitos. Podemos perceber o relacionamento entre trocas 
da disponibilidade de programas e de recursos e aspectos vinculados à segurança.
O GNU/Linux tornou-se popular no mundo dos servidores, especialmente servidores web e de banco 
de dados. Assim, muitas distribuições têm um viés mais voltado ao público que lida com essas situações. 
Contudo, o uso do Linux em desktops e notebooks por usuários finais vem crescendo nos últimos anos, e 
diversas distribuições focam exatamente nesse tipo de usuário, como algumas versões do Ubuntu (que, 
por sua vez, é derivado do Debian).
151
SEGURANÇA DE SISTEMAS OPERACIONAIS (WINDOWS / LINUX)
7.3 Buscando documentação no próprio sistema (on-line)
Um aspecto fundamental de um sistema é a sua documentação. Para que um programa seja 
útil, o usuário deve saber como usá-lo. Para isso, é fundamental que a documentação seja clara e 
adequada. A existência de documentação correta também é benéfica para os desenvolvedores, que 
podem compreender melhor como um programa funciona, o que ajuda na identificação de falhas e na 
implementação de melhorias.
O Unix possui um utilitário de linha de comando bastante útil para documentação: o comando man 
(uma abreviação da palavra manual). Devemos nos lembrar de que, nos “primórdios da computação”, 
não tínhamos acesso a redes como a internet, a qual disponibiliza mecanismos de busca que permitem 
que encontremos respostas sobre qualquer tipo de dúvida. A documentação fornecida pelo sistema 
operacional era fundamental para o usuário.
O utilitário man possibilita que o usuário consulte, na própria linha de comando, informações 
sobre um comando. A apresentação também é bastante padronizada, com seções típicas contendo, por 
exemplo, o nome do programa, uma sinopse do seu uso, uma descrição, o autor, referências para outras 
páginas e programas e exemplos de uso, entre outras. Na figura a seguir, temos uma ilustração de página 
de manual para o comando ls:
Figura 99 – Página man do comando ls
152
Unidade IV
Além das páginas de manual, outros documentos bastante comuns no mundo GNU/Linux são os 
chamados HowTo. Esses documentos detalham como se deve proceder para fazer determinada tarefa, 
como a configuração de um programa ou a instalação de um driver para uso de um equipamento.
7.4 Alguns aspectos do modelo de segurança do GNU/Linux
Vamos agora explorar alguns aspectos da segurança no Linux. Devido à forte influência da arquitetura 
do Unix no Linux, seus modelos de segurança apresentam muitas similaridades, especialmente nos seus 
aspectos mais básicos (SILBERSCHATZ; GALVIN; GAGNE, 2015).
Contudo, antes de entrarmos nos detalhes de cada um desses sistemas, precisamos ter em mente 
dois conceitos importantes: o de autenticação e o de modelo de controle de acesso.
Para entendermos esses dois conceitos, vamos explorar um cenário hipotético, parcialmente baseado 
em Panek (2020). Suponha que uma empresa tenha sua sede em um prédio e que certo número de 
funcionários deva ir fisicamente a ela todos os dias para trabalhar.
Na portaria do prédio, uma pessoa (recepcionista) deve controlar quem pode ou não entrar na 
empresa. Apenas funcionários podem entrar, mediante a apresentação de um crachá. A apresentação 
do crachá representa um mecanismo de autenticação, enquanto os funcionários representam os 
usuários do sistema.
No entanto, uma vez dentro da empresa, nem todos os funcionários podem acessar todas as áreas 
ou todos os objetos da empresa. Alguns documentos podem ser de uso reservado apenas a um grupo 
de pessoas. Talvez existam documentos que possam ser acessados apenas por uma única pessoa. Nesse 
caso, podemos pensar que os usuários são, novamente, representados pelos funcionários, e que os 
objetos da empresa correspondem aos objetos de um sistema operacional, como arquivos e diretórios. 
Esse é o mecanismo de controle de acesso.Vamos, a seguir, explorar um pouco mais de perto esses dois mecanismos: o de autenticação e o de 
controle de acesso.
7.4.1 Mecanismo de autenticação
Precisamos lembrar que, nos sistemas operacionais Unix e GNU/Linux, um usuário deve ter uma conta 
no sistema, normalmente criada pelo administrador. Toda vez que o usuário se conectar ao sistema (ou 
“logar”, como coloquialmente se diz na área), ele deve fornecer primeiramente esse usuário e, depois, 
a sua senha, que deve ser checada pelo sistema operacional. Originalmente, esse processo era feito por 
meio dos chamados “terminais burros”, equipamentos sem nenhuma capacidade de processamento e 
que serviam apenas para enviar e receber caracteres para um computador principal. É por isso que muitos 
comandos do mundo Unix são feitos via linha de comando: originalmente, apenas esses caracteres 
podiam ser mostrados em um terminal típico.
153
SEGURANÇA DE SISTEMAS OPERACIONAIS (WINDOWS / LINUX)
Hoje, com o uso de interfaces gráficas, esse processo tornou-se visualmente mais interessante, uma 
vez que o login dos usuários é feito, de modo típico, em uma tela gráfica. Contudo, o processo continua 
sendo, em essência, o mesmo: inicialmente, deve ser inserido o nome do usuário, seguido da sua senha.
O processo de autenticação evoluiu bastante no mundo Unix, sendo que ele começou como um 
processo bastante simples. Contudo, antes de descrevermos o mecanismo original do ambiente Unix, 
vamos pensar na natureza do processo de autenticação.
Quando um usuário tenta se autenticar, o sistema operacional deve verificar se a senha do usuário 
está correta. Para isso, deve existir algum mecanismo de checagem. Uma abordagem na qual o sistema 
operacional simplesmente armazena os usuários e suas senhas em um arquivo e checa a correspondência 
toda vez que alguém tenta conectar é muito simples de ser feita, mas é também extremamente insegura. 
Qualquer pessoa que tenha acesso a esse arquivo sabe o usuário e a senha de todos os demais usuários 
do sistema, o que torna o sistema muito vulnerável.
Uma forma um pouco mais sofisticada e menos vulnerável estaria em se armazenar não a senha 
diretamente, mas uma forma codificada dessa senha. Um algoritmo deve ser utilizado para converter 
a senha do seu formato original em uma forma alterada. Assim, suponha que dado usuário do sistema 
tenha uma senha como 123456 (uma senha muito ruim, diga-se). Em vez de armazenar diretamente 
a cadeia 123456, um algoritmo deve converter essa senha em uma cadeia como TXBx17%3f, que é o 
valor armazenado. Toda vez que um usuário se conecta ao sistema e entra com a senha, o algoritmo 
é executado na senha digitada pelo usuário e o resultado é comparado com a cadeia TXBx17%3f. 
Se as cadeias forem iguais, significa que a senha digitada foi 123456 e que, portanto, o usuário deve ser 
autorizado a entrar no sistema. Se o resultado for diferente de TXBx17%3f, o sistema deve dizer que a 
senha digitada está incorreta. Observe também que o algoritmo utilizado deve ser projetado de forma 
que, dada uma sequência codificada, não seja possível (ou não seja fácil) obter a cadeia original, que é 
a senha do usuário.
A grande vantagem dessa estratégia é que o arquivo armazenado contém o usuário e o resultado da 
execução do algoritmo, não a senha propriamente dita. Assim, uma pessoa que simplesmente obtiver o 
arquivo não seria imediatamente capaz de identificar as senhas dos usuários.
Contudo, se alguém tiver acesso ao algoritmo utilizado para gerar as cadeias de caracteres (no exemplo, 
TXBx17%3f) e também tiver acesso ao arquivo com as senhas codificadas, seria possível que essa pessoa 
tentasse identificar as senhas originais por meio de um processo de força bruta. Para que isso seja 
evitado, utilizamos uma técnica em que é adicionada uma cadeia aleatória à senha original e, depois, 
essa cadeia modificada é utilizada pelo algoritmo. Tal cadeia aleatória é chamada de sal (no inglês, salt, 
como se a senha original fosse “salgada” ou intensificada). Esse processo dificulta bastante o processo 
de busca por tentativa e erro, uma vez que as cadeias a serem codificadas se tornam maiores e mais 
complexas (desde que não se tenha acesso às cadeias aleatórias utilizadas).
No mundo Unix, o arquivo contendo as senhas codificadas e outras informações do usuário eram 
armazenadas em um arquivo chamado passwd, armazenado em /etc. Esse arquivo precisa ser livre 
para ser lido por todos os usuários porque contém outras informações que são utilizadas por vários 
154
Unidade IV
programas, como o identificador numérico dos usuários, os diretórios home e shell padrão, entre outros. 
É por isso que é necessário que vários usuários sejam capazes de ler esse arquivo, e é por isso que foi 
necessário um esquema de codificação das senhas. Caso contrário, todos os usuários seriam capazes 
de ver as senhas dos demais. Hoje, no mundo Linux, o processo empregado é um pouco diferente, 
pois a senhas codificadas (ou, mais corretamente, criptografadas) são gravadas em outro arquivo, o 
arquivo shadow, também gravado no diretório /etc, mas que não pode ser lido pelos usuários comuns. 
Contudo, o arquivo passwd continua existindo, contendo as demais informações, exceto as senhas. Além 
do arquivo /etc/passwd e do arquivo /etc/shadow, outros arquivos utilizados no processo de controle 
de privilégios e permissões são o /etc/group e o /etc/gshadow, relacionados ao mecanismo de grupos 
(JANG; MESSIER, 2017).
Ainda que esse mecanismo de autenticação seja bastante simples, baseado essencialmente na 
leitura de arquivos de texto e no uso de algumas funções de codificação, o aumento da complexidade 
dos sistemas e do número de usuários passou a requerer formas mais flexíveis e/ou sofisticadas 
de autenticação.
Em 1996, a Sun introduziu a tecnologia PAM (Pluggable Authentication Modules) no Solaris 2.6 para 
a autenticação de usuários (GEISSHIRT, 2007). Ela é utilizada também no mundo GNU/Linux, por meio 
do Linux-PAM (SOBELL, 2010). Essa tecnologia permite a flexibilização e a configuração do processo de 
autenticação. A grande vantagem de usarmos os módulos PAM é que o processo de autenticação se 
torna unificado e transparente para a aplicação (LAWRENCE, 2005). Caso o processo de autenticação 
seja alterado (por exemplo, em vez de utilizarmos senhas, usamos algum mecanismo de biometria), o 
código da aplicação continua o mesmo. É responsabilidade do PAM dizer para a aplicação se o usuário 
foi autenticado ou não.
Outra característica interessante do PAM é que ele pode ser configurado por arquivos (LAWRENCE, 
2005). A configuração pode ser feita por serviço específico, de forma que é possível especificar 
configurações diferentes para programas diferentes. Essas configurações podem ser encontradas 
normalmente no diretório /etc/pam.d.
Outra vantagem do PAM é que, em virtude da sua estrutura modular, podemos adicionar ou modificar 
o comportamento de autenticação sem haver mudança no código da aplicação (LAWRENCE, 2005). 
Esses módulos podem ser utilizados com diferentes finalidades e apresentar, por exemplo, funções para 
mudanças de senha, configurações de sessões, especificações de métodos de autenticação de contas e 
restrições de contas, entre outros.
7.4.2 Controle de acesso
O controle de acesso no Linux é feito de várias formas, sendo as principais o controle de acesso 
discricionário e o controle de acesso obrigatório. Vamos analisar, inicialmente, o controle de 
acesso discricionário.
Considere uma situação na qual um usuário navegue até o diretório /usr/bin, digite o comando 
‘ls -l’ e obtenha a seguinte lista de arquivos (mostraremos apenas a parte final da saída, por simplicidade):
155
SEGURANÇA DE SISTEMAS OPERACIONAIS (WINDOWS / LINUX)
-rwxr-xr-x 1 root root 186664 ago 16 2019 zipinfo
-rwxr-xr-x 1 root root 89488 abr 21 2017 zipnote
-rwxr-xr-x 1 root root 93584 abr 21 2017 zipsplit
-rwxr-xr-x 1 root root 2206 dez 13 2019 zless
-rwxr-xr-x 1 root root 1842 dez 13 2019 zmore
-rwxr-xr-x 1root root 4553 dez 13 2019 znew
Observe que, na primeira coluna da saída, temos um conjunto de letras e de símbolos, como 
-rwxr-xr-x. Essas são as informações de permissão do arquivo. Vamos investigar um arquivo em 
específico, por exemplo, o arquivo znew. Observe a saída do comando stat znew nesse diretório:
Arquivo: znew
Tamanho: 4553 Blocos: 16 bloco de E/S: 4096 arquivo comum
Dispositivo: 805h/2053d Inode: 16778649 Links: 1
Acesso: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Acesso: 2019-12-13 12:41:46.000000000 -0300
Modificação: 2019-12-13 12:41:46.000000000 -0300
Alteração: 2020-05-16 17:05:17.650083371 -0300
Criação: -
No último trecho, temos novamente as permissões relacionadas a um arquivo em específico, no 
caso o arquivo znew.
As permissões para um arquivo podem ser
•	 de leitura, representada pela letra r (do inglês read);
•	 de escrita, representada pela letra w (do inglês write);
•	 de execução, representada pela letra x (do inglês execute, segunda letra).
A ausência de permissão é representada por um traço: -.
As permissões ainda podem ser dadas a três categorias (HAEDER et al., 2010):
•	 ao usuário que é o dono do arquivo, que normalmente é o usuário que o cria;
•	 ao grupo desse usuário;
•	 aos usuários restantes.
156
Unidade IV
Assim, temos três grupos de permissões aplicáveis a três classes de usuários, o que totaliza nove 
possibilidades, representadas por bits.
Existem ainda mais três atributos especiais, associados a um arquivo, o que resulta em 12 bits.
Na figura a seguir, temos a estrutura desses bits para o arquivo citado:
0 0 0 1 1 1 1 0 1 1 0 1
Bits especiais Usuário Grupo Outros
SUID r: leitura r: leitura r: leitura
SGID w: escrita w: escrita w: escrita
Sticky x: execução x: execução x: execução
Figura 100 – Estrutura dos bits de permissão para um arquivo
Um campo com o bit 1 significa que a permissão foi dada, enquanto um campo com o bit zero significa 
que a permissão não foi concedida. Observe que esses atributos são normalmente codificados em octal e 
podem ser ajustados para cada arquivo pelo comando chmod. No exemplo da figura, ignorando os três 
primeiros bits especiais, podemos identificar o segundo conjunto de três bits (contando da direita para 
a esquerda) como 7 em octal, que equivale a 111 em binário. Isso significa que o usuário tem permissão 
para leitura, escrita e execução. Já os usuários do grupo têm permissão 101, que equivale ao número 5 
em octal, ou seja, podem ler ou executar o arquivo. O mesmo acontece para os demais usuários (o último 
grupo de três bits). O exemplo dado foi de um arquivo, mas um raciocínio similar se aplica aos diretórios.
Os três primeiros bits são bits especiais, conforme explicado a seguir.
O primeiro corresponde ao SUID, e se aplica apenas a arquivos. Se esse bit for igual a 1, isso significa 
que o processo resultante, caso esse arquivo seja executado, deve pertencer ao usuário que criou o 
arquivo, e não ao usuário que o executou. Isso é normalmente utilizado para que um programa rode 
com permissões superiores às permissões do usuário que o executa, o que pode ser necessário para 
alguns programas, como o passwd, por exemplo (HAEDER et al., 2010).
O segundo bit, o SGID, pode ter dois usos: um para arquivos e outro para diretórios. No caso de arquivos 
executáveis, seu funcionamento é similar ao funcionamento do SUID, mas voltado para a associação do 
grupo de um processo. No segundo caso, quando esse bit é aplicado a um diretório, os arquivos criados 
dentro desse diretório vão pertencer ao mesmo grupo a ele associado (HAEDER et al., 2010).
157
SEGURANÇA DE SISTEMAS OPERACIONAIS (WINDOWS / LINUX)
O terceiro bit é chamado de sticky bit em função do seu antigo uso para o gerenciamento de memória. 
Caso estivesse atribuído a um arquivo que representasse um programa, ele permaneceria em 
memória após o término da sua execução, e, por isso, é como se o programa tivesse se “colado” à memória 
(a palavra sticky, por ser traduzida como grudento ou pegajoso). Esse mesmo bit tem uma finalidade 
diferente quando aplicado a diretórios em que restringe os usuários que podem renomear ou deletar 
arquivos nele presentes: apenas o usuário dono do arquivo, o usuário dono do diretório e, obviamente, 
o usuário root (HAEDER et al., 2010).
Adicionalmente a essas estratégias, o Linux também apresenta as chamadas access control lists, 
que permitem ajustar ainda mais as permissões e também funcionam como uma camada adicional de 
controle de acesso discricionário. Complementando o controle de acesso discricionário, temos sistemas 
como o AppArmor e o SELinux, que operam no controle de acesso obrigatório, ou seja, não podem ser 
modificados pelo usuário e são configurados pelo administrador da máquina (JANG; MESSIER, 2017).
8 INSTALAÇÃO E USO DO SISTEMA OPERACIONAL GNU/LINUX
Neste tópico, vamos nos aprofundar um pouco mais no mundo dos sistemas operacionais 
GNU/Linux. Inicialmente, veremos como fazer a sua instalação, estudaremos algumas das suas principais 
ferramentas e abordaremos alguns aspectos fundamentais da sua estrutura.
Existem várias distribuições do sistema operacional GNU/Linux disponíveis no mercado. Muitas 
dessas distribuições costumam ser utilizadas no contexto de servidores. Contudo, é crescente o uso 
de sistemas GNU/Linux em máquinas do tipo desktop e notebook, para uso pessoal e, até mesmo, 
para entretenimento. Há algumas distribuições (ou versões de distribuições) que são produzidas com 
foco no uso pessoal.
Quando um sistema operacional é utilizado em um ambiente profissional e em servidores, sua 
instalação, idealmente, deve ser precedida por uma etapa cuidadosa de projeto e de verificação de 
compatibilidade com o hardware.
Com relação à instalação de uma distribuição GNU/Linux, ela vem sendo bastante simplificada nos 
últimos anos. Hoje, ela é realizada de forma gráfica e de maneira bastante automática. Isso é, por um 
lado, algo positivo, pois possibilita que grande número de pessoas seja capaz de realizar a instalação. 
Por outro lado, isso pode fazer com que as pessoas responsáveis não se preocupem em conhecer os 
detalhes do sistema operacional e não façam o devido planejamento da instalação e manutenção.
8.1 Distribuição CentOS
Neste item, vamos estudar como fazer a instalação de uma distribuição GNU/Linux chamada de 
CentOS. Ela é derivada da distribuição Red Hat e é bastante utilizada em servidores. Para simplificarmos 
nosso estudo, sugerimos a instalação dessa distribuição em uma máquina virtual, como a Oracle 
VirtualBox. Isso permite explorar a instalação e a configuração de uma distribuição GNU/Linux sem 
que precisemos nos preocupar com um hardware real. É importante termos em mente que instalações 
feitas em uma máquina real podem resultar em perda de dados, caso sejam realizadas em uma máquina 
158
Unidade IV
que já tenha um sistema operacional instalado. Por isso, como dissemos, aconselhamos o uso de uma 
máquina virtual.
Para os próximos passos, partiremos do princípio de que o programa Oracle VM VirtualBox já se 
encontra instalado na máquina, pois sua instalação foge do escopo deste texto. Além disso, partimos do 
princípio de que a máquina host deve ter um sistema operacional de 64-bits instalado. Contudo, vamos 
mostrar como é possível fazer a criação da máquina virtual nesse ambiente. Depois, vamos mostrar 
como fazer a instalação da distribuição do GNU/Linux nessa máquina.
 Saiba mais
Para saber mais sobre a distribuição CentOS, confira o site:
CENTOS. About CentOS. [s.d.]. Disponível em: https://centos.org/about/. 
Acesso em: 20 ago. 2020.
Para conhecer a ferramenta Oracle VM VirtualBox, acesse:
https://www.virtualbox.org/
8.2 Passos para a instalação da distribuição
Este item está dividido em duas etapas (ainda que os passos tenham sido numerados sequencialmente). 
Na primeira etapa, devemos criar uma máquina virtual nova no Oracle VM VirtualBox (aqui, foi utilizada 
a versão 6.1). Na segunda, vamos instalar o CentOS nessa máquinavirtual.
Passo 1. Ao abrir o Oracle VM VirtualBox, selecionamos o botão Novo, como mostrado na 
figura a seguir:
Figura 101 – Opção de criar nova máquina virtual
159
SEGURANÇA DE SISTEMAS OPERACIONAIS (WINDOWS / LINUX)
Passo 2. Devemos escolher um nome para a máquina virtual (por exemplo, centos, como mostrado 
na figura a seguir) e um diretório para o seu armazenamento. Na mesma tela, não devemos nos esquecer 
de escolher o tipo Linux e a versão Red Hat (64 bit). Finalmente, selecionamos o botão Próximo, na parte 
inferior da janela.
Figura 102 – Nomeando e escolhendo o local de armazenamento
160
Unidade IV
Passo 3. Devemos escolher a quantidade de memória RAM disponível para a máquina virtual. 
Esse valor vai depender da quantidade de memória disponível na máquina real. Pensando apenas no 
funcionamento da máquina virtual, um valor adequado para testes básicos (não para uma situação real 
de funcionamento) é de 1 GB de memória RAM, que pode rodar de forma adequada supondo que a 
máquina real tenha mais de 4 GB de memória RAM disponível. Essa etapa é mostrada na figura a seguir. 
Novamente, devemos selecionar o botão Próximo.
Figura 103 – Selecionando a quantidade de memória da máquina virtual
161
SEGURANÇA DE SISTEMAS OPERACIONAIS (WINDOWS / LINUX)
Passo 4. Da mesma forma que uma máquina real, a máquina virtual também necessita de alguma 
forma de armazenamento. Assim, nesse passo, devemos criar um disco virtual para a máquina. 
Selecionamos a opção Criar um novo disco virtual agora e, posteriormente, clicamos no botão Criar, 
como mostrado na figura a seguir:
Figura 104 – Criando o disco rígido para a máquina virtual
162
Unidade IV
Passo 5. O Oracle VirtualBox pode trabalhar com vários tipos de arquivos de discos virtuais. Nesse 
passo, devemos escolher qual é o tipo de arquivo que queremos que seja utilizado. Podemos optar pelo 
formato VDI e selecionar o botão Próximo, como mostrado na figura a seguir:
Figura 105 – Escolhendo o tipo de arquivo do disco
163
SEGURANÇA DE SISTEMAS OPERACIONAIS (WINDOWS / LINUX)
Passo 6. Devemos escolher o tipo de alocação do disco. Selecionamos Dinamicamente alocado, 
como mostrado na figura a seguir. Posteriormente, clicamos no botão Próximo.
Figura 106 – Escolhendo o tipo de alocação do disco
164
Unidade IV
Passo 7. Devemos selecionar o local onde vamos armazenar o arquivo do disco virtual e qual deve 
ser o seu tamanho. Devemos escolher um diretório no qual temos permissão de leitura e de escrita. 
Com relação ao tamanho, devemos nos certificar de que o disco real tenha uma quantidade adequada 
de espaço disponível, suficiente para armazenar o disco virtual (ainda que o espaço não seja totalmente 
utilizado no início). Como vamos criar uma máquina apenas para testar a instalação, não será necessário 
termos um disco com grande espaço, sendo que apenas 20 GB são suficientes, como mostrado na figura 
a seguir. Contudo, valores maiores podem ser utilizados, desde que exista espaço suficiente disponível. 
Uma vez configurados o local e o tamanho, devemos clicar no botão Criar.
Figura 107 – Selecionando o local de armazenamento e tamanho do disco virtual
165
SEGURANÇA DE SISTEMAS OPERACIONAIS (WINDOWS / LINUX)
Passo 8. Nesse ponto, a máquina já foi criada, mas está sem nenhum sistema operacional. Além disso, 
temos de fazer algumas configurações. Primeiramente, fazemos o download da mídia de instalação do 
CentOS. Para isso, devemos acessar o site https://centos.org/ e selecionar a opção de download, dada em 
https://centos.org/download/. Vamos baixar a versão de 64-bits do CentOS, como indicado no retângulo 
vermelho na figura a seguir:
Figura 108 – Download da versão x86_64
166
Unidade IV
Passo 9. Devemos escolher um mirror para o download do CD de instalação, como mostrado na 
figura a seguir:
Figura 109 – Listas de mirrors para download da imagem do CD de instalação
167
SEGURANÇA DE SISTEMAS OPERACIONAIS (WINDOWS / LINUX)
Passo 10. Ao escolhermos um mirror, devemos obter uma imagem como a mostrada na figura 
a seguir. Podemos, agora, escolher qual arquivo vamos baixar. Vamos escolher a imagem do CD de 
instalação, para economizarmos tempo e volume de download. No caso, selecionamos o arquivo 
CentOS-8.2.2004-x86_64-boot.iso.
Figura 110 – Listas de arquivos para download
168
Unidade IV
Passo 11. Depois de concluirmos o download da imagem do CD de instalação, devemos configurar 
a imagem do CD no Oracle VirtualBox a fim de que a máquina virtual seja capaz de iniciar a máquina 
com o CD inserido no drive virtual. Para isso, devemos selecionar a máquina criada e selecionar a opção 
armazenamento, como mostrado na figura a seguir:
Figura 111 – Seleção da opção de armazenamento
169
SEGURANÇA DE SISTEMAS OPERACIONAIS (WINDOWS / LINUX)
Passo 12. Com a opção do passo 11 selecionada, é aberta uma nova janela de configuração, onde 
devemos selecionar o CD virtual, que inicialmente está vazio. No pequeno botão com o símbolo de um 
CD, devemos selecionar a imagem que acabamos de baixar e, assim, obtemos como resultado o que é 
mostrado na figura a seguir. Com isso, a máquina virtual pode acessar o conteúdo do CD de instalação. 
Devemos selecionar o botão OK.
Figura 112 – Seleção da imagem do CD
170
Unidade IV
Passo 13. Devemos iniciar a máquina virtual. Com a máquina que criamos selecionada no painel da 
esquerda, selecionamos o botão Iniciar, como mostrado na figura a seguir:
Figura 113 – Detalhe do botão para iniciar a máquina virtual
Passo 14. Ao iniciarmos a máquina, como não temos ainda nenhum sistema operacional instalado, 
o Oracle VirtualBox vai solicitar a escolha de uma unidade de boot. Devemos selecionar a imagem que 
acabamos de baixar, como mostrado na figura a seguir. Depois, selecionamos o botão Iniciar.
Figura 114 – Selecionando a unidade de boot
171
SEGURANÇA DE SISTEMAS OPERACIONAIS (WINDOWS / LINUX)
Passo 15. A máquina inicia o processo de boot do CD, como mostrado na figura a seguir. Na tela 
inicial de boot do CD, podemos selecionar a opção Install CentOS 8. Uma observação importante: ao 
clicarmos na tela do Oracle VirtualBox, o ponteiro do mouse deve ficar “preso”, ou seja, ele fica capturado 
pela máquina virtual. Para “soltarmos” o ponteiro do mouse, devemos pressionar a tecla do hospedeiro, 
que é mostrada na parte inferior da janela do aplicativo. Essa tecla é configurável. No caso da figura, a 
tecla é o Ctrl direito.
Figura 115 – Tela inicial de boot do CD de instalação
172
Unidade IV
Passo 16. Devemos, agora, aguardar um tempo para que a máquina prossiga com o boot do CD. Após 
alguns segundos, obtemos uma janela para a seleção da linguagem de instalação. Podemos selecionar 
Português (Brasil), como mostrado na figura a seguir. Depois, devemos pressionar o botão Continuar, 
que fica na parte inferior da tela.
Figura 116 – Tela de seleção da língua
173
SEGURANÇA DE SISTEMAS OPERACIONAIS (WINDOWS / LINUX)
Passo 17. Aqui, devemos ter acesso a uma tela com diversas opções de instalação, como mostrado na 
figura a seguir. Primeiramente, devemos configurar a rede, selecionando a opção Network e nome do host.
Figura 117 – Configuração da instalação
174
Unidade IV
Passo 18. Na tela de configuração do nome do host e da rede, devemos inicialmente ativar a 
interface de rede por meio do “botão” logo ao lado do seu nome, como destacado no retângulo vermelho 
na figura a seguir. Observamos que, também, devemos configurar um nome para a máquina, no campo 
de texto destacado na parte inferior esquerda da figura. Depois de escolhermos um nome (no caso, 
escolhemos meulinux.meudominio, apenas a título de exemplo), devemos pressionar o botão Aplicar. 
Assim, o nome da máquina deve aparecer no canto inferior direito da figura, no local destacado. Depois 
disso, podemos selecionar o botão Pronto, na parte superior esquerda da tela.
Figura 118 – Configuração da rede
175
SEGURANÇA DE SISTEMAS OPERACIONAIS (WINDOWS / LINUX)
Passo 19. Podemos observar, na figuraa seguir, que a opção de Fonte de instalação não apresenta mais 
um erro. Isso acontece porque o programa de instalação foi capaz de atualizar a sua fonte de instalação 
(que será a rede). Devemos agora selecionar Instalação destino, que corresponde ao particionamento do 
disco onde o sistema operacional vai ser instalado. Observamos que, como não estamos fazendo uma 
instalação profissional, podemos utilizar o particionamento automático, a fim de simplicidade. Vemos, 
na figura posterior, que o disco virtual criado deve aparecer como a única opção de instalação. Nessa 
tela, simplesmente devemos selecionar a opção Pronto, voltando à tela original.
Figura 119 – Estado do resumo da instalação
176
Unidade IV
Figura 120 – Particionamento do disco
177
SEGURANÇA DE SISTEMAS OPERACIONAIS (WINDOWS / LINUX)
Passo 20. O instalador volta para a tela com um resumo das opções de instalação, como mostrado 
na figura a seguir. Observamos que agora devemos clicar na opção Seleção de Software (destacada no 
quadro vermelho na figura), escolhendo o conjunto de pacotes que queremos instalar na máquina.
Figura 121 – Estado da instalação
178
Unidade IV
Passo 21. Vamos fazer a instalação mais básica possível, mas com uma interface gráfica. Em um 
momento posterior, se quisermos, podemos adicionar outros programas à máquina virtual. Dessa forma, 
apenas a primeira opção deve estar selecionada (Servidor com GUI), como destacado na figura a seguir. 
Depois, devemos pressionar o botão Pronto no canto superior esquerdo da janela. É possível vermos 
também, na parte direita da tela, que existe uma grande quantidade de opções de programas que 
podem ser adicionados, como servidores de FTP e WEB, entre outros.
Figura 122 – Seleção de pacotes
179
SEGURANÇA DE SISTEMAS OPERACIONAIS (WINDOWS / LINUX)
Passo 22. Na tela do resumo de instalação, mostrada na figura a seguir, podemos perceber que 
todos os itens estão prontos, de forma que podemos proceder à instalação, selecionando o botão Iniciar 
a Instalação, que fica no canto inferior direito da tela.
Figura 123 – Resumo da instalação
180
Unidade IV
Passo 23. O sistema deve começar o processo de instalação, que pode demorar um pouco, dependendo 
das características da máquina real que está sendo utilizada (veja a figura a seguir). Enquanto isso, 
podemos já selecionar a senha do usuário root, que é o usuário administrador do GNU/Linux, e também 
criar um novo usuário. Vamos inicialmente criar a senha para o usuário root, selecionando a opção Root 
Password. Obtemos a tela mostrada na figura posterior.
Figura 124 – Processo de instalação
181
SEGURANÇA DE SISTEMAS OPERACIONAIS (WINDOWS / LINUX)
Figura 125 – Configurando a senha do usuário root
182
Unidade IV
Passo 24. Na tela de configuração da senha do usuário root (veja a figura a seguir), devemos digitar 
uma senha nova. O “marcador” na tela tenta nos dizer se a senha é forte ou fraca. Depois de selecionada 
a senha, selecionamos o botão Pronto, que fica no canto superior esquerdo da tela.
Passo 25. Agora, podemos criar um novo usuário, selecionando a opção User Creation na tela, como 
mostrado na figura a seguir:
Figura 126 – Selecionando a opção User Creation
183
SEGURANÇA DE SISTEMAS OPERACIONAIS (WINDOWS / LINUX)
Passo 26. Devemos escolher um nome e uma senha para o novo usuário. Depois, podemos selecionar 
o botão Pronto, que fica no topo esquerdo da tela e está mostrado na figura a seguir. Precisamos nos 
certificar de que a opção Necessário uma senha para usar essa conta esteja selecionada.
Figura 127 – Adicionando e configurando um novo usuário
184
Unidade IV
Passo 27. Devemos aguardar o processo de instalação. Ao fim, uma mensagem de que a instalação 
foi terminada vai ser mostrada na parte inferior direita da tela. Então, podemos pressionar o botão 
Reinicializar, como mostrado na figura a seguir:
Figura 128 – Finalizando a instalação
185
SEGURANÇA DE SISTEMAS OPERACIONAIS (WINDOWS / LINUX)
Passo 28. Como a imagem do CD está inserida no disco virtual, a máquina vai reiniciar do CD e 
iniciar novamente o processo de instalação. A fim de evitarmos isso e não começarmos novamente todo 
o processo, devemos remover a imagem do CD de instalação do drive virtual. Para isso, pressionamos a 
tecla do hospedeiro, caso o ponteiro do mouse esteja “preso” dentro da janela, e, depois, clicamos com 
o botão direito do mouse no pequeno ícone de um CD na parte inferior da tela. Selecionamos a opção 
Remover disco do drive virtual, como mostrado na figura a seguir. Depois disso, no menu Máquina, 
selecionamos a opção Reinicializar.
Figura 129 – Removendo o CD do disco virtual
Passo 29. Devemos aguardar o processo de boot da máquina. Uma tela vai ser mostrada perguntando 
se o usuário concorda com o termo de licença do sistema operacional. Selecionamos a opção License 
Information no centro da tela, como mostrado na figura a seguir:
Figura 130 – Selecionando a opção de informação da licença de uso
186
Unidade IV
Passo 30. Devemos ler o acordo de licença do CentOS e, caso concordemos, devemos checar a opção 
na parte inferior da tela que diz Eu aceito o contrato da licença e pressionar o botão Pronto na parte 
superior (veja a figura a seguir).
Figura 131 – Licença de uso do CentOS
187
SEGURANÇA DE SISTEMAS OPERACIONAIS (WINDOWS / LINUX)
Passo 31. Devemos pressionar o botão Finish configuration na parte inferior da tela de configuração 
iniciar, como mostrado na figura a seguir:
Figura 132 – Tela de configuração inicial
188
Unidade IV
Passo 32. Finalmente, estamos prontos para “logar” no sistema (veja a figura a seguir) e começar o 
uso do sistema operacional. O CentOS vai fazer mais algumas perguntas de configuração para o usuário, 
começando pela língua (conforme mostra a figura posterior). Depois de selecionada a opção, o usuário 
deve pressionar o botão Próximo, no topo da tela.
Figura 133 – Logando no sistema operacional
189
SEGURANÇA DE SISTEMAS OPERACIONAIS (WINDOWS / LINUX)
Figura 134 – Tela inicial depois de o usuário ter logado
190
Unidade IV
Passo 33. Vemos uma tela para a configuração do teclado, como mostrado na figura a seguir. Depois 
de feita a seleção solicitada, devemos pressionar o botão Próximo, que fica no topo da tela.
Figura 135 – Tela de configuração do teclado
191
SEGURANÇA DE SISTEMAS OPERACIONAIS (WINDOWS / LINUX)
Passo 34. Na próxima tela, podemos ligar ou desligar o serviço de localização. Vamos deixar essa 
opção desligada, como mostrado na figura a seguir:
Figura 136 – Desligando o serviço de localização
192
Unidade IV
Passo 35. Podemos também sincronizar o sistema com vários serviços on-line, como os serviços do 
Google ou da Microsoft. Vamos ignorar essas opções e pressionar o botão Ignorar, que fica no topo da tela 
da figura a seguir:
Figura 137 – Conexão com serviços on-line
193
SEGURANÇA DE SISTEMAS OPERACIONAIS (WINDOWS / LINUX)
Passo 36. Podemos finalizar a configuração (veja a figura a seguir) e começar a utilizar o sistema 
operacional. Uma tela de boas-vindas, com pequenas explicações sobre tarefas comuns, vai ser mostrada:
Figura 138 – Finalização da configuração
194
Unidade IV
Figura 139 – Sistema operacional CentOS
 Lembrete
Vale lembrar que no mundo empresarial há, basicamente, duas 
distribuições do Linux predominantes: Suse e Red Hat, do qual o CentOs é 
a versão gratuita. Logo, o CentOs é recomendável para organizações com 
recursos limitados e para uso didático.
8.3 Edição de textos no GNU/Linux: o editor de texto Vim
Uma das ferramentas que administradores de rede e programadores de computadores mais utilizam 
é o editor de texto. Contudo, o tipo e a finalidade de um editor de texto nesses cenários são um pouco 
diferentes do tipo e da finalidade dos editores de texto voltados para a produção de livros, revistas e 
relatórios (como é o caso do Microsoft Word, por exemplo).
Programadores e administradores de sistemas utilizam editores de texto para alterar arquivos deconfiguração, scripts ou códigos de programas. O objetivo desse tipo de editor não é produzir textos 
195
SEGURANÇA DE SISTEMAS OPERACIONAIS (WINDOWS / LINUX)
visualmente bonitos, como ocorre em uma revista, mas elevar a produtividade do seu usuário. Seu tamanho 
deve ser “leve”, com o objetivo de permitir que ele “abra” e edite um arquivo de configuração, por exemplo.
Um dos editores mais clássicos e conhecidos do mundo Unix é o editor Vi. Sua pronúncia é similar 
(no inglês) a vee-eye, uma abreviação para visual. Ele foi incorporado ao padrão POSIX, o que tornou 
esse editor extremamente popular no mundo Unix.
Esse editor é um pouco diferente dos outros editores de texto “convencionais”, porque ele apresenta modos 
de trabalho. Em um dos seus modos, que vamos chamar de modo de entrada, seu funcionamento é similar ao de 
um editor de texto comum, em que o usuário digita um texto, e esse texto é diretamente inserido no arquivo em 
que o usuário está trabalhando. No outro modo de funcionamento, que vamos chamar de modo de controle, a 
entrada de usuário deixa de ser mandada para o arquivo e passa a ser interpretada como comandos para o editor. 
À primeira vista isso pode parecer um pouco estranho, pois o usuário deve memorizar a função associada a cada 
tecla, mas, após um tempo, a produtividade desse usuário se torna bastante elevada.
A grande vantagem de um editor como o Vi é que o usuário não precisa utilizar o mouse ao trabalhar, 
mantendo sempre suas mãos no teclado e praticamente em uma mesma posição. Por movimentar 
menos as mãos, o usuário consegue digitar mais rapidamente, pois as mãos vão ficar sempre em uma 
posição ótima no teclado.
O editor Vi original é bem antigo (1978) e, com o tempo, surgiram várias versões de código aberto 
com mais funcionalidades. Uma dessas versões é o Vim, ou Vi Improved, desenvolvido originalmente por 
Bram Moolenaar. Ele tem uma série de novas funcionalidades, além de reproduzir praticamente todas 
as funcionalidades originais. Por ser uma aplicação de código aberto e ser bastante poderoso, é um dos 
editores mais comuns nas diversas distribuições Linux. Vamos examinar um pouco o seu funcionamento.
8.3.1 Funcionamento básico do editor Vim
Programadores e administradores de sistemas GNU/Linux (e também de sistemas Unix) tendem a 
utilizar bastante a linha de comando, também chamada de terminal. Isso ocorre por vários motivos, 
como os indicados a seguir.
•	 Ampla disponibilidade de ferramentas que trabalham no modo texto.
•	 Possibilidade da escrita de scripts (shell scripts) que automatizam diversas tarefas.
•	 Elevada velocidade no uso das ferramentas.
•	 Facilidade em combinar a saída de programas na entrada de outros, com a utilização de pipes.
A principal forma de utilização do Vim é via terminal (ou linha de comando). Existe também uma 
versão com uma interface gráfica. Para usarmos o Vim no terminal, basta digitarmos vim, seguido do 
nome do arquivo que queremos editar. Se executarmos simplesmente o comando vim, obtemos uma 
tela como a mostrada na figura a seguir:
196
Unidade IV
Figura 140 – Tela de abertura do Vim
Por padrão, o editor começa no modo de controle, não no modo de edição. Para mudarmos o editor 
para o modo de edição e podermos digitar o texto, pressionamos a tecla i. Ao fazermos isso, observamos 
que a mensagem INSERÇÃO vai ser mostrada no canto inferior esquerdo da tela, o que indica a mudança 
do modo, como mostrado na figura a seguir:
Figura 141 – Modo de inserção
197
SEGURANÇA DE SISTEMAS OPERACIONAIS (WINDOWS / LINUX)
Após começarmos a digitar algum texto, a tela muda, e podemos continuar digitando o texto 
normalmente, até o momento em que queremos fazer alterações, como apagar uma linha, por exemplo. 
Observamos, na figura a seguir, que digitamos algumas linhas de texto e, posteriormente, pressionamos a 
tecla Esc. Ao pressionarmos essa tecla, o editor volta para o modo de controle. Agora, podemos manipular 
o texto digitado.
Figura 142 – Entrando com um texto simples
Observe a posição do cursor de entrada na figura a seguir. Queremos mover o cursor para a linha 
vazia e apagar essa linha. Podemos utilizar as teclas com setas “normais” ou utilizar as teclas h, j, k e l 
no modo de edição. Para isso, devemos nos lembrar de que essas teclas correspondem às setas, como 
mostrado na figura a seguir:
h j k I
Figura 143 – Teclas h, j, k e l do teclado e seu significado no modo de controle do Vim
Assim, podemos pressionar a tecla k três vezes, até chegarmos à linha vazia. Depois, ainda no modo 
de controle, podemos pressionar duas vezes a tecla d. O comando dd elimina uma linha do texto. Dessa 
forma, a tela deve ficar com a aparência mostrada na figura a seguir:
198
Unidade IV
Figura 144 – Texto após remoção da linha
Vamos, agora, mover o cursor para a primeira linha do arquivo. Para isso, precisamos nos certificar de 
que o editor se encontra no modo de controle, ou seja, pressionamos a tecla Esc. Digitamos o número 1 
seguido da letra G maiúscula. Observamos que o cursor deve se mover para o topo do arquivo. Vamos, 
agora, adicionar novamente um texto no início do arquivo. Para isso, devemos voltar com o editor 
para o modo de edição. Digitamos a letra i minúscula e, depois, digitamos o texto Palavras no início. 
O resultado deve ser o mostrado na figura a seguir:
Figura 145 – Resultado após inserção de texto
199
SEGURANÇA DE SISTEMAS OPERACIONAIS (WINDOWS / LINUX)
Nota-se que a tecla i volta para o modo de edição quando estamos no modo de controle, mas funciona 
como a tecla i normal quando já estamos no modo de edição. Voltamos para o modo de controle pressionando 
a tecla Esc. Vale notar que sempre podemos voltar ao modo de controle pressionando a tecla Esc, 
independentemente do modo em que nos encontrarmos. Ainda no modo de controle, vamos pressionar A, 
ou seja, a tecla shift seguida da letra a. Observamos que o cursor vai se mover automaticamente para o fim 
da linha. Digitamos o texto Palavras no fim. O resultado obtido deve ser como mostrado na figura a seguir:
Figura 146 – Resultado da edição
Vamos voltar ao modo de controle, pressionando a tecla Esc.
Outra funcionalidade importante de um editor de texto é a busca por palavras. Por exemplo, vamos 
supor que queremos buscar no arquivo a palavra ver. Para isso, no modo de controle, devemos pressionar 
a tecla / e digitar ver. Observamos que, conforme digitamos uma palavra no modo de busca, o editor 
vai destacando os trechos encontrados na tela. Quando terminamos de digitar a palavra desejada para 
a busca, podemos pressionar a tecla Enter, e o cursor vai se mover diretamente para posição na qual a 
palavra digitada foi encontrada. Dessa forma, podemos nos mover rapidamente pelo texto.
É interessante o fato de que foi possível fazer várias manipulações no texto digitado sem utilizarmos 
o mouse ou clicarmos em menus. Todas as funções foram ativadas diretamente pelo uso do teclado. Isso 
requer um pouco de memorização e leva algum tempo para nos acostumarmos. Porém, depois desse 
período, a produtividade, especialmente de um programador, se torna maior.
200
Unidade IV
Outra funcionalidade muito útil para a edição é saltar para uma linha específica. Já testamos saltar 
para a linha 1. Para saltarmos para outra linha, por exemplo, a linha 2, devemos, primeiramente, nos 
certificar de que estamos no modo de controle (pressionando a tecla Esc). Digitamos 2 seguido das teclas 
shift e g (ou seja, a letra G maiúscula). Para nos certificarmos de que estamos na linha correta, podemos 
fazer com que o editor mostre a numeração de linhas da tela (os números não vão ser inseridos no 
arquivo, apenas mostrados na tela do editor). Para isso, no modo de controle, devemos digitar : seguido 
dos comandos set nu. O resultado é mostrado na figura a seguir:
Figura 147 – Ativando a numeração de linhas
Para gravarmos o que fizemos até agora em um arquivo chamado teste.txt, podemos digitar 
o comando :w teste.txt, o tipo e a finalidade.Vamos mover o cursor até a última linha do arquivo 
(pressionando a tecla j várias vezes ou digitando GG) e, depois, digitamos A para adicionarmos texto ao 
final da linha. Vamos escrever mais um pouco de texto (apenas para modificarmos o arquivo de entrada). 
Com isso, devemos obter um arquivo similar ao mostrado na figura a seguir:
201
SEGURANÇA DE SISTEMAS OPERACIONAIS (WINDOWS / LINUX)
Figura 148 – Modificando o arquivo
Para sairmos do editor e gravarmos as alterações, devemos voltar ao modo de controle (pressionando 
a tecla Esc). Digitamos o comando :wq, que vai gravar o conteúdo e sair. Para sairmos sem gravar as 
alterações, devemos utilizar o comando :q!, seguido de enter.
 Saiba mais
Para saber mais sobre os diferentes modos do Vim, digite :h vim-modes-
intro (seguido de enter) e consulte a própria documentação do editor, que 
é bastante completa. A ajuda geral com o Vim pode ser obtida digitando :h, 
seguido de enter.
8.4 Sistemas de arquivos e diretórios
Um sistema operacional precisa ter um mecanismo de organizar os dados que devem ser armazenados 
no disco. Esse mecanismo é chamado de sistema de arquivos ou file system. No caso do GNU/Linux, o 
principal sistema de arquivos utilizado é a família ext, que foi sendo melhorado e expandido ao longo 
dos anos. O sistema Ext2 (Second Extended Filesystem) é bastante antigo e já não é mais utilizado 
(GRAVES, 2013). Uma das suas principais fraquezas é não apresentar um sistema de journaling.
O sistema Ext3 sucedeu o Ext2: ele tem um mecanismo de journaling e permite a utilização de cotas 
(REARDON, 2016). Esse sistema também apresenta um sucessor, o Ext4, que foi criado para implementar 
uma série de melhorias, especialmente com relação ao desempenho e ao aumento na capacidade de 
armazenamento. Assim como o seu antecessor, também tem um sistema de journaling.
202
Unidade IV
Segundo Graves (2013) e Basta et al. (2012), as estruturas desses sistemas de arquivos são similares 
e podem ser divididas em quatro tipos de objetos (não no sentido da orientação a objetos, mas em um 
sentido abstrato):
•	 superbloco;
•	 inode;
•	 dentry;
•	 arquivo.
O superbloco é a estrutura mais geral e que armazena as informações que são válidas para todo o 
sistema de arquivos.
O inode contém os metadados ou as informações específicas de um dado arquivo (BASTA et al., 2012). 
Entre essas informações, temos o dono do arquivo, seu tipo, suas permissões e seu tamanho (GRAVES, 2013).
O dentry, abreviação de directory entry, é o mecanismo que permite associar os inodes aos 
nomes dos arquivos.
Finalmente, o arquivo é armazenado como um conjunto de blocos de dados.
Uma característica interessante dos sistemas GNU/Linux (e também de sistemas Unix) é que, 
além dos sistemas de arquivos de disco, ele apresenta um sistema de arquivos de rede, chamado de 
Network File System (NFS).
Os sistemas de arquivos dos sistemas GNU/Linux são estruturados na forma de uma grande árvore, 
em que a raiz é denotada por /. Todos os demais arquivos e diretórios são nós filhos desse nó raiz e 
formam uma estrutura única. Observe que isso é bem diferente da estrutura convencional encontrada 
nas máquinas com o sistema operacional Microsoft Windows, na qual existem unidades (como C:, D: 
etc.), e cada uma delas tem uma árvore própria.
É possível “montarmos” outros sistemas de arquivos nessa estrutura de árvore única. Por exemplo, 
se estivermos utilizando um pen drive, podemos montar o sistema de arquivos do pen drive como um 
ramo de /, como /mnt/pendrive. Não é necessário que os sistemas de arquivos sejam os mesmos, apenas 
que a versão do kernel seja capaz de trabalhar com o sistema de arquivos do pen drive.
Uma vez que um sistema de arquivos tenha sido montado, ele passa a ser totalmente transparente 
para um usuário: seus arquivos são acessados da mesma forma que qualquer outro ramo do disco 
“local”. Isso também acontece com o NFS, em que é possível trabalharmos com arquivos e diretórios 
remotos da mesma forma como trabalhamos com arquivos locais. Na figura a seguir, vemos a saída do 
comando tree / -d –L 1, no qual listamos o primeiro nível da hierarquia de diretórios para a instalação 
feita no item anterior.
203
SEGURANÇA DE SISTEMAS OPERACIONAIS (WINDOWS / LINUX)
Figura 149 – Primeiro nível da árvore de diretórios
8.5 Utilizando o shell
Uma das principais características do mundo GNU/Linux e do Unix é a ampla utilização da linha de 
comando ou terminais. Existem diversos shells disponíveis, e cada um deles apresenta características 
próprias. Dentre os mais comuns, podemos citar os listados a seguir.
•	 Bourne shell ou sh.
•	 GNU Bourne-Again shell ou Bash.
•	 Korn shell ou ksh.
•	 C shell, entre outros.
Conceitualmente, um shell funciona como uma interface (em modo de texto) entre o usuário e o 
sistema operacional (VERMA, 2008). Ele também funciona como uma linguagem interpretada: o usuário 
pode digitar comandos para o interpretador ou escrever programas ou scripts com esses comandos para 
a execução futura.
204
Unidade IV
 Saiba mais
Para ler um tutorial sobre o Bourne Shell, acesse o site:
https://www.shellscript.sh/
Outro tutorial bastante interessante pode ser encontrado em:
CHADWICK, R. Bash Scripting tutorial. [s.d.]. Disponível em: https://
ryanstutorials.net/bash-scripting-tutorial/. Acesso em: 17 set. 2020.
Um script para o Bash é simplesmente um arquivo de texto com um conjunto de comandos válidos 
(inclusive a execução de outros programas e scripts) e com permissão de execução pelo sistema 
operacional. A primeira linha do arquivo começa com:
#!/bin/bash
Ou, de uma forma ainda melhor (pois isso pode lidar com instalações do Bash em outros 
diretórios), temos:
#!/usr/bin/env bash
Essa linha, chamada de shebang, indica que o arquivo é um script Bash e mostra qual deve ser o 
interpretador invocado para a sua execução.
Assim como outras linguagens de programação, podemos declarar variáveis nos nossos scripts. 
Por exemplo, suponha que queremos declarar uma variável chamada de MEUNOME e atribuir como 
conteúdo “Nome”. Para isso, podemos fazer:
MEUNOME=”Nome”
É importante que não exista um espaço entre o nome da variável, o sinal de igual e o conteúdo 
atribuído. Variáveis também podem conter números, como no exemplo a seguir:
NUMERO=123
Há uma série de variáveis especiais que podem ser utilizadas nos scripts. A variável $0 contém o nome 
do script. As variáveis $1, $2,...,$9 contêm os 9 respectivos argumentos que são passados na linha de 
comando para o script em execução (CHADWICK, s.d.; MIGHT, 2020). A variável $# apresenta o número 
total de argumentos passados. A variável $@ tem esses argumentos na forma de lista (CHADWICK, s.d.).
205
SEGURANÇA DE SISTEMAS OPERACIONAIS (WINDOWS / LINUX)
Outra variável bastante útil é a indicada por $?, que armazena o status de execução do último 
programa executado (CHADWICK, s.d.).
A variável $$ indica o PID (process id) do script em execução, a variável $USER indica o nome do 
usuário logado, a variável $HOSTNAME indica o nome da máquina e a variável $SECONDS retorna o 
intervalo de tempo em que o script atual está em execução (CHADWICK, s.d.).
Também podemos utilizar condicionais como of if e fazer diversos tipos de testes que envolvem 
comparações de números inteiros e de cadeias de textos (strings) e outros tipos de expressões. Um aspecto 
interessante é que podemos fazer comparações com relação a diretórios e arquivos. Por exemplo, 
podemos identificar se determinado arquivo (ou diretório) existe, se um arquivo tem ou não 
tamanho nulo, se um arquivo tem permissão de escrita, entre outros tipos de comparações úteis no 
gerenciamento de arquivos.
A saída de texto é normalmente feita pelo comando echo. Expressões aritméticas podem ser feitas 
com os comandos let e expr. Podemos utilizar comandos como o case, que permitem desviar o fluxo de 
execução para um ponto específico entre um conjunto de possibilidades.
Com relação às estruturas de laços, temos laços tradicionaiscomo o while e o for e laços do tipo 
until. De modo específico, os laços do tipo for podem ser utilizados tanto para um conjunto de valores 
numéricos quanto para um conjunto de arquivos. Isso é um recurso bastante interessante e poderoso, já 
que é possível iterar em um conjunto de arquivos grandes, inclusive selecionando os arquivos com base 
em padrões e/ou nas suas extensões.
8.6 Comandos úteis na administração e no uso de máquinas GNU/Linux
A administração de servidores GNU/Linux é muito facilitada por uma série de programas tipicamente 
instalados ou disponíveis na maioria das distribuições. Um dos comandos que o administrador vai 
certamente utilizar com frequência é o comando man. Como vimos, essa é uma abreviação para 
manual e consiste na documentação on-line de boa parte dos programas instalados em uma máquina 
GNU/Linux. Por exemplo, para acessarmos a página do manual do ls, basta digitarmos man ls e obtemos 
o resultado mostrado na figura a seguir. É interessante observarmos que podemos navegar nas páginas 
do man da mesma forma como navegamos no editor Vi.
206
Unidade IV
Figura 150 – Página de manual do comando ls
Outro comando útil é o pwd, que permite que saibamos em que diretório estamos. Esse comando é 
especialmente bastante benéfico em shell scripts.
O comando hostname mostra o nome da máquina na qual trabalhamos. Se executarmos como 
hostname -I, obteremos o ip da máquina.
Um problema frequentemente verificado é a identificação do ambiente de trabalho. Muitas vezes, 
quando nos conectamos a uma máquina nova, queremos saber informações sobre qual é a distribuição 
que está sendo utilizada nessa máquina, bem como a sua versão. Essa informação também pode ser 
muito útil em shell scripts que são executados em um grande número de máquinas diferentes. Para isso, 
podemos executar o comando lsb_release -a. O programa lsb_release é bastante comum e disponível 
na maioria das distribuições, mas, em alguns casos específicos, ele pode não ser instalado por padrão.
Outro comando que pode ser muito interessante para o administrador é o comando uname. 
Ele retorna informações sobre o kernel instalado na máquina. Executando o comando uname -a, ficamos 
sabendo informações sobre a versão do kernel em execução e sua arquitetura.
207
SEGURANÇA DE SISTEMAS OPERACIONAIS (WINDOWS / LINUX)
A navegação entre os diretórios é feita utilizando o comando cd. É importante notarmos que o 
comando cd ~ nos leva para o diretório home do usuário conectado. O comando cd - nos leva para o 
diretório anterior ao atual. O comando cd .. nos leva para um nível acima do diretório atual (de forma 
similar ao que ocorre no DOS e no Windows). É fundamental termos em mente que o Unix e os sistemas 
GNU/Linux diferenciam maiúsculas de minúsculas, diferentemente do mundo DOS e do Windows. Isso é 
válido tanto para nomes de arquivos quanto para nomes de diretórios.
Um comando simples, mas surpreendente útil, é o comando cat. Seu uso original destina-se a 
concatenar de diversos arquivos e a mostrar o resultado na saída padrão (ou seja, a própria tela do 
terminal). Ele é muito utilizado para apresentar na tela o conteúdo de um arquivo, sendo chamado um 
único argumento (o nome do arquivo que queremos mostrar na tela).
 Resumo
Nesta unidade, conhecemos o sistema operacional GNU/Linux.
Contemplamos o projeto GNU, fizemos um breve histórico do Linux e 
mostramos as diversas distribuições do GNU/Linux.
Também abordamos as buscas de documentação no próprio sistema 
(on-line), discorremos a respeito de alguns aspectos do modelo de 
segurança do GNU/Linux e analisamos os mecanismos de autenticação e 
de controle de acesso.
Na sequência, apresentamos a distribuição GNU/Linux CentOS e 
explicamos o passo a passo de como fazer a sua instalação.
Por fim, investigamos o editor de texto Vim e exploramos alguns 
aspectos básicos do seu funcionamento. Também vimos conceitos relativos 
aos sistemas de arquivos e de diretórios, o shell e alguns comandos básicos 
úteis na administração e no uso de máquinas GNU/Linux.
208
Unidade IV
 Exercícios
Questão 1. No Unix original, um arquivo chamado de /etc/passwd armazenava os nomes de usuário, 
suas respectivas senhas criptografadas e várias outras informações relevantes sobre cada usuário, como 
o identificador numérico de cada usuário, seus diretórios “home” e seus shells padrão, em formato texto. 
Esse esquema simples é relativamente inseguro e precisou ser refinado com o passar do tempo.
Com base no exposto e nos seus conhecimentos, avalie as asserções a seguir:
I – Hoje, no Linux, a maioria das informações sobre cada usuário continua a ser armazenada, em 
formato texto, no arquivo /etc/passwd (que pode ser lido por qualquer um), mas as senhas criptografadas 
por um algoritmo pré-definido e os respectivos sais criptográficos (que são cadeias aleatórias de 
caracteres geradas especificamente para cada usuário, quando se cria o usuário) ficam em outro arquivo, 
o /etc/shadow, que não pode ser lido por usuários comuns. Isso contribui para tornar o processo de 
autenticação dos usuários mais seguro.
porque
II – Como o código-fonte do Linux é aberto, o algoritmo criptográfico empregado é público. 
Entretanto, existem algoritmos chamados de mão-única, que não podem ser revertidos, e o algoritmo 
empregado no Linux é desse tipo. Por outro lado, mesmo algoritmos de mão-única podem ser vencidos 
por um ataque de força bruta se a senha encriptada for muito curta, e é para isso que serve o sal 
criptográfico: ele é concatenado à senha digitada, o que torna a cadeia de caracteres resultante mais 
longa e complexa e inviabiliza o ataque de força-bruta.
A respeito dessas asserções, assinale a opção correta:
A) As asserções I e II são proposições verdadeiras, e a II é uma justificativa correta da I.
B) As asserções I e II são proposições verdadeiras, e a II não é uma justificativa correta da I.
C) A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.
D) A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.
E) As asserções I e II são proposições falsas.
Resposta correta: alternativa A.
209
SEGURANÇA DE SISTEMAS OPERACIONAIS (WINDOWS / LINUX)
Análise da questão
Ambas as asserções descrevem corretamente o funcionamento da maioria absoluta das distribuições 
correntes de Linux no que tange à autenticação de usuários, e a asserção II é uma justificativa correta da I.
Questão 2. Softwares para virtualização de plataformas computacionais permitem ao usuário criar 
uma ou mais máquinas virtuais (MV) dentro do ambiente oferecido por dado sistema operacional, o 
que possibilita utilizar, comparar ou testar diversos sistemas operacionais ao mesmo tempo, em uma 
mesma máquina física, de maneira simples e eficiente. No momento, possivelmente os mais conhecidos 
e utilizados softwares para virtualização são o VMWare (da VMWare, Inc.) e o VirtualBox (da Oracle).
Com base no exposto e nos seus conhecimentos, avalie as asserções a seguir.
I – A instalação de um segundo sistema operacional em uma máquina física já em uso pode resultar 
em perda de dados e/ou danificar a instalação do primeiro sistema operacional instalado, de forma a 
fazer com que nenhum dos dois sistemas operacionais consiga funcionar. Pare se evitar esse tipo de 
problemas, pode-se recorrer a softwares para virtualização de plataformas computacionais.
porque
II – Tais softwares rodam na máquina física e criam máquinas virtuais, totalmente isoladas do 
hardware real, mas convincentemente realistas, dentro das quais se pode instalar outros sistemas 
operacionais e usá-los sem que se interfira no sistema hospedeiro nem se consiga acessar o hardware 
da máquina física real em que o sistema hospedeiro está instalado.
A respeito dessas asserções, assinale a opção correta.
A) As asserções I e II são proposições verdadeiras, e a II é uma justificativa correta da I.
B) As asserções I e II são proposições verdadeiras, e a II não é uma justificativa correta da I.
C) Aasserção I é uma proposição falsa, e a II é uma proposição verdadeira.
D) A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.
E) As asserções I e II são proposições falsas.
Resposta correta: alternativa A.
Análise da questão
A asserção I descreve um problema real de forma clara e concisa e propõe um modo de se evitar 
tal problema, enquanto a asserção II explica corretamente por que tal solução é eficiente, ou seja, a 
asserção II é uma justificativa correta da I.
210
FIGURAS E ILUSTRAÇÕES
Figura 1
SILBERSCHATZ, A.; GALVIN, P. B.; GAGNE, G. Fundamentos de sistemas operacionais. 9. ed. 
Rio de Janeiro: LTC: 2015. p. 344. Adaptada.
Figura 100
HAEDER, A. et al. LPI Linux Certification in a Nutshell: a desktop quick reference. 3. ed. Sebastopol: 
O’Reilly, 2010. Adaptada.
REFERÊNCIAS
Textuais
ALVES, D. Sistemas operacionais de redes (Windows/Linux). São Paulo: Sol, 2018.
BALL, B.; DUFF, H. Dominando Linux: Red Hat e Fedora. São Paulo: Pearson, 2004.
BASTA, A. et al. Linux operations and administration. Boston: Cengage Learning, 2012.
BATTISTI, J.; POPOVICI, E. Windows Server 2012 R2 e Active Directory. São Paulo: Instituto Alpha, 2015.
BINNIE, C. Segurança em servidores Linux. São Paulo: Novatec, 2017.
CARRIER, B. File system forensic analysis. Upper Saddle River: Addison-Wesley, 2005.
CENTOS. About CentOS. [s.d.]. Disponível em: https://centos.org/about/. Acesso em: 20 ago. 2020.
CHADWICK, R. Bash Scripting tutorial. [s.d.]. Disponível em: https://ryanstutorials.net/bash-scripting-
tutorial/. Acesso em: 17 set. 2020.
CLINES, S.; LOUGHRY, M. Active directory for dummies. Hoboken: Wiley, 2008.
DEITEL, H. M.; DEITEL, P. J.; CHOFINES, D. R. Sistemas operacionais. São Paulo: Pearson 
Prentice-Hall, 2005.
DEMARTINI, F. Linux e Android têm mais falhas críticas que o Windows, aponta estudo. Canal Tech, 
10 mar. 2020. Disponível em: https://canaltech.com.br/seguranca/linux-e-android-tem-mais-falhas-
criticas-que-o-windows-aponta-estudo-161592/. Acesso em: 8 jun. 2020.
FRANCIS, D. Mastering Active Directory. Birmingham: Packt Publishing, 2017.
211
GEISSHIRT, K. Pluggable authentication modules. Packt Publishing: Birmingham, 2007.
GNU. Filosofia do Projeto GNU. [s.d.]. Disponível em: https://www.gnu.org/philosophy/philosophy.html. 
Acesso em: 17 set. 2020.
GRAVES, M. W. Digital archaeology: the art and science of digital forensics. Upper Saddle River: 
Addison-Wesley, 2013.
HAEDER, A. et al. LPI Linux Certification in a Nutshell: a desktop quick reference. 3. ed. 
Sebastopol: O’Reilly, 2010.
HUNTER, L. E.; ALLEN, R. Active Directory Cookbook. 3. ed. Sebastopol: O’Reilly, 2009.
INDIANA UNIVERSITY. Active Directory security and distribution groups. 2019. Disponível em: https://
kb.iu.edu/d/ajlt. Acesso em: 4 set. 2020.
INDIANA UNIVERSITY. Group policies in Microsoft Active Directory. 2018. Disponível em: https://kb.iu.
edu/d/ajgk. Acesso em: 5 set. 2020.
JANG, M. H.; MESSIER, R. Security strategies in Linux platforms and applications. 2. ed. Burlington: 
Jones & Barlett Learning, 2017.
KARGER, P. A.; SCHELL, R. R. Multics security evaluation: vulnerability analysis. Electronic Systems 
Division, v. II, jun. 1974. Disponível em: http://csrc.nist.gov/publications/history/karg74.pdf. 
Acesso em: 8 jun. 2020.
KASPERSKY. O que são ataques de DDoS? [s.d.]. Disponível em: https://www.kaspersky.com.br/resource-
center/threats/ddos-attacks. Acesso em: 9 set. 2020.
KROPIWIEC, D. D.; GEUS, P. L. Paradigmas de segurança em sistemas operacionais. Campinas: Unicamp, 
2004. Disponível em: https://www.lasca.ic.unicamp.br/paulo/papers/2004-WSeg-diogo.kropiwiec-
sistemas.operacionais.pdf. Acesso em: 9 jun. 2020.
LAWRENCE, T. Understanding PAM. A. P. Lawrence, 2005. Disponível em: https://www.aplawrence.com/
Basics/understandingpam.html. Acesso em: 14 ago. 2020.
MACHADO, F. B.; MAIA, L. P. Arquitetura de sistemas operacionais. 5. ed. Rio de Janeiro: LTC, 2013.
MACKIN, J. C.; THOMAS, O. Exam Ref 70-412: configuração dos serviços avançados do Windows Server 
2012 R2. Porto Alegre: Bookman, 2016.
MICROSOFT. Active Directory Certificate Services Overview. 2016a. Disponível em: https://docs.
microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/
212
hh831740(v=ws.11)#:~:text=AD%20CS%20is%20the%20Server,signature%20capabilities%20for%20
your%20organization. Acesso em: 3 set. 2020.
MICROSOFT. Active Directory Collection. 2014. Disponível em: https://docs.microsoft.com/en-us/
previous-versions/windows/it-pro/windows-server-2003/cc780036(v=ws.10)?redirectedfrom=MSDN#
w2k3tr_ad_over_qbjd. Acesso em: 3 set. 2020.
MICROSOFT. Active Directory Domain Services Overview. 2016b. Disponível em: https://docs.microsoft.
com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/hh831484(v=ws.11). 
Acesso em: 3 set. 2020.
MICROSOFT. Active Directory Security Groups. 2017. Disponível em: https://docs.microsoft.com/en-us/
windows/security/identity-protection/access-control/active-directory-security-groups. 
Acesso em: 5 set. 2020.
MICROSOFT. Mount a drive in a folder. 2020. Disponível em: https://docs.microsoft.com/en-us/
windows-server/storage/disk-management/assign-a-mount-point-folder-path-to-a-drive. 
Acesso em: 10 set. 2020.
MICROSOFT. Netdom join. 2016c. Disponível em: https://docs.microsoft.com/en-us/previous-versions/
windows/it-pro/windows-server-2012-r2-and-2012/cc788049(v=ws.11). Acesso em: 31 ago. 2020.
MICROSOFT. New-SmbShare. [s.d.]. Disponível em: https://docs.microsoft.com/en-us/powershell/
module/smbshare/new-smbshare?view=win10-ps. Acesso em: 13 set. 2020.
MICROSOFT. Requisitos do Sistema para o Windows Server Essentials. 2013. Disponível em: https://
docs.microsoft.com/pt-br/windows-server-essentials/get-started/system-requirements. 
Acesso em: 31 ago. 2020.
MICROSOFT. Windows Server 2012 R2 and Windows Server 2012. 2016d. Disponível em: https://
docs.microsoft.com/pt-br/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/
hh801901(v=ws.11). Acesso em: 8 jun. 2020.
MIGHT, M. Shell programming with bash: by example, by counter-example. [s.d.]. Disponível em: http://
matt.might.net/articles/bash-by-example/. Acesso em: 17 set. 2020.
MIKKEY, M. G. Bash programming: introduction HOW-TO. TLDP, 27 jul. 2000. Disponível em: http://tldp.
org/HOWTO/Bash-Prog-Intro-HOWTO.html#toc6. Acesso em: 17 set. 2020.
MINASI, M. et al. Mastering Windows Server 2012 R2. Indianapolis: John Wiley & Sons, 2014.
NEGUS, C. Linux, a Bíblia: o mais abrangente e definitivo guia sobre Linux. Rio de Janeiro: 
Alta Books, 2014.
213
NEMETH, E.; SNYDER, G.; HEIN, T. R. Manual completo de Linux: guia do administrador. 
São Paulo: Pearson, 2007.
NIKKEL, B. J. Forensic analysis of GPT disks and GUID partition tables. Digital Investigation, v. 6, 
2009, p. 39-47.
NIST. An introduction to computer security: the NIST handbook. 1995. Washington: Pubs, 1995. 
Disponível em: https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-12r1.pdf. 
Acesso em: 26 abr. 2020.
PANEK, C. Security fundamentals. Indianapolis: Sybex, 2020.
PANEK, W. MCSA: Windows Server 2012 R2 Installation and Configuration Study Guide – Exam 70-
410. Indianapolis: Sybex, 2015.
PETTERS, J. A. Guide to group policy and why it matters for data security. Varonis, 2020. Disponível em: 
https://www.varonis.com/blog/group-policy/. Acesso em: 5 ago. 2020.
QA STACK. Usando o bit setuid corretamente. [s.d.]. Disponível em: https://qastack.com.br/unix/166817/
using-the-setuid-bit-properly. Acesso em: 9 set. 2020.
REARDON, J. Secure data deletion. Cham: Springer, 2016.
RUSSEL, C. Exam Ref 70-411: administração do Windows Server 2012 R2. Porto Alegre: Bookman, 2015.
SAMMES, A.; JENKINSON, B. Forensic computing. 2. ed. Londres: Springer, 2007.
SILBERSCHATZ, A.; GALVIN, P. B.; GAGNE, G. Fundamentos de sistemas operacionais. 9. ed. 
Rio de Janeiro: LTC: 2015.
SMITH, R. Make the most of large drives with GPT and Linux. IBM, 2009. Disponível em: https://

Outros materiais