Entrevista

Perguntas de Linux em entrevistas: 24 perguntas com respostas

Atualizado: · Skillaria.Top

Em entrevistas de Linux, as perguntas mais frequentes tratam da estrutura do sistema de arquivos e dos inodes, de links físicos e simbólicos, de permissões e sudo, de processos e sinais, da inicialização do sistema e da rede: como verificar portas abertas, como funciona a resolução DNS e o que fazer quando o servidor não responde.

Perguntas sobre Linux aparecem em entrevistas para engenheiros DevOps, administradores de sistemas, SREs e desenvolvedores back-end. O entrevistador raramente espera que você decore flags de comandos: o que importa é entender como o sistema funciona e conseguir chegar à causa de um problema. A seguir estão as perguntas de Linux mais comuns em entrevistas, do básico ao diagnóstico, com respostas e comandos.

Dica: ao responder, cite o comando com que você verificaria sua afirmação. A frase «eu verificaria com ss -tlnp» soa muito mais convincente do que respostas genéricas.

Sistema de arquivos

1. O que é o FHS e o que fica nos principais diretórios?

O FHS (Filesystem Hierarchy Standard) é o padrão que define a localização dos diretórios. Toda a árvore começa na raiz /; não existem discos separados com letras, e os outros sistemas de arquivos são montados em diretórios dessa árvore.

  • /etc: configuração do sistema e dos serviços;
  • /var: dados que mudam: logs (/var/log), cache, filas, bancos de dados;
  • /home: diretórios pessoais dos usuários; /root é o diretório pessoal do root;
  • /usr: programas e bibliotecas; nas distribuições atuais, /bin e /sbin costumam ser links para /usr/bin e /usr/sbin;
  • /tmp: arquivos temporários; /boot: kernel e gerenciador de boot;
  • /proc e /sys: sistemas de arquivos virtuais com informações de processos e do kernel; /dev: arquivos de dispositivos.

2. O que é um inode?

O inode é a estrutura do sistema de arquivos que guarda os metadados de um arquivo: tipo, permissões, dono, tamanho, datas, número de links físicos e ponteiros para os blocos de dados. O inode não contém o nome do arquivo: o nome fica no diretório, como um par «nome → número do inode».

O número do inode aparece com ls -i, e os detalhes com stat file. A quantidade de inodes de um sistema de arquivos é limitada, e df -i mostra quantos estão em uso. Daí a situação clássica «tem espaço no disco, mas não é possível criar arquivos»: os inodes se esgotaram por causa de milhões de arquivos pequenos.

3. Qual a diferença entre link físico (hard link) e link simbólico?

O link físico (ln file link) é outro nome para o mesmo inode. Os dois nomes são equivalentes, e os dados só são apagados quando o contador de links chega a zero. Há limites: não é possível criar link físico para um diretório, nem atravessar a fronteira de um sistema de arquivos.

O link simbólico (ln -s target link) é um arquivo separado, com inode próprio, que contém o caminho do alvo. Ele pode apontar para um diretório ou para outro sistema de arquivos, mas fica «quebrado» se o alvo for apagado ou movido.

4. O disco está cheio, mas o du mostra menos do que o df. Por quê?

A causa mais comum é um arquivo que foi apagado, mas ainda está aberto por algum processo, como um log grande de um serviço em execução. O nome já não existe, por isso o du não o enxerga, mas os blocos continuam ocupados, e o df os contabiliza.

Esses arquivos podem ser encontrados com lsof +L1 ou lsof | grep deleted. A solução é reiniciar o processo ou truncar o arquivo pelo descritor: : > /proc/PID/fd/N. No futuro, limpe logs com truncate ou com a rotação do logrotate, e não com rm.

5. Como acontece a inicialização do Linux?

O firmware (BIOS ou UEFI) inicializa o hardware e passa o controle ao gerenciador de boot, geralmente o GRUB. O gerenciador lê a configuração e carrega na memória o kernel e o initramfs, um sistema de arquivos raiz temporário com os drivers necessários para acessar a raiz real.

O kernel inicializa os dispositivos, monta o sistema de arquivos raiz e inicia o primeiro processo do espaço do usuário, com PID 1, que na maioria das distribuições é o systemd. O systemd sobe os serviços até o target padrão, como o multi-user.target. O tempo de cada etapa aparece com systemd-analyze.

6. O que faz o comando mount, e onde se configura a montagem automática?

O mount conecta um sistema de arquivos de um dispositivo a um diretório (ponto de montagem): mount /dev/sdb1 /mnt/data. As montagens atuais são exibidas com findmnt ou com mount sem argumentos.

A montagem na inicialização é descrita em /etc/fstab. Nele, é melhor indicar os dispositivos pelo UUID (que aparece em blkid) e não pelo nome /dev/sdb1, que pode mudar. Antes de reiniciar, verifique as alterações com mount -a: um erro no fstab pode impedir a inicialização.

Usuários e permissões

7. Como funcionam as permissões no Linux?

Todo arquivo tem um dono, um grupo e três conjuntos de permissões: para o dono, para o grupo e para os demais. Cada conjunto contém r (leitura), w (escrita) e x (execução). Na forma numérica, r=4, w=2 e x=1; assim, chmod 640 file dá ao dono leitura e escrita, ao grupo leitura e aos demais nenhuma permissão.

$ ls -l app.conf
-rw-r----- 1 deploy www-data 512 Oct 12 10:03 app.conf

O dono é alterado com chown user:group file, e as permissões com chmod.

8. O que significam r, w e x para um diretório?

Para diretórios o significado é outro: r permite obter a lista de nomes, w permite criar, apagar e renomear arquivos dentro dele, e x permite entrar no diretório e acessar arquivos pelo nome.

Daí a consequência importante: quem tem permissão de escrita em um diretório pode apagar um arquivo nele, mesmo que o arquivo não seja seu. Sem x no diretório, de nada adianta o r: os nomes aparecem, mas os arquivos não podem ser abertos.

9. O que são SUID, SGID e sticky bit?

O bit SUID em um executável faz o programa rodar com os privilégios do dono do arquivo, e não de quem o executou. O exemplo clássico é /usr/bin/passwd: ele pertence ao root e pode alterar /etc/shadow. O SGID em um arquivo faz o mesmo com o grupo; em um diretório, faz os arquivos novos herdarem o grupo do diretório, o que é útil para pastas compartilhadas.

O sticky bit em um diretório permite apagar arquivos apenas ao seu dono, mesmo que o diretório seja gravável por todos. É assim que funciona o /tmp: em ls -ld /tmp aparece drwxrwxrwt. Para auditar todos os arquivos SUID do sistema use find / -perm -4000 -type f 2>/dev/null.

10. O que é o umask?

O umask é uma máscara que remove permissões de arquivos e diretórios novos. As permissões básicas são 666 para arquivos e 777 para diretórios, e o umask subtrai os bits indicados. Com o valor comum 022, os arquivos são criados com 644 e os diretórios com 755. O valor atual é mostrado pelo comando umask.

11. Onde ficam guardados os usuários e as senhas?

As contas ficam em /etc/passwd: nome, UID, GID do grupo principal, diretório pessoal e shell. Os hashes das senhas ficam separados em /etc/shadow, que só o root consegue ler, para que usuários comuns não possam pegar os hashes e tentar quebrá-los. Os grupos ficam em /etc/group.

As informações de um usuário podem ser vistas com id user e getent passwd user; o segundo também consulta fontes externas, como LDAP.

12. Como funciona o sudo, e por que ele é melhor do que entrar como root?

O sudo executa um comando como outro usuário (por padrão, root), segundo as regras de /etc/sudoers e dos arquivos em /etc/sudoers.d/. O usuário digita a própria senha, não a do root, e cada ação é registrada no log com quem a executou.

Uma regra pode permitir tudo (alena ALL=(ALL:ALL) ALL) ou apenas comandos específicos. O sudoers deve ser editado com visudo, que verifica a sintaxe antes de salvar, de modo que um erro não tira o seu acesso ao sudo. No Ubuntu, os direitos de administrador são dados pela participação no grupo sudo; nos sistemas RHEL, pelo grupo wheel.

13. Como adicionar um usuário a um grupo, e por que a mudança não surtiu efeito?

O comando usermod -aG docker alena adiciona o usuário a um grupo extra. A opção -a é obrigatória: sem ela, o -G substitui toda a lista de grupos.

A mudança vale depois de um novo login, porque a sessão atual mantém a lista antiga de grupos. Você pode sair e entrar de novo, ou abrir um shell com o novo grupo com newgrp docker. Para conferir, use id.

Processos

14. O que é um processo e um PID? Como listar os processos?

Um processo é um programa em execução, com espaço de endereçamento próprio, arquivos abertos e um identificador PID. Cada processo tem um pai (PPID), e o ancestral comum de todos os processos é o de PID 1. A lista de processos é exibida por ps aux e ps -ef; a árvore, por pstree ou ps -ef --forest; e a visão em tempo real, por top e htop.

15. Qual a diferença entre SIGTERM e SIGKILL?

kill PID envia, por padrão, o SIGTERM (15), que é um pedido educado para encerrar. O processo pode capturá-lo, fechar conexões, salvar dados e sair. O SIGKILL (9, ou kill -9) não pode ser capturado: o kernel encerra o processo imediatamente, sem nenhuma limpeza.

A ordem correta é enviar primeiro o SIGTERM e usar o SIGKILL apenas se o processo não responder. Outro sinal comum é o SIGHUP: muitos daemons releem a configuração ao recebê-lo.

16. O que é um processo zumbi?

Um zumbi é um processo que já terminou, mas cujo pai ainda não leu o código de retorno com a chamada wait(). Ele quase não consome recursos, mas permanece na tabela de processos. No ps, seu estado aparece como Z.

Não é possível matar um zumbi, porque ele já está morto. É preciso que o pai o recolha: corrigir o programa pai, ou encerrar o pai; nesse caso, o zumbi é adotado pelo PID 1, que o recolhe.

17. O que mostra o load average?

Os três números em uptime e top são a média de processos prontos para executar nos últimos 1, 5 e 15 minutos. No Linux, também entram nessa conta os processos em espera ininterrupta (estado D), geralmente esperando pelo disco.

O valor é comparado com o número de núcleos (nproc): carga 4 em 4 núcleos significa carga total; em 16 núcleos, apenas um quarto. Carga alta com baixo uso de CPU costuma indicar problema de E/S, que se verifica com iostat ou com o campo wa do top.

Rede

18. Como ver endereços IP, rotas e portas abertas?

Os endereços das interfaces são vistos com ip a, e a tabela de rotas com ip r. Os antigos ifconfig e netstat, do pacote net-tools, não vêm instalados por padrão em muitas distribuições.

As portas em escuta e os processos que as abriram são mostrados por ss -tlnp: t para TCP, l para somente as que estão em escuta, n para não converter nomes, p para mostrar o processo. Para UDP, use ss -ulnp.

$ sudo ss -tlnp
State  Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0      511          0.0.0.0:80        0.0.0.0:*     users:(("nginx",pid=812,fd=6))
LISTEN 0      128          0.0.0.0:22        0.0.0.0:*     users:(("sshd",pid=640,fd=3))

19. Um serviço escuta em 127.0.0.1:8080. Dá para acessá-lo de fora?

Não. O endereço 127.0.0.1 é a interface de loopback, acessível somente a partir da própria máquina. Para aceitar conexões externas, o serviço deve escutar no endereço da interface externa ou em 0.0.0.0 (todos os endereços IPv4). Essa é uma causa frequente de «a porta está aberta, mas não funciona de fora», junto com o firewall.

20. Como o Linux converte um nome de host em endereço IP?

A ordem das fontes é definida pela linha hosts: em /etc/nsswitch.conf, normalmente primeiro o arquivo /etc/hosts e depois o DNS. Os endereços dos servidores DNS vêm de /etc/resolv.conf; em sistemas com systemd-resolved, ali aparece o endereço local 127.0.0.53, e os servidores reais são mostrados por resolvectl status.

Para testar, use dig example.com ou dig @1.1.1.1 example.com (consulta a um servidor específico). Uma sutileza importante: dig e nslookup consultam o DNS diretamente e não leem /etc/hosts, enquanto getent hosts example.com segue o mesmo caminho que as aplicações.

21. Qual a diferença entre TCP e UDP?

O TCP estabelece uma conexão (aperto de mão em três etapas: SYN, SYN-ACK, ACK), garante a entrega e a ordem dos dados e retransmite pacotes perdidos. Sobre ele funcionam HTTP, SSH e a maioria dos bancos de dados. O UDP envia datagramas sem conexão e sem garantias, mas com menor latência; é usado em consultas DNS, chamadas de vídeo e jogos.

22. O site não abre. Como você procura a causa?

Seguindo as camadas, do nome até a aplicação:

  1. O nome resolve? dig site.example, e o endereço é o esperado?
  2. O host responde? ping (pode estar bloqueado), traceroute ou mtr.
  3. A porta está aberta? nc -zv host 443 ou curl -v https://site.example.
  4. No servidor: o serviço está ativo (systemctl status nginx), a porta está em escuta (ss -tlnp), o firewall está bloqueando (sudo nft list ruleset, sudo ufw status)?
  5. Os logs da aplicação e o journalctl -u do serviço.

O entrevistador valoriza a ordem sistemática, e não um conjunto específico de ferramentas.

23. O que é o estado TIME_WAIT?

Depois que uma conexão TCP é fechada, o lado que a fechou primeiro mantém o socket em TIME_WAIT por algum tempo, para que pacotes atrasados da conexão antiga não entrem em uma nova conexão com os mesmos endereços e portas. Muitos TIME_WAIT são normais em um servidor muito carregado ou em um cliente que abre muitas conexões curtas. Para contá-los: ss -tan state time-wait | wc -l.

24. Qual a diferença entre /etc/hosts e DNS, e quando usar o primeiro?

/etc/hosts é uma tabela estática «endereço — nome» em uma máquina específica. Com o nsswitch padrão, ela é consultada antes do DNS e é útil para testes, por exemplo para apontar um domínio para um servidor novo antes de trocar os registros DNS. O DNS é um sistema distribuído, cujas respostas são as mesmas para todos os clientes. Um erro no /etc/hosts é causa comum da situação «o site abre aqui, mas não abre para os outros».

Conclusão

As perguntas de Linux em entrevistas avaliam três coisas: se você entende o modelo do sistema (inodes, permissões, processos, inicialização), se conhece as ferramentas de diagnóstico (ss, dig, journalctl, lsof) e se sabe procurar a causa passo a passo. Responda com comandos e exemplos vindos da prática. Sistema de arquivos, permissões e rede são explicados em detalhes e com prática no curso de Linux.

Perguntas frequentes

O que costuma ser perguntado sobre Linux em entrevistas para DevOps júnior?

Normalmente o básico: navegação e permissões, processos e systemctl, leitura de logs, comandos de rede como ip, ss, dig e curl, e fundamentos de scripts bash. Também é comum uma tarefa prática, como «encontre o que está enchendo o disco».

Preciso decorar as flags dos comandos?

Não. É aceitável dizer que você consultaria a opção no man. O mais importante é entender qual ferramenta resolve cada problema e o que significa a sua saída.

Qual distribuição estudar para a entrevista?

Qualquer distribuição popular de servidor: Ubuntu, Debian, ou uma compatível com RHEL, como o Rocky Linux. Os fundamentos são os mesmos; as diferenças principais são o gerenciador de pacotes e os nomes de alguns serviços.

Como me preparar para a parte prática da entrevista?

Suba uma máquina virtual e resolva tarefas reais: configure um servidor web como serviço systemd, habilite o login por chave SSH, configure o firewall e encontre um processo pela porta. Explicar em voz alta os seus passos também faz parte da preparação.