Buscar

03 APOSTILA LINUX

Prévia do material em texto

INTRODUÇÃO AO 
LINUX
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
APOSTILA 03
INTRODUÇÃO AO LINUX
Conceitos Iniciais
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
• Sistema Operacional baseado em Unix;
• Surgiu no início dos anos ‘90;
• Seu kernel é “monolítico” (com característica “modular”)
• Menos “reboots”;
• Não tem os mesmos problemas de malwares que o
Windows;
• Comunidade de desenvolvedores grande e
participativa
• Correção rápida de “bugs”;
• Open Source
• Licença GNU GPL.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
O Linux
• Hoje são mais de 200 (e continuam surgindo
mais!);
• Todas, direta ou indiretamente, derivam-se de
3 distribuições originais:
• Slackware (a mais antiga);
• Debian;
• Red Hat.
• Cada distribuição procura atender uma
necessidade específica.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
As distribuições Linux
• Uma distribuição Linux é o resultado da
conjunção de 3 componentes, a saber:
• Kernel Linux;
• Ferramenta de gerenciamento de pacotes;
• Aplicativos em geral.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
O que é uma Distribuição?
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
O que é uma Distribuição?
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
O que é uma Distribuição?
• Ferramentas de gerenciamento de pacotes
(instalando):
• Slackware:
• Fedora:
• Red Hat:
# installpkg libdvdread
# yum install mplayer
# rpm –i kst-1.8.0-1.i386.rpm
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
O que é uma Distribuição?
• Ferramentas de gerenciamento de pacotes
(removendo):
• Slackware:
• Fedora:
• Red Hat:
# removepkg libdvdread
# yum remove mplayer
# rpm –e kst
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
O que é uma Distribuição?
• Ferramentas de gerenciamento de pacotes
(atualizando):
• Slackware:
• Fedora:
• Red Hat:
# upgradepkg libdvdread
# yum update
# rpm –U kst
• Aplicativos:
• Apache;
• PHP;
• MySQL;
• OpenOffice;
• Gnome / KDE;
• GIMP;
• VSFTPD;
• Pidgin;
• SQUID;
• etc...
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
O que é uma Distribuição?
• O kernel é comum a todos, indistintamente...
• Salvo por pequenas adaptações, feitas para que a
distribuição tenha a característica que deseja
atender. Exemplo: ativação ou desativação de
drivers e componentes de mídia.
• As ferramentas de Gerenciamento de
Pacotes são as mesmas para as distribuições
derivadas de uma distribuição-mãe.
• Os aplicativos são comuns a todos.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
O que é uma Distribuição?
• O que diferencia uma distribuição da outra,
então?...
• As adaptações que são feitas no kernel;
• O tamanho da Comunidade de simpatizantes e
colaboradores;
• Periodicidade das atualizações e correções;
• Os aplicativos que já traz instalados consigo
(embora outros aplicativos possam ser instalados depois).
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
O que é uma Distribuição?
• O que faz com que uma distribuição seja
mais “querida” do que a outra?...
• O tamanho da Comunidade de simpatizantes e
colaboradores (quanto maior, mais artigos, dicas,
tutoriais, apoio, ajuda mútua, etc.);
• Periodicidade das atualizações (quanto mais
atualizações, mais melhorias);
• Periodicidade das correções (o sistema se torna
confiável);
• A percepção de “utilidade” dos aplicativos;
• Questões subjetivas dos usuários.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
O que é uma Distribuição?
• Não existe a “melhor” distribuição!;
• Existem distribuições mais técnicas, mais
abrangentes, mais especializadas, ou mais
“amigáveis” para os usuários;
• Cada distribuição procura atender a uma
necessidade específica;
• Existem versões/distribuições voltadas para
usuários finais (“mais amigáveis”), para
corporações ( “desktops”), e para servidores de
rede (“servers”). Qual a que atende ao seu
caso?
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Qual a “melhor” Distribuição?
• Distribuição derivada do Debian;
• Possui 2 versões principais:
• Desktop (para usuário final. Interface UNITY);
• Server (plataforma para servidores de rede).
• Possui versões alternativas:
• Kubuntu (Ubuntu Desktop com interface KDE);
• Ubuntu MATE (Desktop com interface GNOME);
• Xubuntu (Ubuntu Desktop para PC’s antigos. Usa
interface XFCE).
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
O que é o “UBUNTU”?
• Por que o Ubuntu é tão popular?
• Imensa Comunidade de colaboradores (farta
documentação e ajuda);
• Atualizações regulares (nova versão a cada 6 meses);
• Correções regulares (confiabilidade);
• Vasto repositório de aplicativos (praticamente todos os
aplicativos “free” e “non-free”);
• As versões atendem a todos os gostos e necessidades;
• Simpatizantes desenvolvem aplicativos para ele;
• Utiliza os pacotes Debian (.deb) – ainda mais aplicativos!
• Compatibilidade com os drivers dos principais hardwares
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
O que é o “UBUNTU”?
INTRODUÇÃO AO LINUX
POR QUE USAR O UBUNTU?
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
• Porque o GOVERNO BRITÂNICO considerou
o Ubuntu o Sistema Operacional mais seguro
da atualidade!
• Fonte: Canaltech — 15 de janeiro de 2014.
http://canaltech.com.br/noticia/linux/Governo-britanico-considera-
Ubuntu-o-sistema-operacional-mais-seguro/
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Por que usar o “UBUNTU”?
• Porque o Ubuntu foi considerado o melhor
servidor Linux corporativo, de acordo com os
testes da NetworkWorld — derrotando até
mesmo a Red Hat!
• Fonte: NetworkWorld — 09 de setembro de 2013.
http://www.networkworld.com/reviews/2013/090913-ubuntu-test-
273462.html
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Por que usar o “UBUNTU”?
• Porque, enquanto plataforma para jogos, a
performance do Ubuntu rivaliza até com a do
Windows 8.1!
• Fonte: HotHardware — 29 de outubro de 2013.
http://hothardware.com/News/Ubuntu-Linux-Gaming-Performance-
Rivals-Windows-81/default.aspx
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Por que usar o “UBUNTU”?
• Porque a Microsoft disponibiliza o Ubuntu
Juju para implementação de serviços de cloud
no Microsoft Azure.
• Fonte: Microsoft Azure — 17 de setembro de 2013.
https://azure.microsoft.com/pt-br/blog/windows-azure-now-fully-
supported-by-juju/
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Por que usar o “UBUNTU”?
• Porque a IBM fechou um acordo com a
Canonical para criação de uma versão do
Ubuntu para mainframes.
• Fonte: Ubuntu Insights — 17 de agosto de 2015.
https://insights.ubuntu.com/2015/08/17/ibm-and-canonical-plan-
ubuntu-support-on-ibm-z-systems-mainframe/
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Por que usar o “UBUNTU”?
• Porque o Ubuntu é a primeira
distribuição Linux para PC’s a possuir
uma versão para smartphones,
totalmente projetada para integrar-se
perfeitamente à versãodesktop, de
modo a trazer conforto, simplicidade e
familiaridade de uso.
Conheça: http://www.ubuntu.com/phone
e http://www.youtube.com/watch?v=-dpfHYpfEXY&hd=1
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Por que usar o “UBUNTU”?
E MUITOS OUTROS MOTIVOS!
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
INTRODUÇÃO AO LINUX
Conceitos Iniciais (retornando…)
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
• “REPOSITÓRIO” é um site onde ficam
armazenados (e disponíveis para download)
todos os aplicativos compatíveis com (e
oferecidos por) uma determinada distribuição.
• Cada instalação de uma distribuição possui
seu próprio repositório local, que se sincroniza
com o repositório remoto, atualizando a lista de
aplicativos disponíveis.
http://packages.ubuntu.com
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
O que é um “REPOSITÓRIO”?
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
O que é um “REPOSITÓRIO”?
Apache 2.2.9
Drivers
Ekiga 0.5.1
GIMP 2.0.3
MySQL 5.3
Nessus 4.0.1
OpenOffice 3.1
PHP 5.5
VSFTPD 2.0.7
Apache 2.2.8
Drivers
Ekiga 0.5.1
GIMP 2.0.2
MySQL 5.3
Nessus 3.9
OpenOffice 3.1
PHP 5.3
VSFTPD 2.0.5
Apache 2.2.6
Drivers
Ekiga 0.5.1
GIMP 2.0.3
MySQL 5.2
Nessus 2.2
OpenOffice 3.0
PHP 5.3
VSFTPD 2.0.5
Apache 2.2.9
Drivers
Ekiga 0.5.1
GIMP 2.0.3
MySQL 5.3
Nessus 4.0.1
OpenOffice 3.1
PHP 5.5
VSFTPD 2.0.7
• Quando o usuário instala um aplicativo pelo
repositório da distribuição Linux, ele também
instala, junto, todas as dependências relativas
àquele aplicativo. Isso torna a instalação rápida
e muito simples, com garantia de
funcionamento e compatibilidade com o
sistema!
• “Dependências” são os arquivos adicionais
(bibliotecas, drivers, módulos... Enfim...) dos
quais o aplicativo principal depende para
funcionar corretamente.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
O que é um “REPOSITÓRIO”?
• Se um aplicativo for instalado
independentemente do repositório (“por fora”),
é possível (não necessariamente obrigatório)
que o usuário tenha que, manualmente,
instalar as dependências antes do/junto com o
aplicativo propriamente dito.
• Contudo, pacotes de programas fora do
repositório (obtidos em separado) também
podem trazer, consigo, as dependências
necessárias ao aplicativo em questão.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
O que é um “REPOSITÓRIO”?
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
QUAL A DIFERENÇA ENTRE AS
ATUALIZAÇÕES DO WINDOWS (“WINDOWS
UPDATE”) E AS ATUALIZAÇÕES FEITAS
PELOS REPOSITÓRIOS DO LINUX?
• No Windows, são feitas atualizações somente
para o próprio sistema, e para os aplicativos
Microsoft. Como os demais aplicativos são
instalados em separado, e possuem questões
legais relativas à licença proprietária, o
Windows não se responsabiliza por suas
atualizações — as quais devem ser feitas
individualmente.
• No Linux, TODOS os aplicativos do
repositório são atualizados!
• Desenvolvedores de aplicativos podem
disponibilizar o seu próprio repositório,
inteiramente independente do repositório oficial
da distribuição Linux;
• É o chamado “repositório extra”;
• É manualmente adicionado pelo usuário. A
partir daí usam-se os mesmos procedimentos
normais de instalação, atualização e remoção;
• Neste caso, o usuário pode adicionar esses
repositórios extras na lista local de repositórios
do sistema, de modo que ele (o sistema)
sempre busque instalações e atualizações de
aplicativos nos repositórios indicados.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Repositórios “Extras”
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
O que é um “PACOTE”?
• “PACOTE” é um contâiner de instalação e
configuração de um aplicativo, onde estão
agrupados os aplicativos principais, as
bibliotecas, e documentações necessárias a
uma determinada aplicação;
• Um pacote também contém a rotina de
instalação, que instala os arquivos necessários
nos diretórios indicados;
• Essa rotina também contém informações
sobre como remover o aplicativo, quando
assim solicitado.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
O que é um “PACOTE”?
• Fazendo uma comparação, um pacote
equivale ao arquivo “setup.exe” para
Windows;
• No Windows, o “setup” instala o aplicativo e
suas dependências (arquivos .DLL, e outros.)
nos diretórios indicados, cria chaves de
registro (se necessário), realiza outras rotinas,
etc.
• Quando você instala um programa no
Windows, o “setup” também instala o
“uninstall.exe”, para remoções futuras;
• O mesmo princípio vale para os pacotes de
aplicativos instalados no Linux.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
O que é um “PACOTE”?
• O Ubuntu usa pacotes “Debian” (.deb) —
inclusive para aqueles aplicativos que não
estejam disponíveis nos repositórios;
• Esses pacotes podem ser obtidos e
instalados diretamente via Repositório, ou
independentemente (fora dos repositórios),
pela Internet.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
O que é um “PACOTE”?
• Um pacote .deb é nomeado da seguinte
maneira:
Nome-do-aplicativo_versão_arquitetura.deb
Exemplos:
skype-debian_2.0.0.72-1_i386.deb
webmin_1.410_all.deb
virtualbox-2.2_2.2.2-46594_amd64.deb
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Repositório X Pacotes
Naturalmente, pode surgir a pergunta:
“É melhor instalar programas pelo repositório, 
ou por pacotes independentes?”
A resposta é: depende! Depende do que se
quer, ou se pretende!
Vamos analisar os prós e contras:...
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Repositório X Pacotes
REPOSITÓRIO (Vantagens):
• Via de regra, as dependências são instaladas
junto com aplicativo, tornando a instalação
rápida e simples;
• A mantenedora da distribuição garante as
atualizações de segurança do aplicativo, e,
eventualmente, as atualizações de versão —
quando houver;
• Total garantia de funcionamento e
compatibilidade do aplicativo com o Linux!
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Repositório X Pacotes
REPOSITÓRIO (Desvantagens):
• Dependendo do tempo transcorrido entre as
atualizações de versão da distribuição Linux
propriamente dita, o aplicativo também pode
permanecer um certo (ou longo) tempo sem
atualizações de versão;
• Aplicativos instalados pelo repositório não
são, necessariamente, as versões mais atuais
disponíveis! O objetivo é garantir o máximo de
compatibilidade, sem, com isso, garantir o
máximo de atualização na versão;
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Repositório X Pacotes
REPOSITÓRIO (Desvantagens)
(Continuação):
• Eventualmente, aplicativos que o usuário
queira instalar podem não estar disponíveis
nos repositórios oficiais da distribuição Linux,
obrigando-o a obter os aplicativos
independentemente;
• Os repositórios podem não conter os
chamados programas gratuitos “non-free”, que
o usuário queira instalar.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Repositório X Pacotes
PACOTES INDEPENDENTES (Vantagens):
• O usuário pode obter a versão mais recente
do aplicativo;
• Pode-se instalar programas que não façam
parte dos repositórios oficiais da distribuição
Linux;
• Quandohouver atualização na versão da
distribuição Linux, o pacote independente não
sofre alterações*.
* Isso pode ser uma vantagem ou desvantagem, dependendo do ponto de vista!
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Repositório X Pacotes
PACOTES INDEPENDENTES (Desvantagens):
• Atualizações na versão, ou atualizações de
segurança devem ser feitas manualmente (de
tempos em tempos o usuário deve acessar o
website do desenvolvedor e verificar se houve
mudanças);
• Não há garantias de total compatibilidade com
o sistema operacional;
• Quando houver atualização na versão da
distribuição Linux, o pacote independente não
sofre alterações*.
* Isso pode ser uma vantagem ou desvantagem, dependendo do ponto de vista!
• As vantagens no uso de repositórios extras é
que ele reúne o melhor dos dois mundos:
• Os aplicativos instalados serão sempre atualizados
diretamente pelo website do desenvolvedor;
• Todas as dependências podem ser instaladas e
mantidas, sem necessidade de instalações
paralelas/complementares.
• As desvantagens são:
• Eventualmente podem ocorrer incompatibilidades
com o sistema operacional;
• Eventualmente o repositório extra (o website do
desenvolvedor) pode “sair do ar”.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Usando Repositórios “Extras”
• Atualizando o repositório local:
• Baixando e atualizando o sistema e seus
aplicativos:
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
$ sudo apt-get update
$ sudo apt-get upgrade
Instalando pelo REPOSITÓRIO
NOTA: Em lugar do “APT-GET” você pode usar a ferramenta “APTITUDE”.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Ferramentas de Gerenciamento
• APT-GET: instala programas do repositório,
via terminal;
• APTITUDE: instala programas do repositório,
via terminal;
• DPKG: instala pacotes .deb, via terminal;
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Ferramentas de Gerenciamento
• SYNAPTIC: interface gráfica de instalação de
programas do repositório. Seu uso é mais
complexo e, portanto, não recomendado para
usuários inexperientes;
• CENTRAL DE PROGRAMAS DO UBUNTU:
interface gráfica de instalação de programas
do repositório. Seu uso é simples e intuitivo e
indicado para usuários de todos os níveis de
experiência;
• UPDATE-MANAGER: atualiza o sistema
operacional e todos os seus aplicativos.
Presente somente na interface gráfica.
• Instalando aplicativos pelo repositório:
• Removendo aplicativos instalados pelo
repositório:
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
$ sudo apt-get install <nome-do-pacote>
$ sudo apt-get remove <nome-do-pacote>
Instalando pelo REPOSITÓRIO
EXEMPLOS:
• Instalando um só aplicativo (ex.: iptables):
• Instalando mais de um aplicativo (ex.:
iptables e squid):
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Instalando pelo REPOSITÓRIO
$ sudo apt-get install iptables
$ sudo apt-get install iptables squid
EXEMPLO: Instalando pela interface gráfica:
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Instalando pelo REPOSITÓRIO
EXEMPLO:
• Instalando o SKYPE:
• Removendo o SKYPE:
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Pacotes “DEBIAN”
$ sudo dpkg –i skype-debian_2.0.0.72-1_i396.deb
$ sudo dpkg –r skype
• A conta “root” é conhecida como “super-
usuário” porque possui poderes administrativos
ilimitados.
• Nenhum comando do root é ignorado ou
abortado por falta de permissão! Ele pode
tudo!
• Salvo raras exceções, NADA é perguntado a
ele! Os comandos são cumpridos sem
necessidade de confirmação!
• No prompt (ou “terminal”) a conta root se
caracteriza pelo “ # ”.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Privilégios Administrativos
• No Ubuntu, por padrão, a conta root é
bloqueada (por questões de segurança);
• Também por segurança, recomenda-se o uso
do recurso SUDO;
• “SUDO” faz com que uma conta de usuário
comum realize trabalhos com privilégios
administrativos;
• O usuário que usa o “SUDO” é chamado de
“sudoer” (“sudo member”);
• Para ser um “sudoer” o usuário tem que fazer
parte do grupo “sudo” ou “admin”.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Privilégios Administrativos
• Ao fazer parte de qualquer um dos grupos,
“sudo” ou “admin”, a conta de usuário passa a
ter o poder de usar a ferramenta sudo.
• Recentemente, e por segurança, o grupo
“admin” passou a não mais existir por padrão
no Ubuntu, devendo ser criada manualmente.
• Já o grupo “sudo” continua existindo.
• Portanto, o administrador do sistema tem a
opção de inserir a conta de usuário no grupo
“sudo” (que já existe), ou criar o grupo “admin”
e inserir a conta nele.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Privilégios Administrativos
Por que funciona assim?
• Porque o arquivo /etc/sudoers possui os
parâmetros:
%admin ALL=(ALL) ALL
%sudo ALL(ALL:ALL) ALL
Ambos os parâmetros especificam os
privilégios de sudoer para os membros dos
grupos “admin” (%admin) e “sudo” (%sudo).
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Privilégios Administrativos
• EXEMPLOS:
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Privilégios Administrativos
$ sudo rm –R temporario/
# rm –R temporario/
Como “sudoer”:
Como root:
TORNANDO A CONTA UM “SUDOER”:
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Privilégios Administrativos
$ sudo adduser –g sudo joaosilva
OPÇÃO 1:
Cria a conta “joaosilva”, inserindo-a no grupo “sudo”:
OU
OPÇÃO 2:
Cria o grupo “admin” e, em seguida, cria a conta “joaosilva”
inserindo-a no grupo:
$ sudo groupadd admin
$ sudo adduser -g admin joaosilva
LISTANDO OS GRUPOS EXISTENTES E AS 
CONTAS QUE ESTÃO INSERIDAS NELES:
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Privilégios Administrativos
$ cat /etc/group
• Em certos momentos pode ser necessário o
“sudoer” executar um procedimento como root;
• Nesse caso, ele pode habilitar a conta root e
trabalhar nela. O comando que habilita a conta
do root é este:
• O comando que desabilita o root é:
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Privilégios Administrativos
$ sudo passwd root
$ sudo passwd -l root
• O comando que troca o usuário “sudoer” pelo
root é:
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Privilégios Administrativos
$ sudo su
INTRODUÇÃO AO LINUX
EXERCÍCIO / DISCUSSÃO EM SALA
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
1. No seu entendimento, o “sudo” pode ser comparado
ao “runas” (“run as...”) do Windows?
2. Quais são as diferenças entre “sudo” e “runas”?
3. Na sua opinião algum dos dois (“sudo” e “runas”)
oferece mais segurança que o outro? Justifique a
resposta.
10 minutos
• O WGET é uma ferramenta de linha de
comando (não possui interface gráfica) que
permite que seja feito o download de arquivos
e páginas internet, sem necessidade de um
browser.
• Suporta os protocolos HTTP, HTTPS, FTP.
• Sintaxe (não é necessário privilégio
administrativo):
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Ferramenta WGET
$ wget http://www.dominio.com.br/downloads/arquivo.zipINTRODUÇÃO AO LINUX
CONHECENDO O LINUX
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
• Em um sistema Unix tudo é um arquivo. Se
não é arquivo, então é um processo.
• Nos sistemas Unix os nomes de diretórios
são “case sensitive” – isto é, sensíveis a
maiúsculas e minúsculas.
• No Linux os diretórios são especificados pela
barra “ / ”, e não pela contra-barra “ \ ”, como
ocorre no Windows. Exemplo:
/home/joao/downloads/
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Os Diretórios
• No Linux o Diretório-Raiz é o diretório
principal do sistema e, abaixo dele, estão todos
os demais diretórios e subdiretórios. Ele é
representado somente pela barra “ / ”, sendo o
primeiro na hierarquia de diretórios – daí é
chamado de raiz.
• Sob ele estão os diretórios principais do
sistema, os diretórios dos usuários, os
respectivos subdiretórios, e assim
sucessivamente. Nele encontram-se diretórios
tais como: /etc, /var, /bin, /usr, e outros.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
O Diretório-Raiz
• A organização dos diversos diretórios
principais forma um padrão, que é o mesmo
para todas as distribuições Unix modernas.
• Isto quer dizer que essa mesma hierarquia de
diretórios é observada em todos os sistemas
Unix/Linux, não importando seus distribuidores
e suas versões.
• Esses diretórios organizam arquivos de
usuários, drivers, kernels, logs, programas,
utilitários, etc., em diferentes categorias.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
A Hierarquia de Diretórios
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
A Hierarquia de Diretórios
Diretório Descrição
/ Diretório raiz ou root. É o diretório de mais alto nível. Todos osdemais diretórios são seus subdiretórios.
/bin Utilitários de linha de comando essenciais.
/boot Reúne os arquivos necessários para a inicialização do sistema,incluindo o kernel.
/dev
Permite o acesso a drivers de dispositivos de hardware e software
para tudo, desde unidades de disquete até terminais – incluindo os
Discos Rígidos.
/etc É onde se localizam os arquivos de configuração dos diversosserviços e aplicativos instalados.
/home Contém o diretório home dos usuários. É onde se localizam aspastas de cada usuário do sistema.
/lib Bibliotecas de programa para o kernel e vários outros utilitários.
/mnt
Ponto de montagem temporário para mídias removíveis, como
disquetes e discos ZIP, e também para acesso a HD’s
compartilhados, ou conexões via SSH (Secure SHell). O CD-Rom tem
seu próprio ponto de montagem, o /cdrom.
/opt Destinada a abrigar aplicações de terceiros, que não façam parte dadistribuição.
/root Diretório home do super-usuário root.
/usr Diretório dos aplicativos. A maioria dos softwares é instalada nessediretório, e ele pode ser compartilhado.
/var
Contém os arquivos que são gravados freqüentemente pelos
aplicativos do sistema, tais como: e-mails, spool de impressora, e
outros. É também onde se localiza o subdiretório /www/ usado pelo
webserver Apache para hospedar as páginasweb.
• Não somente a estrutura de diretórios no
sistema tem suas particularidades, como
também é o modo como o Linux representa
seus dispositivos.
• Foi visto no slide anterior que o diretório /dev
é o local onde estão os arquivos usados para
acessar os drivers de dispositivos do
computador.
• Isto posto, é importante conhecer esta
estrutura. A seguir se apresenta uma tabela
que compara a estrutura dos dispositivos no
Linux com a forma usada no MS-Windows:...
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
A Estrutura dos Dispositivos
WINDOWS LINUX
A: /dev/fd0
B: /dev/fd1
C: /dev/hda1
LPT1 /dev/lp0
LPT2 /dev/lp1
LPT3 /dev/lp2/
COM1 /dev/ttyS0
COM2 /dev/ttyS1
COM3 /dev/ttyS2
COM4 /dev/ttyS3
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
A Estrutura dos Dispositivos
• /hd→ corresponde aos discos rígidos IDE;
• /sd→ corresponde aos discos rígidos SCSI;
• *a→ 1º Disco Rígido: /hda ;
• *b→ 2º Disco Rígido: /hdb ;
• *c, *d, *e → Outros HD’s: /hdc, /hdd,
/hde... etc.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Discos e Partições
UNIDADE O QUE É...
/dev/fd0 1ª Unidade de disquete.
/dev/fd1 2ª Unidade de disquete.
/dev/hda 1º HD IDE – Primary Master.
/dev/hda1 1ª partição do 1º HD IDE.
/dev/hdb 2º HD IDE – Primary Slave.
/dev/hdb1 1ª partição do 2º HD IDE.
/dev/sda 1º HD SCSI.
/dev/sda1 1ª partição do 1º HD SCSI.
/dev/sdb 2º HD SCSI.
/dev/sdb1 1ª partição do 2º HD SCSI.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Discos e Partições
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Discos e Partições
Assim, temos:
/dev/sda1
Diretório onde são armazenados os
dispositivos existentes.
Tipo do HD
(IDE ou SCSI).
Primary ou Slave.
Partição do HD.
• Nas distribuições Linux que utilizam o recurso
sudo, a primeira conta de usuário criada
durante a instalação é conta sudoer;
• Todas as demais contas criadas serão, por
padrão, contas comuns;
• Toda vez que uma conta de usuário é criada,
cria-se também, automaticamente, um grupo
de mesmo nome. Este é o grupo primário do
usuário recém-criado.
• O usuário pode fazer parte de outros grupos,
que serão considerados grupos secundários.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Contas de Usuários
• Da mesma forma, quando a conta de usuário
é criada, também é criada uma pasta com o
mesmo nome dentro de /home.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Contas de Usuários
Assim, temos (quando a conta é criada):
• Nome de usuário: joaosil
• Grupo Primário: joaosil
• Diretório principal: /home/joaosil/
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Contas de Usuários
• Terminal, também é conhecido como CLI
(Command Line Interface), console, ou ainda,
shell — muito embora essa última
denominação não seja realmente correta...
• O terminal é o equivalente ao prompt de
comando no Windows. Ele nada mais é do que
uma interface-texto.
• Ou seja, é uma interface de acesso ao shell
propriamente dito, e por meio dele são
inseridas linhas de comando, para execução
de toda e qualquer tarefa no Sistema
Operacional.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Terminal ou Console
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Terminal ou Console
• SHELL = interpretador de comandos.
• Um interpretador de comandos (ou “shell”) é:
• É um programa que permite a interpretação e
execução de comandos;
• O “shell”, ao receber o comando, repassa a
instrução para o kernel, e ele, por sua vez,
retransmite para a arquitetura da máquina (se a
instrução for interna), ou para a arquitetura da rede
(se a instrução destina-se à rede);
• O Shell também pode ser uma GUI (Graphical User
Interface) para o disparo de comandos por meio do
mouse.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Shell
• O usuário interage com o S.O. por meio de
uma aplicação especial, denominada “shell”,
ou interpretador de comandos;
• A maioria dos interpretadores atuais trabalha
através de:
• Interfaces de texto (terminais) que permitem a um
usuário emitir comandos via texto digitado no
teclado; ou
• Interfaces GUI (Graphical User Interface) com
recursos interativos de mouse.
• Exemplos:
• No Linux, existea instalação do núcleo shell de
comandos em texto, e posteriormente pode-se
instalar a camada de interface.
• No Windows, utiliza-se preferencialmente a
interface gráfica, e as vezes o Prompt de Comando
(antigo “DOS”) para comandos em texto.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Shell
Percebe-se, portanto, que existem duas
maneiras de se inserir comandos em um
sistema operacional: através de texto
(terminal), ou através do mouse (interface
gráfica, ou GUI).
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Shell
• Por exemplo, no Windows, para abrir o editor
de textos (i.e., o MS-Word) você pode dar dois
cliques no respectivo ícone, na área de
trabalho, ou pode digitar o comando (sem as
aspas) “start winword.exe” no prompt.
• O Shell interpretará os dois comandos (texto
e mouse) da mesma forma, e abrirá o
programa desejado.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Shell
• No Linux (versões que possuam GUI) ocorre
a mesma coisa: programas podem ser
iniciados pelo terminal ou pela interface
gráfica. Para chamar um programa pelo
terminal, basta digitar o seu nome.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Shell
• Nas distribuições Linux que utilizem o
“SUDO”, ele também está presente na
interface gráfica. Ele se manifesta através de
uma janela que pede a senha do usuário,
antes de executar uma tarefa.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Shell
• Uma das coisas interessantes a respeito dos
sistemas operacionais abertos (especialmente
o Linux) é a possibilidade que o usuário tem de
escolher a interface gráfica de seu sistema.
• Cada interface gráfica possui um modo
particular de gerenciar a sua aparência.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Interfaces Gráficas
(ou “gerenciadores de janelas”)
• “Gerenciadores de janelas” (nome mais
correto) são programas que controlam como as
janelas devem ser apresentadas no Sistema
Operacional, a posição dos botões, quais são
suas funções, o que pode ocorrer em uma
janela, a organização e distribuição do menu
de opções, e assim por diante.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Interfaces Gráficas
(ou “gerenciadores de janelas”)
• Em outras palavras um gerenciador de
janelas tem a função de, como o próprio nome
diz, gerenciar a apresentação das janelas e
fornecer métodos para controlar aplicações,
criar e acessar menus. Além de fornecer meios
para que o usuário possa personalizar o seu
ambiente.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Interfaces Gráficas
(ou “gerenciadores de janelas”)
• No Linux, este relacionamento é feito pelo
Servidor de Janelas X ou simplesmente X.
• Seu objetivo é fornecer acesso aos
dispositivos existentes em seu computador
(mouse, teclado) e fornecer um ambiente
agradável para a manipulação de aplicações,
através de componentes chamados Janelas.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Interfaces Gráficas
(ou “gerenciadores de janelas”)
• Mas, não confunda estes dois conceitos: o
servidor de janelas possui recursos para
implementar as aplicações em forma de
janelas e formar um ambiente agradável para o
usuário;
• Já o gerenciador de janelas vai fornecer
métodos para que o usuário possa modificar o
tamanho das janelas, o papel de parede,
enfim, o layout da interface gráfica.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Interfaces Gráficas
(ou “gerenciadores de janelas”)
• Para sistemas Unix (e não somente Linux!)
existem algumas opções de interface gráfica,
tais como:
• GNOME;
• KDE;
• XFCE;
• FluxBox;
• WindowMaker;
• ... E outras.
• As 2 mais usadas/conhecidas são: GNOME e
KDE.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Interfaces Gráficas
(ou “gerenciadores de janelas”)
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
GNOME
KDE
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
WINDOWMAKER
• Path (em inglês, “caminho”) é o caminho de
procura dos arquivos ou comandos
executáveis.
• Quando um comando ou arquivo está dentro
do diretório Path isto quer dizer que ele pode
ser executado de qualquer lugar.
• Isso é especialmente útil quando se deseja
que um arquivo seja executado, e o caminho
deve ser “de conhecimento público”, ou então,
deve ser “facilmente encontrado”.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
PATH
• O path (caminho) é armazenado na variável
de ambiente PATH. Pode-se visualizar o
conteúdo desta variável com o seguinte
comando:
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
PATH
# echo $PATH
Os vários paths são separados por dois pontos (“ : ”)
O Path é uma variável e ela determina os
caminhos de busca que serão percorridos pelo
shell quando um comando for informado. Se
não fosse pela variável PATH seria necessário
especificar o caminho completo de um
programa para poder executá-lo. Ao invés de
digitarmos...
$ passwd
teríamos que digitar...
$ /usr/bin/passwd
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
PATH
Neste caso (exemplo do slide anterior), o
caminho /usr/bin já está definido no PATH
como um dos caminhos de procura do shell.
O que ocorre é que, já que não foi fornecido o
caminho do comando (digitou-se,
simplesmente, “passwd”, e só!), o shell busca
nos “paths” conhecidos por ele se existe esse
comando armazenado. Quando o encontra,
executa-o.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
PATH
• Caso um arquivo ou comando não esteja
localizado em nenhum dos diretórios do Path,
pode-se executá-lo, mesmo sem informar o
caminho, usando a combinação “ ./ ” (sem as
aspas) na frente do comando — desta forma:
• Outra maneira é inserir o diretório desejado
na lista Path. Para isso, faça assim no CLI:
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
PATH
# ./comando-qualquer
# PATH=$PATH:/diretorio-a-ser/colocado/no-path
O comando acima é válido somente para a sessão atual do sistema. Assim que o sistema for
reiniciado, o path se apagará.
Para introduzir um path permanente no
sistema pode-se fazer os seguintes:
• Introduzir o comando mostrado (slide
anterior) dentro de:
/home/nome-do-usuario/.bashrc
(desvantagem: é válido somente para o próprio usuário).
• Introduzir as seguintes linhas no arquivo
/etc/profile (vale para todos os usuários):
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
PATH
if [ “$PATH” ]; then
PATH=’/pasta/subpasta/comando-inserido’
fi
• Método mais comum e eficiente:
→ Suponha que haja um script dentro de:
/home/script/
(o que equivale a: ~/script)
o qual você deseje incluir no PATH. Digite,
então, o seguinte comando:
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
PATH
# export PATH=“$PATH:~/script”
INTRODUÇÃO AO LINUX
MÓDULOS
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Módulos são partes do kernel que são
carregados somente quando solicitados por
algum aplicativo ou dispositivo, e
descarregados da memória quando não são
mais necessários.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
MÓDULOS• A parte interessante é que esses módulos são
carregados e descarregados durante o pleno
funcionamento do Linux, sem que isso cause
nenhum tipo de sobrecarga ou deficiência ao
sistema.
• Justamente por ser possível carregá-los ou
não, de acordo com a demanda dos seus
aplicativos correspondentes, é que recebem
esse nome de “módulos” — ou, melhor ainda,
uma designação mais completa: módulos
carregáveis do kernel (LKM — Loadable
Kernel Modules).
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
MÓDULOS
Este recurso é útil por dois motivos:
• Evita a construção de um kernel grande
(estático) que ocupe grande parte da memória
com todos os drivers compilados; e
• Faz com que partes do kernel ocupem a
memória somente quando forem necessários,
poupando os recursos da mesma para as
tarefas realmente exigidas.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
MÓDULOS
• Os módulos só são carregados quando assim
solicitados, e pelo tempo que for preciso;
percebe-se, então, que os recursos de
hardware, mais notadamente o processador e
a memória, serão ocupados somente com as
tarefas necessárias.
• Os módulos do kernel estão localizados no
diretório:
/lib/modules/sua-versão-de-kernel-instalada/
Onde: “sua-versão-de-kernel-instalada” refere-se à versão atual do
kernel instalada no sistema. Se, por exemplo, a versão de kernel que
estiver sendo usada pelo Linux for 3.11.0-15-generic, então o
subdiretório será: /lib/modules/3.11.0-15-generic/.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
MÓDULOS
• Os módulos são carregados automaticamente
quando solicitados, através do programa
kmod, ou manualmente pelo arquivo
/etc/modules, ou ainda por meio dos
comandos insmod ou modprobe.
• Para saber a versão de kernel do sistema,
execute o seguinte comando:
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
MÓDULOS
# uname -r
INTRODUÇÃO AO LINUX
O KERNEL DO LINUX
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
O kernel do Linux nasceu “monolítico”, mas
atualmente possui características de “semi-
monolítico” ou “modular” — muito embora,
para todos os efeitos, ainda seja considerado
“monolítico”.
O kernel monolítico define uma interface de
alto nível sobre o hardware virtual, com um
conjunto de primitivas ou chamadas de sistema
para implementar serviços de sistema
operacional, como gerenciamento de
processos, concorrência e gerenciamento de
memória em vários módulos que são
executados em modo de supervisor.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
O Kernel Linux
Mesmo que a execução das operações de
cada módulo esteja separada do todo, a
integração de código é muito “apertada”,
tornando difíceis execuções corretas — e,
como todos os módulos são executados no
mesmo espaço de endereçamento, um erro em
um deles pode derrubar todo o sistema.
O argumento a favor da estrutura monolítica é
que ela divide o kernel em vários
componentes, facilitando seu desenvolvimento.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
O Kernel Linux
Com o tempo, o kernel do Linux incorporou
algumas características de um kernel modular,
o que pode fazer com que seja compreendido
como “semi-monolítico”*.
Todo o kernel, incluindo os drivers de
dispositivo e demais componentes, ainda
formam um único bloco de código gigantesco
(com mais de 30 MB, quando compactado),
mas que, agora, pode ser compilado
separadamente na forma de módulos.
* Muito embora, repita-se, em essência ainda é “monolítico”!
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
O Kernel Linux
Estes módulos* podem ser carregados e
descarregados a qualquer tempo, como seria
possível num kernel modular, porém sem a
perda de desempenho ou aumento da
complexidade que existiria ao utilizar um kernel
100% modular.
* Vide o tópico “Módulos”.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
O Kernel Linux
A desvantagem da atual estrutura do Linux é
que os módulos compilados para uma
determinada versão do kernel não podem ser
usados em outros computadores que utilizem
versões diferentes.
Mesmo drivers binários, como os destinados
aos softmodems, precisam, primeiro, ser
transformados em módulos (utilizando o
código-fonte, ou os headers do kernel atual),
para, só depois, poderem ser usados.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
O Kernel Linux
Isso é resolvido de uma das duas formas:
• As atualizações nas versões das
distribuições; ou
• Através de compilação de kernel.
Considerando-se que várias distribuições Linux
atualmente lançam atualizações de versão
com bastante regularidade, as compilações de
kernel têm caído cada vez mais em desuso.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
O Kernel Linux
INTRODUÇÃO AO LINUX
COMPILAÇÃO DO KERNEL
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Para que se compila o kernel do Linux?
1. Ativação ou desativação de aplicativos,
recursos de hardware e software,
ferramentas de sistema, suporte a drivers
de dispositivos e protocolos de redes em
geral. Nesse aspecto a compilação é quase
como uma personalização do sistema, onde
o usuário ativa somente as características
que lhe interessam, e desativa todas
aquelas que lhe são desnecessárias;
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Compilação de Kernel
2. Realização de atualizações de segurança
contra vulnerabilidades descobertas no
kernel, quando isto ocorrer (e, sim!, isso
acontece!);
3. Testes de novos recursos e ferramentas, ou
adequação para desenvolvimento de
aplicativos específicos.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Compilação de Kernel
Em suas primeiras versões o kernel do Linux
era inteiramente monolítico. O usuário
realmente tinha que compilá-lo com bastante
freqüência, com o objetivo de ativar ou
desativar aplicativos, funções, e suporte a
drivers e recursos em geral.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Compilação de Kernel
Naturalmente, dada a “trabalheira” que isso
causava, costumava se imaginar se não seria
possível simplesmente compilar o kernel
ativando todos os recursos de uma só vez,
poupando o esforço. A resposta é “NÃO!”,
porque o resultado de tal compilação
generalizada e indiscriminada levaria o sistema
a se tornar paquidérmico — um verdadeiro
“peso-pesado”! —, e daí a solução era passar
algumas horas pesquisando sobre os recursos
disponíveis, para, então, compilar o kernel
ativando-se somente o necessário para o
funcionamento da máquina.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Compilação de Kernel
Hoje, a característica “modular” do Linux faz
com que o sistema possua “aberturas”, ou
“slots”, que permitem carregar e descarregar
pedaços de código conforme necessário.
Cada dispositivo de hardware, cada sistema de
arquivos ou mesmo serviços, como o IPTables,
são representados cada qual por um módulo.
Eles podem ser carregados e descarregados
conforme a necessidade, de modo a garantir
performance e leveza ao sistema.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Compilação de Kernel
As distribuições Linux incluem quase todos os
componentes na forma de módulos. Apenas
alguns destes módulos são necessários para a
máquina (o Kernel 2.4 já incluía uns 100
módulosdiferentes para placas de som, mas,
na prática, o usuário só utiliza um deles...).
Os módulos que não estão sendo usados
ficam repousando na forma de inocentes
arquivos no HD, apenas ocupando espaço. Se
eles são arquivos, isso significa que o usuário
pode deixar para instalar alguns deles só
quando precisar — e assim, nem espaço eles
vão ocupar!
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Compilação de Kernel
Por tudo isso, hoje em dia um usuário Linux
terá poucas oportunidades para se aventurar a
compilar um kernel.
Uma delas será quando ele quiser testar
versões ainda em fase de desenvolvimento,
que não são muito recomendáveis, de
qualquer forma, por incluírem novos recursos e
funcionalidades que ainda não foram bem
testados.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Compilação de Kernel
Compilações como essas podem ocorrer
porque tais sistemas são enviados em código-
fonte, e esse código-fonte precisa ser
compilado para inserir-se no sistema.
Em se tratando dessa característica, essa
“não-recomendação” é especialmente válida e
importante em casos de sistemas Linux
instalados em servidores de produção (isto é,
servidores plenamente funcionais que atendem
a um ambiente de rede).
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Compilação de Kernel
Com máquinas críticas assim não se brinca —
e, nelas, testes e experimentos nunca são
bem-vindos!
O fato é que a própria conversão da estrutura
do kernel do Linux, de monolítica para híbrido-
monolítica, ou modular, está, aos poucos,
tornando as compilações eventos bastante
raros.
Cada nova distribuição Linux lançada no
mercado vem tornando essa tarefa menos e
menos freqüente. A utilização massiva de
módulos está consolidando essa tendência.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Compilação de Kernel
Na prática o que tem ocorrido é o seguinte:
Distribuições Linux criam seus sistemas com
os kernels já devidamente adaptados para as
funções às quais o sistema se propõe. Os
módulos necessários ao funcionamento do
sistema já estão devidamente habilitados, e
prontos para funcionar. Todos os recursos
necessários à distribuição já estão instalados!
Isso se deve ao surgimento de distribuições
especializadas do Linux.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Compilação de Kernel
Caso haja a necessidade de se habilitar novas
funcionalidades, excluir funcionalidades
desnecessárias, ou realizar correções de
segurança no kernel, as atualizações
disponibilizadas pelas distribuições executam
essa tarefa, tornando desnecessária a
compilação pelo usuário.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Compilação de Kernel
Assim sendo, a compilação de kernel no Linux
está se tornando uma atividade cada vez mais
rara.
Na prática, grande partes das compilações que
ainda ocorrem se devem a experimentações,
desenvolvimento de sistemas embarcados, e
outras atividades específicas.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Compilação de Kernel
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Compilação de Kernel
INTRODUÇÃO AO LINUX
ATUALIZAÇÕES DE KERNEL
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Conforme mencionado no tópico anterior
(“Compilação de Kernel”), as distribuições
Linux realizam atualizações de kernel sempre
que:
• Desejam ativar e/ou desativar recursos em
seus sistemas;
• Disponibilizam correções de segurança no
kernel.
Assim, as atualizações de kernel são
equivalentes às atualizações de segurança do
Windows — e devem sempre ser feitas!
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Atualizações de Kernel
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Atualizações de Kernel
Cada atualização cria um novo arquivo de
kernel que é carregado pela distribuição
durante o processo de bootstrapping
(carregamento inicial do sistema operacional).
No Linux as atualizações de versão do kernel
vão se acumulando dentro do diretório /boot.
Com isso, o gerenciador de boot (LILO, GRUB)
identifica cada uma dessas versões como se
fosse um sistema diferente. Por padrão ele
carrega a versão mais recente.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Atualizações de Kernel
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Atualizações de Kernel
Com isso, se ocorrer algum problema de
funcionamento o usuário tem a opção de
carregar a versão de kernel que estava
funcionando perfeitamente.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Atualizações de Kernel
Lista de versões de kernel que o gerenciador de boot pode usar para carregar o sistema.
INTRODUÇÃO AO LINUX
SISTEMA DE NUMERAÇÃO DO KERNEL
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
O comando a seguir exibe a versão de kernel
usada (carregada) pelo sistema:
Atualmente a versão de kernel do Linux em
desenvolvimento é a 3.14.
Para aprendermos como funciona esse
sistema de numeração, tomemos como
exemplo a versão:
3.11.0-15-generic
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
NUMERAÇÃO DO KERNEL
# uname -r
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
NUMERAÇÃO DO KERNEL
Vamos, então entender como se caracteriza:
Primeiramente existe a numeração específica
do kernel geral do Linux. A maneira como a
desenvolvedora (Red Hat, Canonical, etc.) da
distribuição/ferramenta constrói o kernel de seu
sistema adiciona mais uma camada de
complexidade.
A versão do sistema está em conformidade
com a sequência numérica no formato:
versão-principal.revisão-principal.construção-do-patch
3 11 0. .
O nome vmlinuz é o padrão para as imagens
do kernel do Linux. Assim, todas as vezes que
vir este nome (“vmlinuz”), saiba que se refere
ao kernel do sistema.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
NUMERAÇÃO DO KERNEL
Voltando a atenção ao número do exemplo
(3.11.0-15-generic), verifica-se o primeiro
número (3) que especifica o número principal
da versão, associado a grandes mudanças no
kernel.
Mudanças no número principal da versão são
reservadas somente para quando ocorrem
desenhos (ou projetos) totalmente novos do
kernel.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
NUMERAÇÃO DO KERNEL
O segundo número (11) significa duas coisas:
• Que esta é a décima-primeira principal
revisão do kernel 3 do Linux;
• E que está associada com a versão estável
de produção do kernel. Quando a versão
seguinte 3.12 foi lançada ela também se tornou
uma versão estável de produção do kernel.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
NUMERAÇÃO DO KERNEL
O terceiro número (0) é conhecido como o
número de versão do patch, o qual,
tipicamente, inclui pequenas mudanças, “bug
fixes”, “security fixes”, e melhorias (adição de
novas funcionalidades e compatibilidades).
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
NUMERAÇÃO DO KERNEL
O quarto número (-15-generic) é adicionado
pelo desenvolvedor da distribuição/ferramenta.
Nesse caso, é a 15ª construção do kernel
3.11.0, personalizado para a distribuição ou
ferramenta em questão.
André Luiz Carvalho Scampini– SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
NUMERAÇÃO DO KERNEL
Vale reforçar a idéia, já apresentada nesta
apostila, de que o kernel é o mesmo para
todas as distribuições (3.11); mas essas
mínimas diferenças permitem algumas
implementações nas distribuições, o que as
ajuda a serem únicas, ou pelo menos, muito
pouco diferentes das demais distribuições —
principalmente das distribuições-mãe*.
*(O Debian, por exemplo, que é a distribuição-mãe do Ubuntu;
isto é, a distribuição que deu origem ao Ubuntu).
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
NUMERAÇÃO DO KERNEL
Essas pequenas “customizações” não tornam
o kernel usado pela distribuição/ferramenta
muito diferente do kernel principal — apenas
servem para permitir agregar certas
funcionalidades que a equipe de
desenvolvimento da distribuição deseja inserir
em seu produto.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
NUMERAÇÃO DO KERNEL
INTRODUÇÃO AO LINUX
DIFERENCIANDO “DISTRIBUIÇÃO” DE 
“FERRAMENTA”
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Alguns sistemas em Linux são chamados de
“ferramentas” e outros de “distribuições”.
Existem diferenças conceituais entre um e
outro. Vamos ver quais são:...
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
FERRAMENTAS & DISTRIBUIÇÕES
FERRAMENTA:
Sistema baseado em Linux que possui todos
os aplicativos de trabalho já instalados, sem
possibilidade de gerenciamento dos mesmos
(instalação, atualização, remoção). Mas a
principal característica é que ela (a ferramenta)
não permite atualizações de kernel,
atualizações de versão do sistema, e não
possui um repositório de aplicativos à
disposição.
É, em suma, um sistema “engessado”.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
FERRAMENTAS & DISTRIBUIÇÕES
DISTRIBUIÇÃO:
Sistema baseado em Linux que vem com
vários os aplicativos já instalados, mas permite
o gerenciamento desses aplicativos
(instalação, atualização e remoção), bem como
permite atualizações de kernel, atualizações de
versão do sistema, e, geralmente, possui um
repositório de aplicativos à disposição.
É um sistema flexível.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
FERRAMENTAS & DISTRIBUIÇÕES
INTRODUÇÃO AO LINUX
CONHECENDO O UBUNTU
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
O Linux UBUNTU será a distribuição que
usaremos nesta disciplina. Por que?
• Atualizações a cada 6 meses, com palpáveis
avanços em cada uma delas;
• Versátil: possui versões “desktop” e “server”;
• Aceitação e utilização cada vez maiores;
• Farta documentação e literatura de apoio;
• Atualizações de segurança quase semanais!;
• Sistema maduro, robusto e estável
(confiabilidade!).
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
CONHECENDO O UBUNTU
Uma versão é lançada a cada 6 meses...
• Geralmente nos meses de Abril (mês 4) e
Outubro (mês 10);
• A versão é numerada da seguinte maneira:
Ano.Mês
EXEMPLOS:
6.06 — Lançado em Junho (06) de 2006 (6)
9.04 — Lançado em Abril (04) de 2009 (9)
10.10 — Lançado em Outubro (10) de 2010 (10)
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
CONHECENDO O UBUNTU
Cada versão possui o nome de um animal e
seu adjetivo, da seguinte maneira:
The + adjetivo + animal
... O nome e o adjetivo usam a mesma letra, e
a letra segue a ordem alfabética: AA, BB, CC,
DD, EE, FF... Etc.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
CONHECENDO O UBUNTU
EXEMPLO — a versão 13.10 chama-se:
The Saucy Salamander
(“A atrevida Salamandra”)
CONHECENDO O UBUNTU
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
EXEMPLO — a versão 15.04 chama-se:
The Vivid Vervet
(“O vívido Macaco”)
CONHECENDO O UBUNTU
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
O próximo lançamento será:
• 15.10 TheWilyWerewolf
(“O astuto Lobisomen”)
Os lançamentos anteriores:
• ...
• 11.10 The Oneiric Ocelot
• 12.04 The Precise Pangolin
• 12.10 The Quantal Quetzal
• 13.04 The Raring Ringtail
• 14.04 The Trusty Tahr
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
CONHECENDO O UBUNTU
O Ubuntu é mantido pela empresa Canonical
Ltd., criada por Mark Shuttleworth (fundador e
ex-dono da Autoridade Certificadora Thawte
Inc.)
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
CONHECENDO O UBUNTU
• O Ubuntu é 100% livre, e existe o
compromisso formal de que sempre será!
• A Canonical oferece suporte pago (opcional!)
para empresas, merchandising (camisetas,
bonés, canecas, etc.), treinamento oficial e
OEM (Original Equipment Manufacturer);
• NÃO existe “versão paga” (“professional”,
“enterprise”, etc.) ou “versão Community” (livre
/ grátis)! A versão que o cliente com suporte
usa é a mesma que o cliente sem suporte!
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
CONHECENDO O UBUNTU
Websites oficiais:
http://www.ubuntu.com/
http://www.canonical.com/
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
CONHECENDO O UBUNTU
INTRODUÇÃO AO LINUX
SEGURANÇA NO LINUX
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
• O Linux é baseado no UNIX, um sistema
criado em 1969 pelo time de desenvolvedores
da Bell Labs, incluindo: Ken Thompson,
Dennis Ritchie, Brian Kernighan, Douglas
McIlroy e Joe Ossanna;
• Na época, “segurança” não era preocupação!;
• O Linux segue a arquitetura do Unix, que, por
sua vez, é um projeto de 40 anos de idade!;
• Portanto, em sua essência, o Linux não é
seguro!
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Segurança no Linux
• Em palestra proferida na “LinuxCon”
(Conferência Internacional sobre Linux),
ocorrida em Boston/MA, entre os dias 10 e 12
de agosto de 2010, o engenheiro de sistemas
da Red Hat, e desenvolvedor do kernel do
Linux, James Morris, declarou que:
“O Linux não é tão seguro quanto parece!”
Fonte:
http://www.slideshare.net/jamesmorris/linux-kernel-
security-overview-kca-2009
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Segurança no Linux
Fonte:
http://www.slideshare.net/jamesmorris/linux-kernel-
security-overview-kca-2009
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Segurança no Linux
Um dos slides da palestra.
• O Linux é baseado no UNIX, que não foi
projetado pensando em segurança;
• Apesar dos mecanismos adicionais de
segurança (AppArmor, Tomoyo, LSM, SELinux,
Smack...), esses recursos não podem ser
usados todos ao mesmo tempo (usa-se um ou
outro);
• Os usuários em geral subestimam as
configurações de “hardening” dos aplicativos (o
perigo dos “tutos” que “funfam”...);
• Além das falhas dos próprios aplicativos!
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Segurança no Linux
• Em seu livro “On The Security of Unix”
(“Sobre a segurança do Unix”), Dennis Ritchie,
um dos criadores do Sistema, afirmou
(tradução livre):
“O primeiro fato a enfrentar é que o UNIX não
foi desenvolvido tendo-se qualquer ideia de
segurança em mente. Esse fato, por si só, já
garante um grande número de brechas.”
Onde ler:
http://www.tom-yam.or.jp/2238/ref/secur.pdf
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DEREDES DE COMPUTADORES
Segurança no Linux
• O que mais chama a atenção é o primeiro
parágrafo, que diz (tradução livre):
“Recentemente tem havido muito interesse nos
aspectos relacionados à segurança de
sistemas operacionais e softwares.”
Atentemos para o detalhe do “recentemente”:
10 anos depois da criação do UNIX — o que
prova que ele realmente não foi desenvolvido
pensando-se em segurança.
Onde ler:
http://www.tom-yam.or.jp/2238/ref/secur.pdf
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Segurança no Linux
“O Linux é mais seguro que o Windows!”
(slogan decorado e repetido à exaustão por entusiastas do Linux)
• Não! O Linux tem problemas de segurança
diferentes do Windows!;
• Existem vários “backdoors” para Linux;
• Comandos maliciosos de websites nocivos
podem interferir no funcionamento de
aplicativos no Linux;
• A maioria dos ataques ao Linux são
“escaladas de privilégio” (obter privilégios de
“root”)!
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Segurança no Linux
• O kernel do Linux e seus aplicativos possuem
falhas de segurança (deve-se fazer as
atualizações sempre que disponíveis!)
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Segurança no Linux
• Em setembro de 2009 um pesquisador russo,
Denis Sinegubko, descobriu uma “botnet” (rede
de “bots”) toda formada por servidores Linux;
• Essa rede era usada para executar “botnets”
em sistemas Windows;
• Esses servidores Linux localizavam-se em
grandes data centers de provedores de dados;
• O que causou isso: configurações malfeitas
dos administradores desses sistemas Linux.
Fonte: http://www.itworld.com/security/77499/first-linux-botnet
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Segurança no Linux
Em março de 2013 um pesquisador configurou
remota e ilegalmente 420 mil terminais botnet,
correspondendo a 1/4 do total de sistemas
ideiais, e esses terminais rodavam Linux.
Fonte:
http://www.theregister.co.uk/2013/03/19/carna_botnet_ipv4_inte
rnet_map/
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Segurança no Linux
• Em dezembro de 2013 foi descoberta uma outra rede
botnet em máquinas rodando Windows e... sim,
Linux!
• O Linux era invadido por meio de um ataque
dicionário ao serviço SSH do sistema, por onde o
atacante ganhava o controle da máquina e instalava o
bot.
• Especialistas acreditavam que o Linux estava sendo
atacado por ser o sistema mais usado como servidor
de rede e, portanto, os atacantes teriam mais largura
de banda disponível para realizar seus ataques a
outras vítimas.
Fonte: http://news.softpedia.com/news/CERT-Poland-Warns-of-DDOS-Botnet-
Targeting-Windows-and-Linux-Machines-410223.shtml
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Segurança no Linux
A “Lei de Linus” (Torvalds), diz que:
“Given enough eyeballs, all bugs are
shallow” ("Dados olhos suficientes, todos os
erros são superficiais").
Ela foi tema de um “paper” da NCSU —
Universidade da Carolina do Norte, EUA, que
analisou empiricamente essa “lei”, com o título:
“Secure Open Source Collaboration: An
Empirical Study of Linus’ Law” (“Colaboração
ao Código Aberto Seguro: Um estudo empírico
sobre a Lei de Linus”).
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
MITO: A “Lei de Linus”
O estudo revelou que:
a. arquivos modificados por vários grupos
separados de desenvolvedores são mais
propensos a vulnerabilidades do que se
modificados por um só grupo; e
b. arquivos tendem a ser vulneráveis quando
alterados por muitos desenvolvedores, os
quais também trabalham em outros projetos
open source.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
MITO: A “Lei de Linus”
Por que?
A explicação é simples: gente demais “botando
a mão” acaba criando terreno fértil para o
surgimento de bugs. E pessoas se
preocupando com projetos simultâneos demais
também podem criar bugs — mesmo que
inadvertidamente.
Fonte: http://www4.ncsu.edu/~apmeneel/ccs221-meneely.pdf
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
MITO: A “Lei de Linus”
Em março de 2014 foi descoberta uma
vulnerabilidade grave na biblioteca do
GnuTLS, que é usada nas comunicações
criptografadas fim-a-fim (HTTPS, FTPS, etc.),
pois implementa os protocolos SSL, TLS e
DTLS.
Essa vulnerabilidade permitia que atacantes
pudessem espionar as comunicações, mesmo
estando criptografadas pelos protocolos
SSL/TLS.
Várias distribuições Linux e aplicativos open
source apoiam-se sobre o GnuTLS.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
MITO: A “Lei de Linus”
Segundo discussões em fórum especializado,
essa vulnerabilidade existiria desde 2005, e foi
descoberta em 2014, tendo, portanto, 9 anos
de existência.
Esse é um daqueles casos em que a “Lei de
Linus” não funcionou...
Fontes:
http://arstechnica.com/security/2014/03/critical-crypto-bug-leaves-linux-hundreds-
of-apps-open-to-eavesdropping/
http://www.reddit.com/r/netsec/comments/1zhjwh/certificate_verification_vulnerabi
lity_in_all/
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
MITO: A “Lei de Linus”
Em abril de 2014, logo em
seguida à descoberta da
vulnerabilidade do GnuTLS, foi
descoberta uma falha ainda
maior e mais preocupante, que
ficou conhecida como
“Heartbleed”.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
O bug “Heartbleed”: um escândalo!
O Heartbleed é um bug na biblioteca do
OpenSSL, que permite a um atacante ler a
memória de um servidor ou de um cliente,
permitindo-o recuperar chaves SSL privadas.
Em outras palavras, todas as chaves
criptográficas estavam comprometidas!
Os logs examinados levaram à conclusão que
vários hackers podem ter explorado a falha por
pelo menos cinco meses (!) antes que fosse
descoberta.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
O bug “Heartbleed”: um escândalo!
O grande problema foi que várias Autoridades
Certificadoras renomadas, como Certisign e
Verisign usam o OpenSSL, e portanto, seus
certificados digitais ficaram todos
comprometidos.
Isso significa dizer que também a segurança
de inúmeros websites críticos também ficou
comprometida: não apenas as das grandes
corporações da Internet (Google, Microsoft,
Facebook, Twitter, etc.), mas bancos,
instituições financeiras em geral, sites
governamentais, militares, etc., etc. etc...
Saiba mais: http://heartbleed.com/
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
O bug “Heartbleed”: um escândalo!
As consequências foram quase catastróficas, e
isso levantou uma série de questões sobre a
real privacidade dos dados na Internet:
Estamos realmente seguros?
Que bugs ainda não foram
descobertos, mas que já estão sendo
explorados?
Ainda hoje os efeitos do bug Heartbleed
repercutem nas discussões de segurança.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
O bug “Heartbleed”: um escândalo!
Maciça operação destinada a infectar 500 mil
computadores, e 25 mil servidores dedicados
— todos eles de arquitetura Unix (Linux, BSD e
OS X).
A “operação” é descoberta em setembro de
2013, e tornada pública em março de 2014.
Estudos apontam que essa operação já estava
em curso desde setembro de 2011.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Operação “Windigo”
A operação também atingiu máquinas rodando
Windows,caso o sistema operacional
estivesse executando o Cygwin.
Cygwin é uma grande coleção de ferramentas
GNU open source que proveem
funcionalidades similares às distribuições Linux
no Windows.
Trata-se de uma .dll (cygwin1.dll) que fornece
substanciais funcionalidades do API POSIX.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Operação “Windigo”
Trojans usados na “Operação”:
1. Linux/Ebury— backdoor OpenSSH, usado
para controlar os servidores e furtar
credenciais (“escalada de privilégio”);
2. Linux/Cdorked — backdoor HTTP usado
para redirecionar tráfego web;
3. Linux/Onimiki — backdoor que modificava
servidores DNS, usando-os para resolver
endereços IP arbitrários;
4. Perl/Calfbot — script em Perl usado para
enviar spam.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Operação “Windigo”
Não utilizava nenhuma vulnerabilidade nova
nos sistemas Unix/Linux. Aproveitava-se de
fraquezas sistêmicas já conhecidas.
Fontes:
RELATÓRIO COMPLETO E DETALHADO:
http://www.welivesecurity.com/wp-content/uploads/2014/03/operation_windigo.pdf
ARTIGO:
http://thehackernews.com/2014/03/operation-windigo-linux-malware.html
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Operação “Windigo”
RESUMO DA ÓPERA (RECOMENDAÇÕES):
• Não basta confiar na “segurança” do sistema.
O administrador deve fazer configurações
realmente seguras (os chamados
“hardenings”);
• As atualizações de sistema e de aplicativos
devem ser feitas sempre! (Não existe o
conceito “configure-e-esqueça”!);
• Utilize um dos mecanismos de segurança
existentes (AppArmor, GRSecurity, SELinux,
etc.)
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Segurança no Linux
INTRODUÇÃO AO LINUX
LICENÇAS: DIFERENCIANDO “FREEWARE” DE 
“OPEN SOURCE”
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Comecemos do princípio: primeiro, vamos
entender o significado da palavra inglesa
“free”...
“FREE”, em inglês, tanto significa “grátis”,
como também significa “livre”. Pode ser usado
para referenciar um produto que é gratuito
(“free beer” – cerveja grátis), como também
pode ser usado para referenciar um estado ou
condição (“I am a free person” – eu sou uma
pessoa livre).
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Freeware? Open source?...
Quando Richard Stallman criou o Projeto GNU
em 1984, o objetivo era criar um sistema
operacional totalmente livre, que qualquer
pessoa teria o direito de usar, modificar e
redistribuir — e não apenas o software, mas
também o seu código-fonte.
Em função disso, em 1985 Stallman criou o
“Free Software Foundation” (Fundação do
Software Livre — ou, simplesmente, FSF), com
o objetivo de divulgar essa ideia.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Freeware? Open source?...
Em concordância à filosofia proposta por
Stallman, a FSF orienta os desenvolvedores de
softwares livres a não usarem o termo
“freeware”, e sim “free software”.
Para a FSF, a palavra “free” deve ser
entendida pelos 2 significados (“grátis” e
“livre”), mas o termo “freeware” é entendido
apenas como grátis, e não como “livre”, e por
isso não deve ser usado para designar
softwares que pretendam ser considerados
“livres”.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Freeware? Open source?...
Todo software livre, obrigatoriamente, deve ser
distribuído junto com o código-fonte — ou
então, o código-fonte deve estar fácil e
livremente disponível para obtenção.
Aquele que deseja desenvolver um software
livre não deve, de forma alguma, cobrar
qualquer forma de pagamento ou
compensação pela obtenção do código-fonte.
Se, por exemplo, o código-fonte estiver
disponível para download, não se deve exigir
registro, cadastro em website, ou qualquer
forma de condição para esse download.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Freeware? Open source?...
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Freeware? Open source?...
Richard Stallman
O software livre se baseia em 4 liberdades
fundamentais:
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Freeware? Open source?...
1. Liberdade Nº 0: A liberdade de executar o programa,
para qualquer propósito;
2. Liberdade Nº 1: A liberdade de estudar como o
programa funciona e adaptá-lo para as suas
necessidades. O acesso ao código-fonte é um pré-
requisito para esta liberdade;
3. Liberdade Nº 2: A liberdade de redistribuir cópias de
modo que se possa ajudar ao seu próximo;
4. Liberdade Nº 3: A liberdade de aperfeiçoar o programa
e liberar os seus aperfeiçoamentos, de modo que toda a
comunidade se beneficie deles. O acesso ao código-fonte
é um pré-requisito para esta liberdade.
Segundo a FSF, um software livre...
• ... não pode ter o seu código
apropriado/fechado por ninguém, de modo que
se impeça o acesso de outros;
• ... pode ser modificado e a licença dessa
modificação vendida, desde que o código-fonte
original permaneça disponível para outras
pessoas;
• ... pode estar agregado a serviços e produtos
cobrados, como suporte técnico, módulos
adicionais, etc. — desde que se respeitem as
liberdades fundamentais.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Freeware? Open source?...
No entendimento da FSF um software é
considerado “free” ou “non-free”.
Softwares “free”, já sabemos, são aqueles
livres e grátis.
Já os softwares “non-free”, segundo o
entendimento da FSF, são aqueles que não
são livres! Mesmo que os softwares em
questão sejam gratuitos, o conceito de “non-
free” refere-se àqueles que possuem o código
fechado (proprietários).
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Freeware? Open source?...
Como consequência dessas ideias, a FSF
criou e disponibiliza as chamadas licenças
“GNU GPL” — GNU General Public License,
que são licenças públicas, que estabelecem as
condições de licenciamento dos chamados
“softwares livres”.
A licença GPL já se encontra na versão 3,
sendo referenciada como “GPLv3”.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Freeware? Open source?...
Há, ainda, outras licenças, a saber:
• GNU AGPL — GNU Affero General Public
License
• GNU LGPL — GNU Lesser General Public
License
• GNU FDL — GNU Free Documentation
License
• GNU APL— GNU All-Permissive License
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Freeware? Open source?...
GNU AGPL (“Affero”):
Licença destinada a softwares que são
executados via rede, trocando dados com
programas proprietários.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Freeware? Open source?...
GNU LGPL (“Lesser”):
Licença destinada a softwares que precisam
usar/carregar/se relacionar com módulos
(softwares) proprietários.
É compatível com a licença GNU GPL, mas
menos “radical”, uma vez que a GPL impõe
sérias restrições ao uso dos/relacionamento
com os chamados softwares “non-free” (“não-
livres”).
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Freeware? Open source?...
GNU FDL (Documentation):
Licença destinada à documentações em geral:
manuais, guias de usuário, etc.
André Luiz Carvalho Scampini – SUPERIOR EM TECNOLOGIA DE REDES DE COMPUTADORES
Freeware? Open source?...
GNU APL (“All-Permissive”):
Licença destinada à arquivos “README”

Continue navegando