2. Timeline GNU/Linux
http://futurist.se/gldt/
Mais sobre a história em
https://pt.wikipedia.org/wiki/Linux
Ou www.google.com :-)
O pai do Kernel
https://www.google.com/+LinusTorvalds
O pai do projeto GNU
https://stallman.org/
3. Tipos de pacotes nas distros
GNU/Linux
● Debian e seus derivados – arquivos .deb
– Gerenciador de pacotes: apt-get ou aptitude
● Red Hat e seus derivados – arquivos .rpm
– Gerenciador de pacotes: yum
● Slackware e seus derivados – arquivos .txz
– Gerenciador de pacotes: não existe padrão, porém
aceita vários como o slapt-get. O slackpkg é usado
para atualizar pacotes também.
– Existe o pkgtools para instalar e remover pacotes do
sistema.
4. S.O. instalação no Virtual Box
● Sistema Operacional: GNU/Linux Debian 8 Jessie (i386)
– Lançado em 16/08/93 pro Ian Murdock (estudante universitário) nome
da esposa Debra.
– Codinomes das distribuições sempre são tirados do filme Toy Story
– 8.0 Jessie, 7.0 Wheezy, 6.0 Squeeze, 5.0 Lenny... (versões estáveis)
– Existem também sempre as versões de Testes e Instável, que se
chamam respectivamente Strech e Sid (personagem que costumava
quebrar brinquedos, alusão aos bugs que podem ocorrer).
– A partir de Debian que foram criadas outras famosas distribuições
como o Ubuntu, Knoppix, Clonezilla, etc.
● Virtual Box 5
● Acesse a rede Wireless TUX
● Senha para a rede TUX: t3st3543
5. Criação da VM no Virtual Box
1. Novo : Digite o nome da nova VM e escolha o tipo
do SO
2. Memória para nossa VM pode ser de 256 MB
3. Crie um novo disco rígido, VDI, Dinamicamente
alocado, 8 Gb
4. Feito isto, vá nas Configurações da nova VM em
Armazenamento/ e selecione o arquivo ISO de
instalação no controlador IDE.
5. Em Rede, no Adaptador 1, selecione o modo
Bridge e seu adaptador wireless
6. Ligue a VM.
6. Instalação da distro no Virtual Box
1. Escolha a língua, localidade e teclado
2. Nome da máquina debian, domínio unifebe.edu.br
3. Senha de root tux2015, nome de usuário seu nome, nome do
seu usuário, senha do seu usuário tux@@
4. Relógio, sua localização
5. Particionamento do disco...
8. Ainda sobre as partições...
● No ambiente GNU/Linux cada disco equivale a um dispositivo em
seu /dev/
● Caso tenhamos apenas 1 disco na máquina este disco se encontra
como /dev/sda
● Caso tenhamos mais de um dispositivo de armazenamento, eles
serão /dev/sdb, /dev/sdc e assim por diante
● Em sistemas com RAID via hardware podem ocorrer alteração destes
nomes devido a controladora raid, onde eles podem serem chamados
por exemplo de /dev/cciss/c0p0
● A unidade de CD chama-se geralmente /dev/sr0
● Para saber quais discos você possui na máquina utilize o comando
cat /proc/partitions
● Estas informações são hoje em dia, pois antigamente os discos se
chamavam /dev/hda, discos SCSI eram conhecidos como /dev/sda,
CD /dev/sdc0 e Disquetes /dev/fd0
9. Mais um pouco sobre as partições...
● Tendo os discos, nós devemos reparticioná-los para
melhor distribuir nossos diretórios (/home, /var, etc) e
utilização de nossa memória swap (memória em disco).
● Por exemplo, temos um disco de 8 gb e vamos instalar
nossa VM, primeiro temos que ter em mente para que
propósito será utilizada esta VM, quanto de memória a
máquina possui e quais serviços irão rodar na mesma.
– Anteriormente configuramos como 256 mb de RAM, então
para a memória swap podemos duplicar este valor que ficaria
512 mb de memória SWAP.
– Sabemos que na próxima aula iremos configurar um servidor
proxy nesta VM, alguma ideia do que fazer com o
particionamento? Quais partições devemos fazer separadas?
10. Mais um pouco sobre as partições...
● Nosso proxy Squid faz cache, então ele deve
guardar o cache dos clientes em algum lugar.
● O local padrão do cache do squid é o
/var/spool/squid3
● Sabemos também que o cache gera logs, logs dos
acessos dos usuários utilizando o proxy, estes logs
são gerados em /var/log/squid3
● Consequentemente seria interessante fazermos
uma partição separada para o /var correto?
11. Particionamento de disco
● Nosso disco virtual é o /dev/sda de 8 GB
● Podemos então deixar o particionamento assim:
– /dev/sda1 / 3 GB
– /dev/sda2 /var 4,5 GB
– /dev/sda3 swap 512 MB (ou restante)
● Quando pensamos em configurar um servidor o pensamento é
que não será necessário redimensionar estas partições no mínimo
em 3 anos, por isso é muito importante este passo ser muito bem
pensado.
● Caso seja necessário redimensionar, é possível através de um live
CD de qualquer distribuição e usar softwares como o Gparted ou
KDE Partition Manager
● Clique em continuar na instalação para o sistema ser instalado
nas partições criadas.
12. O usuario root
● Em qualquer distribuição GNU/Linux o usuário
administrador é o root
● Ele é o cara que pode dar um format c: a.k.a.
mkfs.ext4 /dev/sda1 por exemplo
● Como ele que criamos usuários, instalamos pacotes,
alteramos permissões em arquivos do sistema,
alteramos partições, etc.
● Hoje em dia em muitas distribuições utilizamos o
comando sudo, o sudo nada mais é do que um
programa que baseado em suas configurações dá
permissão a determinados usuários terem acesso a
determinadas situações que somente o root poderia.
13. Continuando a instalação
● Configuração do gerenciador de pacotes, nesta
opção configuramos da onde seu servidor irá buscar
as atualizações, selecione Brasil e escolha um
repositório
● Enquanto os pacotes são atualizados e instalados,
vamos dar uma olhada nas permissões de nosso
ambiente.
● Caso ele pergunte para participar do concurso de
pacotes pode dar Sim e seguir em frente.
14. Permissões em ambientes
GNU/Linux
● No GNU/Linux temos 3 principais controles de acesso a
arquivos e diretórios
– Controle de acesso a nível de usuário (leitura, escrita, execução)
– Controle de acesso a nível de grupo (leitura, escrita, execução)
– Controle de acesso público (qualquer usuário) (leitura, escrita e
execução)
● Eles são visualizados através do comando ls -l por
exemplo:
ls -l /etc/passwd
-rw-r--r-- 1 root root 1846 Ago 9 22:05 /etc/passwd
Poderíamos ter algo assim também:
-rwxrwxrwx 1 marlon marlon 10 Out 28 10:32 teste.txt
15. Continuando a instalação
● Como vamos começar com um servidor básico,
marque somente o servidor de SSH
● Lembre-se, Evite instalar interface gráfica em
servidores GNU/Linux, além de ocupar espaço
desnecessário, esta interface as vezes podem
ocupar recursos de memória e CPU
desnecessários.
● Continue com a instalação.
16. Permissões em ambientes
GNU/Linux
● Ainda sobre as permissões, uma das formas que é
utilizada para alterar as permissões de arquivos e
usuários é através do comando chmod
● Você deve ter isto em mente para utilizar o chmod:
– Por exemplo: chmod 750 arquivo.txt
O arquivo ficaria assim: -rwxr-x---
Para arquivos (-)
rwx
000 0 (zero) permissão negada
001 1 perm. de execução
010 2 perm. de gravação
011 3 perm. de gravação e execução
100 4 perm. de leitura
101 5 perm. de leitura e execução
110 6 perm. de leitura e gravação
111 7 soma de todas as permissões
Para diretórios (d)
rwx
000 0 (zero) permissão negada
001 1 perm. para entrar no diretório
010 2 perm. para gravar dentro do diretório
011 3 perm. de entrar e gravar no diretório
100 4 perm. para listar o conteúdo do diretório
101 5 perm. de listar e entrar no diretório
110 6 perm. de listar e gravar no diretório
111 7 soma de todas as permissões
Nível u g o
Permissão rwx r-x ---
Binário 111 101 000
Octal 7 5 0
17. Permissões em ambientes
GNU/Linux
● Ficou difícil? Certo podemos dar uma facilitada...
● No exemplo anterior o comando chmod 750 arquivo.txt
é ideia é dar permissão total ao dono do arquivo,
permissão de leitura e execução ao grupo e nenhuma
permissão para qualquer outro usuário, podermos ao
invés de usar os numeros (octal), utilizar as letras, r w x
– Poderia ficar assim:
chmod u+rwx arquivo.txt
chmod g+rx arquivo.txt
– O arquivo também ficaria assim: -rwxr-x---
– Caso precisasse trabalhar com as permissões dos demais
usuários utilizaríamos “o” por exemplo chmod o+r arquivo.txt
dando permissão para qualquer pessoa ler.
18. Continuando com a instalação...
● Quando você é perguntado para instalar o
carregador de inicialização no seu disco rígido diga
que Sim.
● Ele irá gravar o GRUB (carregador de inicialização)
na sua MBR (Master Boot Record) início do seu
disco.
● Escolha seu disco /dev/sda e pronto!
● Sua instalação está concluída.
19. Primeiro boot
● Apenas para curiosidade, as novas distros tem
alterado o seu modo de inicialização (init system)
● Anteriormente era utilizado o system V agora é
utilizado o system D
● Com esta alteração alguns comandos na
administração de serviços e inicialização no seu
sistema GNU/Linux são alterados.
– Ao invés de se usar por exemplo service ssh stop
– É utilizado hoje em dia systemctl stop ssh.service
20. Criando mais usuários
● Para você criar usuários no GNU/Linux utilize o
comando adduser
adduser fulano
– Ele irá pedir a senha e pronto.
– Para apagar um usuário utilize o comando:
deluser fulano
● Quando um usuário é criado no sistema, ele gera
uma nova entrada nos arquivos /etc/passwd,
/etc/shadow e /etc/group, também cria um novo
diretório para este usuário em /home/usuario
21. Sobre usuários
● Cada usuário quando criado recebe um número de
identificação no seu GNU/Linux, este número chama-
se UID (User Identification).
● Assim como também cada grupo criado recebe um
número de identificação chamado GID (Group
Identification).
● Estes números podem serem verificados no ser
arquivo principal das contas do sistema o
/etc/passwd.
● Vamos utilizar o comando cat para ver o conteúdo do
mesmo, digite:
cat /etc/passwd
22. Sobre usuários
● Veja as ultimas linhas do arquivo conforme a saída:
marlon:x:1000:1000:Marlon Willrich,,,:/home/marlon:/bin/bash
– Onde temos
● marlon: Nome do Usuário
● x: Senha, que na verdade fica em /etc/shadow
● 1000: Uid do usuário
● 1000: Gid do usuário
● Marlon Willrich: Campo opcional, que contem o nome
completo do usuario
● /home/marlon: Localização do diretório home do usuário
● /bin/bash: Shell que este usuário terá ao logar no sistema
23. Sobre grupos
● Agora vamos verificar informações sobre os grupos de
usuários no sistema, digite cat /etc/group
● Teremos os nomes de todos os grupos que existem no
sistema, nas ultimas linhas podemos verificar que ao
criarmos um novo usuário foi criado também um grupo
com o mesmo nome do seu usuário, é um procedimento
padrão, mais que pode ser alterado caso necessário.
● Veja:
marlon:x:1000:
– Onde temos
● marlon: Nome do Grupo
● x: Senha, que na verdade fica em /etc/gshadow
● 1000: Gid do Grupo
24. Sobre usuários e grupos
● Sim, existe diversos comandos para a administração de
usuários e senhas no sistema, estes comandos nada mais
fazem do que administrar estes arquivos que vimos
anteriormente
● Sim, podemos alterar estes arquivos que as alterações serão
efetuadas normalmente no sistema, apenas basta salvá-los,
mais tome cuidado
● Alguns comandos para administração de usuários :
– adduser e deluser (como já vimos anteriormente)
– addgroup e delgroup
– useradd, userdel, usermod
– groupadd, groupdel, groupmod
– chfn, chsh, chpasswd, passwd e mais alguns...
25. Sobre usuários e grupos
● Sim, existe diversos comandos para a administração de
usuários e senhas no sistema, estes comandos nada mais
fazem do que administrar estes arquivos que vimos
anteriormente
● Sim, podemos alterar estes arquivos que as alterações serão
efetuadas normalmente no sistema, apenas basta salvá-los,
mais tome cuidado
● Alguns comandos para administração de usuários :
– adduser e deluser (como já vimos anteriormente)
– addgroup e delgroup
– useradd, userdel, usermod
– groupadd, groupdel, groupmod
– chfn, chsh, chpasswd, passwd e mais alguns...
26. Alguns comandos básicos
● Vamos ver e testar alguns comandos básicos no sistema, entre com
seu usuário no sistema e vamos fazer alguns testes:
– cd (comando básico para entrar e sair de diretórios)
– ls (o mesmo que dir, ou lista arquivos e diretórios)
● Ex.: ls, ls -lh, ls -lha
– cp (faz uma cópia de arquivos e diretórios)
● $ cp /etc/passwd /home/seuusuario/passwd ou
● $ cp /etc/passwd passwd (onde ele copiará o arquivo para o
diretório que você estiver)
– pwd (verifica em qual diretório você está)
● $ pwd
/home/marlon
– mv (move ou renomeia um arquivo)
● $ mv /home/seuusuario/passwd /home/seuusuario/passwd.temp
27. Alguns comandos básicos
● Mais alguns...
– Ifconfig (lista e configura interfaces de rede)
● $ ifconfig (vai listar suas interfaces de rede, você pode verificar
seu endereço IP)
– rm (apaga arquivos e diretórios)
● $ rm /home/seuusuario/passwd.temp
● $ rm -rf /home/seuusuario/temp (apaga um diretório e seu
conteúdo sem perguntar)
– df (verifica a ocupação das partições
● $ df -h (para ver as informações em um formato mais legível)
– ps (lista os processos em execução no seu sistema)
● $ ps -aux
● Meu Deus quantos comandos, nunca vou conseguir decorar isso tudo!?
Não se preocupem... piora, alguns facilitadores para lembrar das
opções dos comandos são as páginas de manuais on line do sistema.
28. Alguns comandos básicos
● Sim, e não se preocupe que são simples, por exemplo, gostaria
de saber como funciona o ls, não lembro das suas opções, digite:
– $ man ls (digite q para sair)
– Um resumo das opções também pode ser obtidas, geralmente
com o comando junto de um –help por exemplo:
– $ ls –help
● E claro, só com o costume você decorará ou aprenderá os
comandos.
● Continuando com nossos comandos...
– mkdir (cria diretórios)
● $ mkdir /home/seuusuario/temp1
● $ mkdir -p /home/seuusuario/temp2/temp1/temp3 (cria
vários subdiretórios com a opção -p)
29. Alguns comandos básicos
● Alguns comandos do sistema
– passwd (altera a senha de usuário)
● $ passwd (altera a senha do usuário corrente)
● $ passwd usuario (se você for root, altera a senha de
qualquer usuario)
– dmesg (lista as ultimas mensagens do kernel)
– lspci (lista suas interfaces PCI na máquina)
– lsusb (lista suas interfaces USB na máquina)
– find (busca por arquivos no seu sistema
● $ find / -name passwd (irá procurar por tudo com o nome
passwd)
● $ find / -name pass* (irá procurar por tudo que comece
com pass)
30. Alguns comandos básicos
● Comandos para alterar usuários
– su (altera seu usuário para usuário específico, normalmente
utilizado para virar root a partir de um usuário comum)
● $ su – (você estando logado como seu usuário e digitar su
- ele irá pedir uma senha, que a senha de root, então você
virará root)
● $ su – ciclano (você estando logado como usuario1 e
digita su – ciclano, irá ser solicitada a senha do usuário
ciclano, então você virará o usuário ciclano).
● $ su – ciclano (você estando logado como root e digitar su
– ciclano, ele não pedirá senha e você virará o usuário
ciclano).
31. Alguns comandos básicos
● Gerenciamento de pacotes no Debian
– apt-get,apt-cache ou aptitude
– Exemplos
● $ apt-get update (baixa as listas de pacotes novos dos
repositórios que você escolheu na instalação).
● $ apt-get upgrade (baixa os pacotes e atualiza os pacotes com
problemas se segurança).
● $ apt-cache search pacote (procura por um pacote nas listas
de pacotes)
● $ apt-get install pacote (instala um determinado pacote no
sistema)
● $ apt-get remove pacote (remove um pacote instalado,
mantém arquivos de configuração)
● $ apt-get purge pacote (remove totalmente um pacote
instalado).
32. Alguns comandos básicos
● Gerenciamento de pacotes no Debian
– Exemplos
● $ aptitude update (baixa as listas de pacotes novos dos
repositórios que você escolheu na instalação).
● $ aptitude upgrade (baixa os pacotes e atualiza os
pacotes com problemas se segurança).
● $ aptitude search pacote (procura por um pacote nas listas
de pacotes)
● $ aptitude install pacote (instala um determinado pacote
no sistema)
● $ aptitude remove pacote (remove um pacote instalado,
mantém arquivos de configuração)
● $ aptitude purge pacote (remove totalmente um pacote
instalado).
33. Alguns comandos básicos
● Vamos instalar alguns comandos interessantes em nosso sistema:
– Digite
● $ aptitude install wget mc vim tcpdump rcconf htop iotop tcptrack
sudo ncdu
– Por padrão o Debian vem com o editor de texto chamado nano, porém
no comando anterior instalamos dois novos editores o vim e o mcedit
● $ mcedit /etc/issue (edita a mensagem que aparece no Login do
sistema)
● $ tcpdump -i eth0 (debuga todo o trafego de rede que passa pela
placa de rede eth0)
● $ htop (melhor visualização de informações de processos, memória
e utilização de CPU)
● $ iotop (utilização de consumo de IO (discos) leitura e gravação)
● $ tcptrack -i eth0 (lista todas as conexões de rede que estão
passando pela sua máquina).
34. Alguns comandos básicos
● Aliases, aliases seu pequenos atalhos que podemos criar em
nosso sistema.
● Por exemplo, ao invés de sempre ter de digitar “ls -lh” gostaria
de digitar apenas “l” e ter o mesmo resultado, para isto
utilizamos ao aliases.
● Vamos fazer um teste, como root, edite o arquivo /root/.bashrc
– $ mcedit /root/.bashrc
● Por padrão no Debian, ele já vem com algumas opções de alias
comentados, nosso trabalho é apenas descomentá-los
● Podemos dar uma incrementada nele, um outro comando
interessante no sistema é o tail ele ve o conteúdo do arquivo
enquando o mesmo é alterado. Este comando é muito
interessante ao vermos os arquivos de log do sistemas que
ficam em /var/log
35. Logs
● Eles são seus amigos, tudo o que ocorre no sistema (ao menos
geralmente) os logs vão auxliar você, os mais importantes são:
– /var/log/messages
– /var/log/syslog
– /var/log/auth.log
– /var/log/kern.log
● É possível editar estes arquivos normalmente para visualiza-los
com nossos editores, porém uma forma bastante útil é utilizar o
tail, por exemplo:
– $ tail -f /var/log/messages
– Irá listas as ultimas informações do seu messages.
– Agora faça um atalho para este comando, eu geralmente
utilizo “tm”
36. Sudo
● Instalamos o sudo anteriormente, agora vamos ver como utilizá-
lo.
● Em distribuições como o Ubuntu, elas já dão acesso ao sudo ao
seu usuário na própria instalação do sistema, aqui não temos isto
ainda configurado.
● Para darmos permissão ao seu usuario utilizar o sudo, edite o
arquivo /etc/group e no grupo sudo adicione seu usuário
● Pronto!, feito isto saia do root e logue novamente com seu
usuário
● Utilize o comando :
– $ sudo su -
– Agora você deve digitar a senha do seu usuário, não a do
root, e caso queira editar algum arquivo como root utilize
comandos como sudo mcedit /etc/passwd
37. Mais alguns comandos básicos
● Continuando na nossa luta por comandos básicos, vamos ver
agora mais alguns:
– $ netstat -patun (este comando lista as conexões de rede,
muito utilizado para ver quais portas estão abertas no seu
sistema)
– $ du -hs (fala quanto de espaço determinado diretório está
ocupando)
– $ ncdu / (você navega por diretórios que mais ocupam
espaço em seu sistema)
– $ mount (verifica partições montadas em seu sistema)
– $ mount /dev/sdX1 /media/teste (exemplo para montar uma
partição em algum diretório sendo como o sistema de
arquivos padrão ext4).