Sistemas operacionaisTutoriais

Estrutura de diretórios do Linux, como funciona?

Tudo que é novo tende a parecer complicado, e digo “parecer” porque muitas vezes é apenas uma percepção baseada na sua experiência anterior. Muito provavelmente você iniciou a sua jornada na computação com o sistema operacional Windows, da Microsoft, e por conta disso acabou se adaptando à lógica do “Disco C” e seus “Arquivos de programas”, o que pode causar estranheza ao se deparar com a estrutura de diretórios do Linux e de sistemas Unix-like.

Windows e Linux evoluíram de formas diferentes, o Linux inclusive é muito mais parecido com qualquer outro sistema com raízes no Unix. Quem já explorou o sistema de arquivos do macOS talvez se deparado com uma estrutura de diretórios e uma organização parecida com a do Linux inclusive.

Na verdade, o Windows, considerando a maioria dos sistemas operacionais existentes, é o que tem uma das organizações mais diferentes, mas por ser tão familiar para as pessoas nos desktops, o “padrão” do restante do mercado acaba sendo esquisito. É um simples efeito colateral da popularidade do sistema da Microsoft.

A hierarquia da estrutura de diretórios do Linux não é mais difícil ou mais fácil, é o tipo de coisa que é simplesmente diferente. Tanto o Disco C do Windows, quanto a “/” do Linux servem para a mesma coisa, mas fazem isso de formas diferentes.

Esse layout que podemos observar, segue, em maior parte, o chamado FHS, “Filesystem Hierarchy Standard”, um padrão mantido pela Linux Foundation, que não é necessariamente seguido por todas as distros, mas é encorajado que seja (e geralmente é) para ser mais simples desenvolver softwares que sejam compatíveis com a maior quantidade de distros.

Para que servem cada uma das pastas dentro da raiz?

/bin

Muitos dos nomes que a gente vai ver aqui são abreviações, bin, nesse caso, faz referência a “binary”, ou “binário’. 

Nesse diretório você encontra os executáveis de diversos programas do lista, como o bash, cat, ls, firefox, etc. Aqui dentro também pode existir links simólicos e shell scripts, que são rotinas de comandos que são executadas em sequência.

De certa forma, você pode comparar com a pasta “Disco C: Arquivos de Programas” no Windows, com a diferença de que aqui, apenas os executáveis estão presentes e eles não são separados por fabricante ou algo assim, eles apenas aparecem em ordem alfabética.

Seria como se quase todos os .exe dos programas instalados no seu Windows estivessem dentro de uma mesma pasta.

No Windows você tem a separação por pastas e subpastas e quase todos os arquivos dos seus programas estão dentro delas, incluindo imagens e bibliotecas, as DLLs, atualmente em uma instalação de 64 bits do Windows, você ainda tem a pasta de diretório voltada para os programas de 32 bits que estão instalados, separando um pouco as coisas.

Windows directories

Assim como no Windows, onde alguns arquivos vão parar em outras pastas, como dentro da famosa “system32”, no Linux, os programas separam seus arquivos em pastas diferentes também. Em suma, aqui em binários, ou /bin, você encontra os programas do seu sistema.

/boot

É uma pasta muito importante, por isso, não mexa aqui a menos que seja realmente necessário. Como o nome sugere, essa é a parte da estrutura de diretórios que contém os arquivos necessários para o seu computador iniciar. Como o seu bootloader, o GRUB, as entradas do Kernel disponíveis para ele e até mesmo o binário do memtest.

/cdrom

Este é um diretório legado, ele praticamente não tem mais serventia, a menos que você tenha um computador com um drive de CD-DVD, se for esse o caso, provavelmente a imagem do seu disco será montada aqui, quando você inserir o seu CD-ROM, os dados irão aparecer aqui dentro.

/dev

É a abreviação para “devices”, e como eu já falei diversas vezes, “tudo no Linux são arquivos”. Então, em outras palavras, dentro dessa pasta você encontrará arquivos que correspondem ao seu hardware, arquivos que podem ser configurados e que podem mudar a forma com que um determinado “device” está funcionando. 

O seu HD, o SSD, são representados por arquivos dentro deste diretório. É por isso que as unidades são chamadas de “/dev/sda algum número”, ou “/dev/sdb algum número”, o número na verdade só aparece quando houver partições.

/etc

O nome já foi alvo de várias discussões, como a abreviação de “edit do config”, mas reza a lenda que o próprio Dennis Ritchie teria dito que a intenção era que fosse “et cetera”, desde a época do Unix.

Independente do nome, a função dessa dentro da estrutura de diretórios é manter os arquivos de configuração do sistema “system wide”, ou seja, para todos os usuários do sistema, e não configurações específicas para um usuário. Essas configurações específicas para um usuário específico ficam em outro diretório, este próximo que veremos agora.

/home

É uma pasta muito importante, é onde ficam os usuários comuns do sistema, dentro dela você encontra pastas com os nomes dos usuários cadastrados na máquina, muito provavelmente você vai encontrar aqui uma pasta com o nome que você escolheu para o seu usuário na instalação do sistema.

Dentro dessa pasta, por sua vez, você também encontra uma região onde o seu usuário normal tem completo domínio, incluindo pastas que representam o seu desktop, seus documentos, imagens, downloads, etc.

Essa é a pasta que aparece quando você abre o seu gestor de arquivos. Mas ela é muito mais do que parece, porque ela também contém uma série de arquivos ocultos que armazena configurações e preferências de aplicativos que você tenha instalado para o seu próprio usuário, ao contrário do que acontece no /etc, o que é encontrado aqui, em termos de configurações, afeta somente o seu usuário. 

/lib/lib32/lib64/libx32

Todas elas são pastas que contém bibliotecas de software para o sistema operacional e os aplicativos instalados. Um novo programa instalado pode adicionar libs nessas pastas e a palavra “lib”, como você deve imaginar, é a abreviação de “library”, biblioteca em inglês.

As libs podem ser comparadas com as DLLs do Windows, são bibliotecas que podem ser usadas pelos binários do sistemas contidos em /bin e /sbin (que a gente ainda não falou sobre) para fazer os seus softwares efetuarem suas funções.

Diferenciando uma das outras, /lib é onde libs multiarquitetura vão parar, /lib32 para as de 32 bits e /lib64 para as de 64 bits, a pasta /libx32 é menos comum de ser usada, mas existem alguns softwares que podem usar um tipo específico de lib, usando x32 ABI, algo que você não realmente precisa saber agora, mas caso exista alguma lib assim, ela vai parar ali.

/media

É a pasta onde serão montados automaticamente as unidades removíveis do seu sistema, como o seu pen drive, HD Externo, ou mesmo, se você tiver um outro disco conectado ao seu computador, é aqui que vai aparecer. Os dispositivos são montados aqui automaticamente pelo sistema operacional, incluindo unidades de rede.

/mnt

É um irmão do /media, é a abreviação de “mount”, sendo pensado para ser um ponto de montagem de unidades de disco feitas pelo próprio usuário manualmente editando o arquivo de configurações FSTAB que fica dentro de /etc.

Você pode fazer a montagem que você quiser, onde você quiser, mas esse diretório é uma sugestão amigável. 

/opt

O seu nome se refere a palavra “optional”, é nessa pasta que geralmente se encontram softwares instalados por fabricantes que vendem computadores com Linux ou por softwares proprietários, ou que simplesmente querem organizar todas as suas informações principais em um único diretório, afinal, é “opcional”. O Google Chrome fica aqui, o DaVinci Resolve também, etc. 

/proc

É onde você encontra arquivos que contém informações sobre o sistema e processos dele. Ele é um diretório virtual, esses arquivos não realmente existem no seu disco, eles são criados toda vez que você inicia o computador. Cada processo possui um arquivo ou diretório aqui, então digamos que eu queira saber mais sobre o processo do gnome-shell.

Nós podemos olhar no monitor do sistema qual é o ID do processo do gnome-shell, também chamado de “PID”, ou “process Identity” em inglês, repare que temos um número, esse número corresponde a uma pasta ou diretório dentro de /proc, esses arquivos são gerados pelo próprio Kernel Linux.

/root

Se você entendeu a função de do /home, fica bem simples de entender o /root. Ele é como o diretório /home, só que para o usuário Root, ele fica separado do diretório de usuários tradicionais para que ele possa ter permissões especiais de acesso e também como uma medida de segurança, você pode colocar o seu /home em outro disco e se ele falhar, você ainda assim você vai ter o usuário Root para tentar fazer algum reparo. Dentro dele ficam todos os arquivos de configuração de aplicações que o usuário Root utilizar, realmente bem parecido com a /home.

/run 

Esse é outro diretório virtual, ele não existe fisicamente no seu disco, ele é carregado na memória do computador quando você liga a máquina e também é apagado toda vez que você desliga. O nome “run” vem de “runtime”, ele armazena informações sobre o sistema desde o último boot, como usuários logados, daemons que estão rodando, etc. As distros podem usar esse diretório de formas diferentes e ele é relativamente novo nessa árvore, se comparado com muitos outros.

/sbin

Este diretório é como o /bin, ele armazena binários também, e o “S” no nome é para designar “system binaries”, que são programas que só podem ser acessados pelo administrador do sistema, como o comando “useradd” para adicionar novos usuários, que precisa ser rodado com o sudo com como Root.

/snap

É um dos diretórios mais novos, dentro dele você encontra os arquivos para os pacotes Snap que a Canonical vem desenvolvendo nos últimos anos. O suporte a pacotes Snap é padrão no Ubuntu e nas suas flavors e alguns derivados, como Zorin OS, essas distros vão exibir esta mesma pasta. Qualquer distro pode usar Snaps praticamente, mas se o sistema não oferecer eles de fábrica, muito provavelmente este diretório não vai existir.

/srv 

É a abreviação de “services”, no seu desktop ela provavelmente vai estar vazia, mas se você estiver rodando um servidor web ou um servidor FTP, você pode armazenar aqui os arquivos que serão acessíveis para outros usuários. O interessante dessa pasta ser separada nesse caso, é que você pode montar ela a partir de um disco separado também, deixando os seus arquivos isolados, ela também está na raiz do sistema, o que é bom para segurança, permitindo que você monte um sistema de permissões diferente em /var/www por exemplo.

/sys

É a abreviação de “system”, e é um diretório que existe desde sempre praticamente, é uma forma de você interagir diretamente com o Kernel Linux, é onde são armazenados drivers e firmwares por exemplo, ou módulos, como são chamados no Linux. Assim como o /run que a gente viu antes, esse diretório também não mantém arquivos no seu disco, ele é criado toda vez que você liga o computador.

/tmp 

Esse é o diretório de arquivos temporários, onde os programas podem armazenar arquivos que serão usados durante uma sessão. Os arquivos aqui devem ser apagados durante cada reboot, alguns distros implementam o /tmp usando um sistema de arquivos virtual chamado tmpfs, que roda na sua memória RAM. 

A pasta /tmp também pode guardar arquivos de recuperação, por exemplo, eu estive editando um áudio uma vez do Audacity, um software excelente, e uma das poucas, se não a única vez que ele crashou, ele conseguiu repor o projeto buscando por arquivos que estavam nessa pasta.

/usr

Esse é um diretório que mudou bastante ao longo da história do Unix e de seus filhos, como o macOS. USR, de meu conhecimento, pode significar duas coisas, não sei se existe uma certa, mas as duas fazem sentido: Pode significar “User”, como em usuário, ou “Unix System Resources”. 

Antigamente era onde a pasta dos usuários, hoje o /home, ficava. Aqui você encontra arquivos de programas e bibliotecas que são úteis para os usuários mas que não são considerados vitais para o funcionamento básico do sistema. Dentro desse diretório você encontra o diretório “local”, que é onde programas instalados via código fonte geralmente vão parar.

/var

O nome vem do nome “variable”, é um diretório que armazena arquivos que são esperados que aumentem de tamanho, como as runtimes dos pacotes flatpak, uma alternativa bem comum aos Snaps que nós comentamos antes.

Aqui você pode encontrar arquivos de backup, logs, cache de softwares do sistema operacional e não do usuário comum, o cache do usuário comum fica em uma pasta oculta .cache dentro da home de cada um dos usuários em /home.

Entender a estrutura de diretórios do Linux não é tão difícil, é?

É curioso pensar nisso, mas como geralmente os usuários comuns não têm necessidade de alterar ou deixar arquivos nas pastas da raiz do Linux, não é incomum encontrar pessoas que usam alguma distro Linux há vários anos, mas nunca se deu ao trabalho de aprender para que servem cada uma dessas pastas. 

Até a próxima!


Diolinux Ofertas - Aproveite os melhores descontos em diversos produtos!