Ir diretamente para o conteúdo

Definições de cookies

Escolha que tipos de cookies permite. Pode alterar a sua escolha a qualquer momento em Definições de cookies, no fundo de cada página. Política de privacidade

Necessários

Sempre ativos

Necessários para iniciar sessão, manter o seu carrinho e memorizar as suas escolhas. Estão sempre ativos.

Que cookies?
  • weboke_sessie, weboke_klant, weboke_remember: a sua sessão e manter a sessão iniciada
  • weboke_basket: o seu carrinho
  • wkBtwIncl: mostrar preços com ou sem IVA
  • wok_cookies: a sua escolha de cookies, 12 meses

Mede que anúncio leva a uma visita ou encomenda, para não pagarmos por anúncios que não dão resultado.

Que cookies?
  • Google Ads via Google Tag Manager (_gcl_au, _gcl_aw), até 90 dias
  • OpenAI Ads, anúncios no ChatGPT
  • wok_aff: através de que parceiro chegou até nós (programa de afiliados), 60 dias

4,6

País e idioma

Cada país tem o seu próprio site, com os preços e o IVA desse país.

Ver

Explorar a linha de comandos

Módulo 1: O seu primeiro servidor · Tempo de leitura: 11 minutos

Objetivo de aprendizagem: Depois desta lição, saberá orientar-se num servidor Linux: navegar entre pastas, ler e editar ficheiros, ver quanto espaço em disco e memória estão livres e procurar ajuda sobre um comando por conta própria.

Conceitos-chave: shell, prompt, pasta e caminho, caminho absoluto e relativo, /etc, /var/log, /home, ls -l, cd, cat, less, nano, man, --help, preenchimento com Tab, uname, df, free, uptime, pipe, grep

A shell e o prompt

Depois de iniciar sessão, está a comunicar com a shell: o programa que lê e executa os seus comandos. No Debian e no Ubuntu, é normalmente a bash. À esquerda do cursor encontra-se o prompt:

anna@web1:~$
root@web1:~#

Este indica três coisas: quem é (anna ou root), em que servidor está (web1) e em que pasta se encontra (~ é a sua pasta pessoal). O último carácter é importante: $ significa um utilizador comum, # significa root. Se vir #, cada comando é executado com todos os privilégios. Escreva aí com calma.

Pastas e caminhos

No Linux, tudo faz parte de uma única árvore que começa em / (a pasta raiz, que não deve ser confundida com o utilizador root). Algumas pastas vão surgir repetidamente ao longo deste curso:

PastaO que contém
/etcConfiguração: SSH (/etc/ssh), servidor web (/etc/nginx), utilizadores (/etc/passwd)
/var/logFicheiros de registo (além do journal, lição 6.2)
/var/libDados de programas, por exemplo bases de dados e Docker
/homePastas pessoais dos utilizadores comuns, como /home/anna
/rootPasta pessoal do root
/usrProgramas e bibliotecas instalados
/tmpFicheiros temporários, que são limpos periodicamente
/srv ou /var/wwwLocal habitual para sites e serviços

Um caminho absoluto começa em /, por exemplo /etc/ssh/sshd_config. Um caminho relativo começa no local onde se encontra: se estiver em /etc, então ssh/sshd_config é o mesmo ficheiro. .. é a pasta acima, . a pasta atual.

anna@web1:~$ pwd
/home/anna
anna@web1:~$ cd /etc/ssh
anna@web1:/etc/ssh$ ls
moduli  ssh_config  ssh_config.d  sshd_config  sshd_config.d  ssh_host_ed25519_key  ssh_host_ed25519_key.pub ...
anna@web1:/etc/ssh$ cd ..
anna@web1:/etc$ cd
anna@web1:~$

cd sem nada a seguir leva-o de volta à sua pasta pessoal.

Ver ficheiros

ls -l mostra mais do que apenas os nomes:

anna@web1:/etc/ssh$ ls -l sshd_config ssh_host_ed25519_key ssh_host_ed25519_key.pub
-rw-r--r-- 1 root root 3248 Aug 12 10:01 sshd_config
-rw------- 1 root root  399 Nov  2 14:20 ssh_host_ed25519_key
-rw-r--r-- 1 root root   91 Nov  2 14:20 ssh_host_ed25519_key.pub

Da esquerda para a direita: as permissões, o número de ligações, o proprietário, o grupo, o tamanho em bytes, a data e o nome. Repare na diferença: a chave de host secreta (-rw-------) só pode ser lida pelo root, a pública (-rw-r--r--) por todos. Na lição 3.1, aprenderá a ler estas permissões com precisão. ls -la mostra também os ficheiros ocultos: nomes que começam por um ponto, como .ssh.

Para ler o conteúdo:

  • cat bestand: o ficheiro inteiro de uma só vez, prático para ficheiros curtos;
  • less bestand: percorrer com as setas e a barra de espaço, pesquisar com /woord, sair com q;
  • head -n 20 bestand e tail -n 20 bestand: as primeiras ou as últimas linhas; tail -f continua a acompanhar à medida que surgem novas linhas.

Editar um ficheiro com o nano

A configuração é alterada num editor de texto. O nano é o mais simples:

root@web1:~# nano /etc/hosts

Na parte inferior aparecem os atalhos de teclado; ^ significa Ctrl. Guardar é Ctrl+O seguido de Enter, sair é Ctrl+X, pesquisar é Ctrl+W. Quem já trabalha com o vim pode utilizá-lo; numa instalação mínima, o vim nem sempre está totalmente disponível.

Três hábitos que mais tarde lhe pouparão muitos problemas:

  1. Faça primeiro uma cópia: cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.
  2. Teste a configuração antes de reiniciar um serviço. Muitos programas têm um comando próprio para isso: sshd -t, nginx -t (lições 2.2 e 7.2).
  3. Altere uma coisa de cada vez, para saber o que causou um erro.

Em que estado está o seu servidor?

Alguns comandos que utilizará em qualquer situação:

anna@web1:~$ uname -a
Linux web1 6.12.0-... #1 SMP ... x86_64 GNU/Linux
anna@web1:~$ uptime
 10:12:44 up 3 days,  2:10,  1 user,  load average: 0.08, 0.05, 0.01
anna@web1:~$ df -h /
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        40G  3.1G   35G   9% /
anna@web1:~$ free -h
               total        used        free      shared  buff/cache   available
Mem:           3.8Gi       412Mi       2.9Gi       1.0Mi       720Mi       3.4Gi
Swap:             0B          0B          0B
  • uname -a: que kernel está em execução.
  • uptime: há quanto tempo o servidor está ligado e a load average (carga média) ao longo de 1, 5 e 15 minutos. Em termos gerais: uma carga que se mantém durante muito tempo acima do número de núcleos do processador significa que há processos à espera.
  • df -h: espaço livre em disco (-h significa "human readable", legível por humanos, com G e M). Um disco cheio é uma das causas mais frequentes de um servidor que deixa de funcionar "sem motivo aparente".
  • free -h: memória. Observe a coluna available, não a free: o Linux utiliza a memória livre como cache (buff/cache) e devolve-a quando um programa precisa dela.

E a sua rede, da lição 1.2: ip -brief address.

Encontrar ajuda

Não precisa de memorizar todas as opções. Precisa, sim, de saber onde as encontrar:

  • man ssh abre o manual (manual page) de um comando. Percorre-se como no less e pesquisa-se com /. man sshd_config descreve cada parâmetro configurável desse ficheiro.
  • ls --help apresenta, na maioria dos comandos, uma lista curta de opções.
  • A tecla Tab completa nomes de comandos e de ficheiros. Premir Tab duas vezes mostra as possibilidades. Isto evita erros de escrita em caminhos longos.
  • A seta para cima recupera comandos anteriores; history mostra-os todos.

Numa instalação mínima, por vezes faltam os manuais. No Debian e no Ubuntu, instala-os com apt install man-db (módulo 4).

Pipes e grep

Pode encadear comandos com um pipe (|): a saída de um passa a ser a entrada do seguinte. O grep filtra as linhas que contêm uma palavra:

anna@web1:~$ grep PasswordAuthentication /etc/ssh/sshd_config
#PasswordAuthentication yes
anna@web1:~$ ls -l /etc | less

As linhas que começam por # são comentários: não têm efeito e mostram frequentemente o valor predefinido. Na lição 2.2, verá porque é que isso pode gerar confusão no SSH.

Armadilhas

  • Colar sem ler. Os comandos encontrados na internet fazem exatamente o que lá está escrito, mesmo que seja algo diferente do que o título do artigo promete. Leia cada comando antes de o executar, sobretudo se for root.
  • rm não tem reciclagem. O que é apagado, desaparece. Tenha especial cuidado com rm -r (uma pasta com tudo o que contém) e com caracteres universais como *.
  • As maiúsculas contam. /etc/SSH não existe; /etc/ssh existe.
  • Espaços em caminhos têm de ficar entre aspas: cat "/srv/mijn site/index.html". Melhor ainda: não utilize espaços em nomes num servidor.

Resumo

  • O prompt indica quem é, em que servidor está e onde; # significa root.
  • A configuração está em /etc, os registos em /var/log, os dados dos programas em /var/lib e as pastas pessoais em /home.
  • Leia com cat, less, head e tail; edite com nano, depois de fazer uma cópia, e teste a configuração antes de reiniciar.
  • df -h, free -h, uptime e ip -brief address mostram em que estado está o seu servidor.
  • A ajuda está em man e --help; o Tab completa; com | e grep filtra a saída.

Questionário

1. O seu prompt é root@web1:/var/log#. O que fica a saber?



2. Está em /etc. Que caminho aponta para o mesmo ficheiro que /etc/nginx/nginx.conf?



3. free -h mostra free 120Mi e available 2.9Gi. O servidor tem pouca memória?



4. O que é mais sensato fazer antes de alterar /etc/ssh/sshd_config?



5. Onde procura que definições o sshd_config reconhece?



Exercício

Exercício O1.4: Conhecer o seu servidor. Execute os comandos desta lição no seu próprio servidor e preencha: distribuição e versão, kernel, espaço livre em disco, memória disponível, carga, IPv4 e IPv6, e que ficheiros em /etc/ssh só podem ser lidos pelo root. Depois, responda a duas perguntas sobre o que observou.

Exercício O1.4: Conhecer o seu servidor

Este exercício faz você mesmo; ninguém o verifica. Assinale o que já fez e marque o exercício como concluído.



As suas marcações e notas ficam apenas neste navegador; não as enviamos para lado nenhum. Se tiver sessão iniciada, guardamos em Os meus cursos apenas que concluiu o exercício.

Para saber mais

Um momento…

Configurar os seus domínios

Para cada domínio, defina os servidores de nomes, a ligação ao seu alojamento e quem fica como titular.

A carregar os seus domínios…