Módulo 1 · 1.4
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:
| Pasta | O que contém |
|---|---|
/etc | Configuração: SSH (/etc/ssh), servidor web (/etc/nginx), utilizadores (/etc/passwd) |
/var/log | Ficheiros de registo (além do journal, lição 6.2) |
/var/lib | Dados de programas, por exemplo bases de dados e Docker |
/home | Pastas pessoais dos utilizadores comuns, como /home/anna |
/root | Pasta pessoal do root |
/usr | Programas e bibliotecas instalados |
/tmp | Ficheiros temporários, que são limpos periodicamente |
/srv ou /var/www | Local 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.pubDa 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 comq;head -n 20 bestandetail -n 20 bestand: as primeiras ou as últimas linhas;tail -fcontinua 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/hostsNa 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:
- Faça primeiro uma cópia:
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak. - 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). - 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 0Buname -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 (-hsignifica "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 colunaavailable, não afree: 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 sshabre o manual (manual page) de um comando. Percorre-se como nolesse pesquisa-se com/.man sshd_configdescreve cada parâmetro configurável desse ficheiro.ls --helpapresenta, 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;
historymostra-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 | lessAs 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.
rmnão tem reciclagem. O que é apagado, desaparece. Tenha especial cuidado comrm -r(uma pasta com tudo o que contém) e com caracteres universais como*.- As maiúsculas contam.
/etc/SSHnão existe;/etc/sshexiste. - 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/libe as pastas pessoais em/home. - Leia com
cat,less,headetail; edite comnano, depois de fazer uma cópia, e teste a configuração antes de reiniciar. df -h,free -h,uptimeeip -brief addressmostram em que estado está o seu servidor.- A ajuda está em
mane--help; o Tab completa; com|egrepfiltra a saída.
Questionário
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.
available conta também a memória cache que o Linux liberta. O ficheiro .pub é a parte pública que todos os clientes veem; o ficheiro sem .pub é secreto (600, root), porque quem o tiver pode fazer-se passar pelo seu servidor.
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
- Aumentar o espaço em disco do seu VPS
- Acesso SSH e o Terminal no DirectAdmin: em que pacotes está disponível e como iniciar sessão
- Referência Debian, capítulo 1 (guia da linha de comandos): https://www.debian.org/doc/manuals/debian-reference/ch01.en.html
- Filesystem Hierarchy Standard 3.0: https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html
- Os primeiros comandos no seu VPS: explorar a linha de comandos
- VPS: do primeiro início de sessão a um servidor seguro 1.4: A consola: o seu VPS no navegador
