Estrutura de diretório do Linux: o que é e como funciona

Uma diferença significativa entre o Linux e o Windows está no sistema padrão de organização de diretórios que você encontrará após uma instalação limpa do sistema operacional.

Observe que não estamos falando aqui sobre o sistema de arquivo, que é o padrão técnico usado para armazenar dados no disco. A estrutura de diretório que revisaremos se aplicará à maioria das distribuições Linux, independentemente do sistema de arquivos que usam.

Quais são os sistemas de arquivos e os mais comuns em uso hoje
Diretório raiz na área de trabalho do Ubuntu Linux

Diferenças entre as estruturas de diretório do Windows e Linux

Para entender em alto nível por que esses sistemas operacionais são estruturados da maneira que estão, é útil entender sua história.

Quando os PCs baseados em Windows começaram sua curva de crescimento, nos primeiros dias do MS-DOS, a Microsoft sistema operacional focado especificamente em microcomputadores (o que hoje chamamos mais frequentemente de desktop computadores). Naqueles primeiros anos, os arquivos eram armazenados principalmente em unidades de disquete. Eles foram rotulados

UMA: e B: então foi fácil distingui-los. Mais tarde, as unidades de disco rígido receberam o C: rótulo de unidade e tipos de unidade adicionais, como CD-ROMs ou unidades baseadas em USB, foram atribuídos a letras subsequentes.

Em contraste, o Linux descende do Unix, um sistema operacional desenvolvido pela AT&T na década de 1970. Naquela época, os "computadores" que as pessoas usavam eram basicamente apenas terminais. Eles exibiam informações baseadas em texto na tela e forneciam um teclado para entrada. Mas o trabalho pesado era realizado por um "sistema" que poderia ser composto por várias máquinas físicas: uma para processamento, uma para armazenamento e outra que fornecia uma aplicação específica. Todos estavam conectados pela rede, enquanto para os usuários pareciam uma entidade única. Essa configuração cliente-servidor para a qual o Unix foi projetado era exatamente a tecnologia oposta do microcomputador de usuário único suportado pelo MS-DOS e, posteriormente, pelo Windows.

Uma regra para sistemas de arquivos Linux é que o raiz, ou nível mais alto do sistema de arquivos, não contém nenhum arquivo perdido. Na maioria dos sistemas, pode conter o núcleo(vmlinuz nas figuras), ou o coração do sistema operacional, e possivelmente um ramdisk (initrd) contendo dados de que o sistema precisa para começar a funcionar. Mas, além disso, ele deve conter apenas os diretórios que discutiremos nas seções abaixo (entre outras).

O diretório / bin

Um dos primeiros diretórios que você encontrará é /bin. Isso significa bináriose contém programas de sistema operacional "padrão". Aqui, "padrão" refere-se aos utilitários básicos necessários para usar o sistema operacional de qualquer maneira significativa. Exemplos de programas que você encontrará aqui são os seguintes:

  • CD, ou mudar de diretório, que opera muito parecido com sua contraparte do Windows
  • Comandos de gerenciamento de arquivos como cp e mv (copiar e mover arquivos, respectivamente).
  • Utilitários de permissões de arquivo, como chmod (que altera as permissões do arquivo) e chown (que altera os proprietários desses arquivos).
  • Os programas que fornecem seu ambiente de computação, como Conecte-se (que fornece sua capacidade de fazer login na máquina) e bash ou outras conchas.

Quando você instala uma distribuição Linux pela primeira vez, esses programas são instalados como parte da instalação mais básica e, em muitos casos, não podem ser removidos.

O diretório / boot

O diretório de inicialização contém arquivos relacionados à inicialização, Ramdisks e Kernels

O próximo em ordem alfabética é /boot, que contém arquivos que o sistema usa ao inicializar. Ele contém cópias do kernel Linux (o que você vê na raiz do sistema de arquivos é provavelmente um link para um deles), o initrd, ou ramdisk inicial para o sistema e outros dados relacionados.

A coisa mais importante que você deve saber sobre este diretório é não mexer nele. O material aqui é tratado quando seu gerenciador de pacotes instala e atualiza kernels. Se você deletar um dos arquivos necessários para seu kernel atual (ou o próprio kernel), você pode acabar com um sistema não inicializável.

O diretório / cdrom

É uma espécie de diretório legado. Foi apresentado como um lugar onde o CD poderia ser montado, ou conectado, e seu conteúdo acessado. Naquela época era comum exigir raiz, ou administrador, direitos para montar o CD-ROM. Mas hoje em dia é mais comum encontrar CD-ROMs montados automaticamente no /media diretório, que discutiremos um pouco mais tarde.

Da mesma forma, costumava haver um /floppy diretório. Você pode ver como eles surgiram para deixar os usuários, que provavelmente estavam acostumados com o Windows, um pouco mais confortáveis. Mas como as unidades de disquete não são componentes padrão em PCs modernos, você pode nem ver mais este diretório. Ubuntu não tem, por exemplo. Se sua máquina tiver uma unidade de disquete, você provavelmente a encontrará automaticamente montada em /media.

O diretório / dev

Cada dispositivo físico em um sistema Linux é representado como um arquivo no dev

Um aspecto único dos sistemas operacionais baseados em Unix é que tudo é um arquivo. O que significa que os arquivos representam tudo no sistema: processos em execução, RAM e, sim, dispositivos de armazenamento. Quando você está copiando alguns dados para o seu disco rígido, por exemplo, o Linux está na verdade gravando dados em um arquivo como /dev/nvme0n1p3, que representa o terceiro partição do seu SSD.

o /dev diretório é onde todos esses arquivos especiais são mantidos. Se você navegar por ele, verá arquivos para quase todos os dispositivos que você pode imaginar, desde as unidades de estado sólido baseadas em NVMe mencionadas até discos rígidos no SATA (por exemplo, /dev/sd*) ou IDE mais antigo (/dev/hd*) conexões, bem como as mais antigas, como a porta de mouse PS / 2 (/dev/psaux). Os asteriscos representam curingas; por exemplo, em uma configuração baseada em SATA, seu primeiro disco rígido será "/ dev / sduma, "e a primeira partição desse disco será" / dev / sda1. "Sua segunda partição é" / dev / sda2, "enquanto a primeira partição do segundo disco é" / dev / sdb1."

Embora não seja importante que eles estejam em uma ordem específica, é importante saber qual é qual. Este conhecimento o impedirá de sobrescrever sua partição do Windows quando você pretendia instalar o Linux em uma nova unidade em branco que você instalou, por exemplo.

O diretório / etc

o /etc nome do diretório, como um lugar para colocar qualquer extra, ou et cetera arquivos, desmente sua importância. Na prática, esse diretório hospeda muitos dos arquivos de configuração que controlam todo o sistema. Existem dois tipos principais de arquivos que residem aqui:

  • Arquivos de configuração global, por exemplo a /dev/fstab arquivo usado para montar todas as unidades pesadas que você descreveu no /dev diretório acima.
  • Os chamados arquivos "esqueleto", que são usados ​​como padrões para configurações no nível do usuário. Um exemplo disso é o /etc/profile arquivo, que contém configurações para o shell Bash. Quando uma nova conta é criada, este arquivo é copiado para a nova conta como .perfil e serve como ponto de partida até que o usuário o personalize.

Muitos dos subdiretórios em /etc são nomeados de acordo com os aplicativos que controlam, então é fácil navegar por aqui para tentar encontrar o arquivo de que você precisa para consertar um aplicativo quando ele está funcionando mal.

Os diretórios / home e / root

Os aficionados do Windows entendem o C: \ Usuários diretório, que é onde residem os documentos e as configurações de cada usuário do sistema. Uma vez que o Unix foi desde o início um sistema multiusuário, este conceito existe há muitos anos no Linux como o /home diretório. Cada conta desfruta de um subdiretório aqui que contém todos os dados da conta. Na verdade, um usuário normal não administrador nem tem permissão para armazenar arquivos em outro lugar.

o /root diretório é a pasta de usuário equivalente para o administrador do sistema, ou usuário root. Só difere de /home em sua localização (para manter arquivos potencialmente confidenciais longe de usuários normais) e propriedade.

Os diretórios / lib

Como você provavelmente está usando um sistema operacional de 64 bits, você provavelmente tem alguns diretórios aqui: /lib, /lib32, e /lib64. Eles contêm bibliotecas de software que o kernel usa para suas operações mais básicas. Aqueles que não contêm código específico para a versão do processador estão no /lib pasta. Aqueles que são específicos da versão estão no /lib32 (32 bits) ou /lib64 (64 bits) diretórios conforme apropriado.

Os diretórios / media e / mnt

Mídia removível é montada sob o nome de um usuário no diretório de mídia

Alguns anos atrás, se você tivesse uma mídia removível como um pen drive USB, antes de poder usá-la, você precisaria atribuir um /dev entrar e criar um lugar para o /mnt (montagem) diretório. Em versões mais modernas, as distribuições Linux configuram mídias removíveis automaticamente. Na verdade, dependendo do usuário logado quando o dispositivo está conectado, o sistema criará um diretório específico do usuário, monte o dispositivo e certifique-se de que o usuário tenha as permissões corretas para Acesse isso. A diferença hoje em dia é que o /media diretório é geralmente usado para este propósito.

O diretório / opt

Houve um tempo, não muito tempo atrás, em que você não podia simplesmente pular em um site e baixar um pacote do Ubuntu para seu aplicativo favorito. Você instalaria muitos desses programas executando um instalador personalizado, simplesmente descompactando-os de seu arquivo ou mesmo compilando-os a partir de seu código-fonte. Esses métodos de instalação não eram unificados e, às vezes, era difícil rastrear para onde os arquivos foram e como desinstalá-los. o /opt foi introduzido para este software opcional, para garantir que o resto do seu sistema não fosse afetado no caso de sua instalação ou desinstalação dar errado.

Embora mais desenvolvedores hoje estejam disponibilizando seus aplicativos em formatos de pacote padrão (.RPM e .DEB), alguns desses programas ainda são instalados em /opt. Se este diretório ainda faz sentido é um assunto de algum debate na comunidade Linux, mas por enquanto, permanece. E alguns softwares ainda são instalados lá, mesmo de pacotes .DEB padrão. Notavelmente, o Google Chrome é instalado lá em sistemas baseados no Ubuntu.

O diretório / sbin

o /sbin diretório, como o mencionado /bin, contém utilitários binários. No entanto, este diretório é limitado a binários do sistemae, como tal, apenas o usuário root pode executar seu conteúdo. Inclui ferramentas como adicionar usuário (usado para criar novas contas de usuário), insmod (usado para carregar drivers de hardware para o kernel), e desligar (desliga o computador).

Se você está se perguntando sobre aquele último, você tem um olho perspicaz. Não, você não precisa ser um "superusuário" apenas para desligar o sistema Linux. Em sistemas de servidor, esse é o caso. Mas na área de trabalho, seu ambiente preferido (como KDE, GNOME ou XFCE) é configurado para que possa executar aquele comando específico como se fosse um usuário root.

O diretório / usr

O diretório usr parece bastante simples, até você começar a mergulhar nele

Enquanto dados do usuário é armazenado no /home pastas, /usr e seus subdiretórios contêm a maior parte do software instalado para o sistema. Aqui instalado significa tudo o que está disponível fora dos utilitários básicos em /bin. Por exemplo, ele conterá:

  • Aplicativos como ambientes de desktop, o pacote de escritório LibreOffice, o editor de imagens GIMP e o navegador Firefox.
  • Código-fonte para coisas como o kernel do Linux e drivers de hardware.
  • Arquivos auxiliares, como arte ou documentação, para todos os itens acima.

o /usr O diretório os armazena em sua própria hierarquia. Contém bin, lib, e sbin subdiretórios, que operam exatamente como seus irmãos superiores, mas contêm apenas itens relacionados ao software que você instalou. o /usr/share O diretório contém ativos como conjuntos de ícones, bem como arquivos de documentação.

O diretório usrshare é enorme, com muitos subdiretórios para vários aplicativos

Finalmente, a intenção original do /usr/local ramo era semelhante a /opt - software "opcional" instalado pelo usuário. Parte do debate é qual desses dois deve permanecer. Um ponto a favor de /usr/local é que a maioria do software instalado a partir do código-fonte é configurado para se colocar aqui.

O diretório / var

O diretório var contém dados de trabalho para aplicativos e processos em execução

O último dos diretórios "principais" do Linux, o /var diretório contém dados do sistema. Isso significa dados gerados pelas operações do sistema, como arquivos de log (/var/log), caches (/var/cache) e backups (/var/backup). E uma vez que o Unix (e, portanto, o Linux também) era originalmente um sistema multiusuário, mantendo áreas para aplicativos de servidor, como e-mail (/var/mail para caixas de correio e /var/spool/postfix para correio de saída) e impressão em rede (/var/spool/cups) instanciar aqui também.

Outros diretórios

Distribuições diferentes usam combinações diferentes de diretórios padrão no nível raiz. Abaixo, compartilhamos a listagem do diretório da pasta raiz para MX Linux 18.3 Continuum e Ubuntu 19.10 Eoan Ermine.

lista de diretório raiz mx linux
lista de diretórios raiz ubuntu

Dependendo da distribuição, você pode encontrar outros diretórios também:

  • /lost+found: Há momentos em que pequenos bits de dados são perdidos no sistema. Se você sabe que perdeu algo, pode verificar aqui, embora o conteúdo não seja facilmente identificável. Você precisará inspecionar manualmente seu conteúdo para descobrir o que é.
  • /proc: Tudo no Linux pode ser representado por um arquivo. o /proc diretório contém arquivos associados com processos, e você pode visualizá-los para examinar o que estão fazendo (mas não os edite).
  • /run: Isto é um diretório de tempo de execução onde os processos armazenam alguns dados temporários de que precisam, na maioria das vezes durante a inicialização do sistema. Tal como acontece com outros diretórios de nível de sistema, não se meta aqui.
  • /snap: Ubuntu's Foto é um formato do pacote que encerra um aplicativo, e tudo o que o aplicativo precisa, em um recipiente que está isolado do resto do seu sistema. o /snap O diretório é onde esses contêineres são montados no sistema, de maneira semelhante aos dispositivos de armazenamento.
  • /srv: Este diretório é onde estão os arquivos servido por programas daemon são armazenados. Por exemplo, páginas da web estáticas servidas pelo servidor da web Apache podem ser armazenadas no /srv/www subdiretório.
  • /sys: De acordo com o mantra "tudo é um arquivo", /sys e seu conteúdo representa configurações e informações do kernel Linux, da mesma forma /proc faz para processos em execução.
  • /tmp: Se você adivinhou pelo nome que este diretório contém dados temporários, você está certo. Os programas de nível de sistema armazenam informações aqui temporariamente.

Em um computador com Windows, nada impede inerentemente você de colocar diretórios em qualquer lugar que desejar, incluindo no nível raiz (C: \). Em sistemas baseados em Linux, entretanto, você deve manter os dados onde eles pertencem. O sistema baseado em permissões granulares para Linux irá gerar atrito intencional quando você forçar layouts de diretório alternativos do que o sistema foi projetado para aceitar.