Como entender o layout do sistema de arquivos Ubuntu?

220

No Windows, talvez haja apenas algumas pastas importantes (por importante, importante na minha imagem lógica do sistema de arquivos do Windows) na unidade de instalação (no meu caso C:\). Ou seja, Program Filese Windows. Simplesmente fico longe da Windowspasta e o “adicionar remover arquivos de programa” é bom o suficiente para lidar com a program filespasta do Windows. É claro que há uma pasta chamada Usersonde os usuários (que não são administradores) podem acessar apenas suas pastas.

Portanto, em minha mente, há uma imagem clara em algum nível do sistema de arquivos do Windows. No Ubuntu, quando chego ao local /, há uma enorme lista de pastas, a maioria das quais não tenho idéia do que elas contêm. A /binpasta parece ser o equivalente da Windowspasta no Windows. A /usrpasta parece ser o equivalente da Userspasta no Windows. Mas mesmo a /homepasta parece ser adequada à conta.

Por favor, entenda que eu entendo que o Ubuntu (Linux) tem um caráter diferente do do Windows, ou seja, não precisa haver um equivalente exato das funções do Windows, no Ubuntu. Tudo o que estou procurando é uma imagem um pouco mais clara do sistema de arquivos Ubuntu.

Esta questão é parte de uma questão maior que estou dividindo para torná-la mais responsável. A pergunta original pode ser encontrada aqui:
http://sgsawant.wordpress.com/2012/05/17/whats-the-equivalent-of-add-or-remove-programs-in-ubuntu/

Shashank Sawant
fonte
3
Veja também a tag de estrutura de diretório no Unix e Linux . Todas as distribuições Linux seguem o mesmo modelo.
Gilles
Obrigado por todas as suas respostas. Estou um pouco confuso sobre alguns pontos: no Windows, a instalação geralmente fornece, através de um prompt, uma opção para instalar um software para todos os usuários. Como fazer essa distinção no Ubuntu? Além disso, esse é um problema comum na configuração de softwares de desenvolvimento para seus IDEs. No Windows, por exemplo, em "arquivos de programas \ miktex \ bin", há o arquivo "pdflatex.exe". Assim, eu posso apontar o IDE para esse arquivo e configurá-lo. Como proceder nesse processo no Ubuntu? Onde está o arquivo binário geral associado a um software (especialmente do ponto de vista da configuração)?
Shashank Sawant
2
No Ubuntu, você normalmente instala software para todos os usuários. Tudo o que você faz através do gerenciador de pacotes é para todos os usuários. Eu não entendo o resto do seu comentário; não se "configura" o "arquivo binário associado a um software". Você deve fazer isso como uma pergunta separada e dar uma explicação melhor do que você está tentando fazer.
Gilles
Entendi. Vou formular uma nova pergunta. Mesmo assim, aqui está uma breve explicação do que eu quis dizer: No Windows, os arquivos .exe podem ser facilmente localizados. Por exemplo: "C: \ Python27 \ python.exe". Então, eu sei de onde o programa Python começa. Agora, se eu tiver que usar o Eclipse IDE, posso simplesmente apontar para python.exe, e foi isso que quis dizer com "configure". Eu configurei o IDE para Python. No Ubuntu, onde está o local em que o programa está instalado? Isso é o que ainda me escapa.
Shashank Sawant
2
@ Gilles Tenha cuidado ao dizer all. O projeto GoboLinux realmente usa uma estrutura de diretório mais semelhante ao Windows.
New123456 18/01/12

Respostas:

251

Você pode ler sobre isso, por exemplo, na wikipedia. Um trecho:

O FHS ( Filesystem Hierarchy Standard ) define os principais diretórios e seu conteúdo nos sistemas operacionais Linux. Na maioria das vezes, é uma formalização e extensão da hierarquia tradicional do sistema de arquivos BSD.

O FHS é mantido pela Linux Foundation, uma organização sem fins lucrativos composta pelos principais fornecedores de software e hardware, como HP, Red Hat, IBM e Dell. A versão atual é 3.0, lançada em 3 de junho de 2015.

Uma representação visual com uma breve descrição:

insira a descrição da imagem aqui

Basicamente, o Linux dividiu a estrutura de diretórios com base na função do que é necessário para tornar o sistema o mais seguro possível com a quantidade mínima de permissões necessárias. Caso contrário, alguém é obrigado a fazer um monte de trabalho evitável.

Lembre-se de que o Unix e o Linux foram criados como sistemas multiusuários e o Windows foi criado para um único usuário. Tudo o resto pode ser explicado a partir dessa ideia. Você pode explicar todos os diretórios ao pensar em ser multiusuário e segurança.

3 exemplos:

  • Você verá que os arquivos e diretórios que são apenas administradores são reunidos no mesmo diretório: os s /sbine /usr/sbine /usr/local/sbinsignifica sistema. Um usuário normal não pode nem iniciar programas que estão lá. Os arquivos que um usuário normal pode iniciar estão em / bin, / usr / bin, / usr / local / bin, com base no local em que ele deve residir logicamente. Mas se eles são apenas administradores, devem ir para a sversão desse diretório. Existe um utilitário famoso chamado fuser. Você pode matar processos com ele. Se um usuário normal pudesse usar isso, ele poderia matar sua sessão.

  • O mesmo vale para /home: / home / user1 é propriedade do user1. / home / user2 é propriedade do user2. O usuário2 não tem negócios fazendo coisas na casa do usuário1 (e o contrário também é verdadeiro: o usuário1 não tem negócios fazendo coisas na casa do usuário2). Se todos os arquivos estivessem em / home sem nome de usuário, você teria que dar permissões a todos os arquivos e avaliar se alguém tem permissão para gravar / remover esses arquivos. Um pesadelo se você tiver dezenas de usuários.

  • Adição de bibliotecas.

    /lib/, /usr/lib/E /usr/local/lib/são os locais originais, de antes que os sistemas multilib existia eo existem para evitar que as coisas quebrando. /usr/lib32, /usr/lib/64, /usr/local/lib32/, /usr/local/lib64/São de 32/64-bit invenções multilib.

Não é um conceito estático, por qualquer meio. Outros tipos de Linux fizeram ajustes nesse layout. Por exemplo; atualmente você verá o debian e o Ubuntu mudando bastante no layout do FHS, já que o SSD é melhor com arquivos somente leitura. Há um movimento em direção a um novo layout, onde os arquivos são divididos em um diretório / grupo 'somente leitura' e um grupo / diretório 'gravável', para que possamos ter uma partição raiz que pode ser montada somente leitura (partição para um ssd) e gravável (HDD SATA). O novo diretório usado para isso (não na imagem) é /run/.

Rinzwind
fonte
18
+1 Rinzwind. Eu gosto da imagem, estava procurando uma.
Luis Alvarado
5
ha pensava que iria chamar a atenção: + @LuisAlvarado
Rinzwind
4
Não pode haver uma resposta melhor!
Shashank Sawant
1
Não era o /mntque /mediaé agora, há alguns anos atrás?
RobinJ
9
@RobinJ: A diferença é que /mnthistoricamente foi gerenciado manualmente. Com o surgimento de muitos dispositivos transitórios (unidades flash, etc.) e a montagem automática se tornando padrão, houve a necessidade de lidar automaticamente com os pontos de montagem. Um novo diretório era necessário para evitar conflitos com a configuração manual existente. Portanto, esses dias /mntforam relegados ao papel de fornecer um ponto de montagem temporário conveniente.
Scott Severance
104

Experimente este comando ...

man 7 hier

Você também pode visualizar esta página de manual aqui: http://manpages.ubuntu.com/manpages/en/man7/hier.7.html

Espero que ajude

Pritesh Wadhia
fonte
1
boa decisão! Eu sempre esqueço que um que está sempre presente (mesmo quando a rede está em baixo;))
Rinzwind
1
o homem deve ser renomeado para "it". :)))
Shiki
man hieragora está entre meus comandos favoritos! As explicações são mais claras para mim do que o documento da FHS, especialmente fazendo a distinção entre 'local para a máquina' e 'em todo o site', para um usuário inexperiente do Ubuntu, que passa por uma experiência moderada em DOS / Windows.
WillC
Entre o número 7 fica da seção Miscelânea da página de manual hier.
Pablo A
Hmm. Pelo que vale esse tipo de coisa, me lembra uma resposta apenas de link, mesmo que seja provável que todas as versões do ubuntu tenham isso. Você pode incorporar parte do conteúdo da página de manual na sua resposta?
Jrh #
45

Resposta tardia - criei um roteiro para os iniciantes seguirem. Se eles estiverem procurando um arquivo, mas não souberem onde procurar, poderão usar o mapa para navegar mais ou menos. Você pode baixar um PNG de alta resolução aqui . Você pode encontrar o post relacionado aqui . Continuarei atualizando o arquivo e a publicação quando o tempo permitir, incorporando comentários úteis.

d4nyll
fonte
Idéia interessante e útil para produzir um fluxograma, mas infelizmente parece ter alguns becos sem saída. Minha pergunta é se estou executando um mysqldumplocal para onde devo enviar o arquivo?
BadHorsie
O @BadHorsie, é claro, sempre dependeria do seu caso de uso específico, mas despejá-lo em um /home/badhorsie/mysqldumpdiretório seria suficiente. Se você estiver executando muitos aplicativos, poderá criar um novo usuário para executar cada aplicativo e despejá-lo no homediretório desse aplicativo / usuário .
precisa
@ paranóico-panda, você poderia expandir um pouco o porquê de optar por não permitir que a imagem seja clicável na resolução total? A versão incorporada neste post é praticamente ilegível.
waldyrious
@waldyrious: Se você olhar para o histórico de revisões , verá que apenas corrigi um erro de ortografia, foi outro usuário que adicionou a imagem dessa maneira específica. Nada a ver comigo. Sinta-se à vontade para editá-lo, não me lembro da sintaxe correta para torná-lo clicável.
@ParanoidPanda foi exatamente o que eu fiz. Minha edição corrigiu o erro de digitação e tornou a imagem clicável, e sua revisão foi para rejeitar e editar , daí a minha pergunta: o que você achou errado ao tornar a imagem clicável?
waldyrious
36

Este texto a seguir mostra a estrutura de diretórios.

mtk4@laptop:/$ pwd
/
mtk4@laptop:/$ tree -L 1
.
|-- bin
|-- boot
|-- cdrom
|-- dev
|-- etc
|-- home
|-- lib
|-- lost+found
|-- media
|-- mnt
|-- opt
|-- proc
|-- root
|-- run
|-- sbin
|-- selinux
|-- srv
|-- sys
|-- tmp
|-- usr
|-- var

Os principais componentes aqui são:

  1. /boot : Contém o carregador de inicialização

  2. /home : Contém os diretórios pessoais dos usuários.

  3. /bin : Todos os binários executáveis ​​e comandos usados ​​por todos os usuários no sistema estão localizados aqui.

  4. /sbin : Contém os binários executáveis ​​do sistema normalmente usados ​​pelos administradores do sistema.

  5. /lib : Contém as bibliotecas do sistema que suportam os binários em / bin e / sbin.

  6. /etc : Contém os arquivos de configuração para rede, tempo de inicialização etc.

  7. /dev : Aqui estão mostrados os arquivos do dispositivo, como usb, dispositivo terminal ou qualquer outro dispositivo conectado ao sistema.

  8. /proc : Contém informações sobre o processo em execução.

  9. /tmp: Este é o diretório temporário em que muitos processos criam os arquivos temporários necessários. Isso é limpo toda vez que a máquina é inicializada.

Para mais detalhes, o link Thegeekstuff explica perfeitamente o sistema de arquivos genérico do linux.

mtk
fonte
20

\Usersé equivalente a /home. O nome de /usré um artefato histórico.

O equivalente combinado de \Windowse \Program Filesé a combinação de /bin, /boot, /etc, /lib, /sbin, /tmp, /usre /var. Linux e Windows dividem o software instalado de maneira diferente. O Windows distingue entre o sistema operacional e os programas complementares. O Linux não faz essa distinção da mesma maneira; a maioria, se nem todo software vem do Ubuntu (o distribuidor) e está instalado na mesma hierarquia de diretórios, e como o software é rastreado pelo gerenciador de pacotes, não há necessidade de armazenar cada programa em seu próprio diretório. No Linux:

  • /etc é para arquivos de configuração do sistema: arquivos de configuração que afetam todos os usuários, se eles se aplicam ao sistema operacional como um todo ou a um aplicativo específico.
  • /usr é para código e dados do sistema (programas, bibliotecas, documentação etc.).
  • /varé para dados variáveis ​​ou temporários: arquivos temporários, logs, bancos de dados do gerenciador de pacotes, spools de impressora, arquivos para salvar jogos, etc. Há também /tmparquivos temporários que podem ser apagados durante as reinicializações.
  • /bin, /libe /sbinno diretório raiz tem contrapartes em /usr. Os arquivos externos /usrsão os necessários no início do processo de inicialização. Essa é uma relíquia do momento em que os discos eram pequenos e /usrpodem estar em um sistema de arquivos compartilhado entre várias estações de trabalho na rede, não é realmente uma distinção útil na maioria dos sistemas.
  • /boot contém alguns arquivos necessários apenas para inicializar o sistema operacional e não para a operação diária.

Existem diretórios adicionais que não correspondem a nada que o Windows possui:

  • /rooté o diretório inicial do usuário raiz. O usuário root é uma conta de administrador não vinculada a nenhum usuário específico; é o usuário para o qual você muda quando executa sudo. O Ubuntu não permite que o usuário root efetue login por padrão.
  • /mediae /mntsão pontos de montagem: são onde você pode ver os sistemas de arquivos de outros sistemas operacionais e unidades remotas. O equivalente do Windows são outras letras de unidade.
  • /proce /sysmostre informações do sistema. No Windows, você precisa percorrer os menus ou chamar comandos do sistema ou instalar programas de terceiros para ver essas informações.

O Ubuntu, como outras distribuições Linux, geralmente segue o Linux Filesystem Hierarchy Standard .

Gilles
fonte
5

O Ubuntu (como todos os sistemas semelhantes ao UNIX) organiza arquivos em uma árvore hierárquica, onde os relacionamentos são pensados ​​em equipes de filhos e pais. Os diretórios podem conter outros diretórios e arquivos regulares, que são as "folhas" da árvore. Qualquer elemento da árvore pode ser referência por um nome de caminho; um nome de caminho absoluto começa com o caractere / (identificando o diretório raiz, que contém todos os outros diretórios e arquivos); todos os diretórios filhos que precisam ser percorridos para alcançar o elemento são listados, cada um separado por um sinal /.

Um nome de caminho relativo é aquele que não começa com /; nesse caso, a árvore de diretórios é percorrida a partir de um determinado ponto, que muda dependendo do contexto, chamado diretório atual. Em todos os diretórios, existem dois diretórios especiais chamados. e .., que se referem respectivamente ao próprio diretório e ao diretório pai.

O fato de todos os arquivos e diretórios terem uma raiz comum significa que, mesmo que vários dispositivos de armazenamento diferentes estejam presentes no sistema, todos eles são vistos como diretórios em algum lugar da árvore, depois de montados no local desejado.

Encontre exemplos e mais informações aqui :

stephenmyall
fonte