Come comprendere il layout del file system Ubuntu?


220

In Windows ci sono forse solo un paio di cartelle importanti (per importanza intendo importante nella mia immagine logica del file system di Windows) nell'unità di installazione (nel mio caso C:\). Vale a dire Program Filese Windows. Sto semplicemente alla larga dalla Windowscartella e il "aggiungi rimuovi file di programma" è abbastanza buono per gestire la program filescartella di Windows. Naturalmente c'è una cartella chiamata in Userscui gli utenti (che non sono amministratori) possono accedere solo alle loro cartelle.

Quindi, a un certo livello, ho un'idea chiara del file system di Windows. In Ubuntu, quando raggiungo la posizione /, c'è un enorme elenco di cartelle, la maggior parte delle quali non ho idea di cosa contengano. La /bincartella sembra essere l'equivalente della Windowscartella in Windows. La /usrcartella sembra essere l'equivalente della Userscartella in Windows. Ma anche la /homecartella sembra adatta al conto.

Per favore capisci che capisco, che Ubuntu (Linux) ha un carattere diverso da quello di Windows, cioè che non ci deve essere esattamente un equivalente delle funzioni di Windows, in Ubuntu. Tutto quello che sto cercando è un'immagine un po 'più chiara del file system Ubuntu.

Questa domanda fa parte di una domanda più ampia che sto dividendo per renderla più responsabile. La domanda originale può essere trovata qui:
http://sgsawant.wordpress.com/2012/05/17/whats-the-equivalent-of-add-or-remove-programs-in-ubuntu/


3
Vedi anche il tag della struttura delle directory su Unix e Linux . Tutte le distribuzioni Linux seguono lo stesso modello.
Gilles,

Grazie per tutte le tue risposte Sono un po 'confuso su alcuni punti: in Windows il setup solitamente fornisce tramite un prompt un'opzione per installare un software per tutti gli utenti. Come fare questa distinzione in Ubuntu? Inoltre, questo è un problema comune nella configurazione dei software di sviluppo per i loro IDE. In Windows, ad esempio, in "programmi \ miktex \ bin" c'è il file "pdflatex.exe". Quindi posso puntare l'IDE su questo file e configurarlo. Come procedere su questo processo in Ubuntu? Dov'è il file binario generale associato a un software (specialmente dal punto di vista della configurazione)?
Shashank Sawant,

2
In Ubuntu, normalmente si installa software per tutti gli utenti. Tutto ciò che fai attraverso il gestore pacchetti è per tutti gli utenti. Non capisco il resto del tuo commento; non si "configura" il "file binario associato a un software". Dovresti fare questa domanda separatamente e dare una spiegazione migliore di ciò che stai cercando di fare.
Gilles,

Fatto. Farò una nuova domanda. Anche allora ecco una breve spiegazione di cosa intendevo: in Windows, i file .exe possono essere facilmente individuati. Ad esempio: "C: \ Python27 \ python.exe". Quindi so da dove inizia il programma Python. Ora, se devo usare l'IDE Eclipse, posso semplicemente indicarlo su python.exe, e questo è ciò che intendevo per "configurare". Ho configurato l'IDE per Python. In Ubuntu dov'è la posizione in cui è installato il programma? Questo è ciò che mi sfugge ancora.
Shashank Sawant,

2
@Gilles Stai attento quando lo dici all. Il progetto GoboLinux attualmente utilizza una struttura di directory più simile a Windows.
nuovo123456,

Risposte:


251

Puoi leggere su questo ad esempio su Wikipedia. Un estratto:

Il Filesystem Hierarchy Standard (FHS) definisce le directory principali e i loro contenuti nei sistemi operativi Linux. Per la maggior parte, si tratta di una formalizzazione ed estensione della gerarchia di file system BSD tradizionale.

L'FHS è gestito dalla Linux Foundation, un'organizzazione senza fini di lucro composta dai principali fornitori di software e hardware, come HP, Red Hat, IBM e Dell. La versione attuale è 3.0, rilasciata il 3 giugno 2015.

Una rappresentazione visiva con una breve descrizione:

inserisci qui la descrizione dell'immagine

Fondamentalmente Linux ha diviso la struttura delle directory in base alla funzione di ciò che è necessario per rendere il sistema il più sicuro possibile con la quantità minima di autorizzazioni necessarie. Altrimenti qualcuno è tenuto a fare un sacco di lavoro evitabile.

Ricorda che Unix e Linux sono stati creati come sistemi multiutente e Windows è stato creato per un singolo utente. Tutto il resto può essere spiegato da quell'idea. Puoi spiegare ogni directory quando pensi che sia multiutente e sicurezza.

3 esempi:

  • Vedrai che i file e le directory che sono solo amministratori sono raccolti nella stessa directory: s in /sbine /usr/sbine /usr/local/sbinsta per sistema. Un utente normale non può nemmeno avviare i programmi presenti. I file che un normale utente può avviare sono in / bin, / usr / bin, / usr / local / bin in base a dove dovrebbe risiedere logicamente. Ma se sono solo amministratori, dovrebbero andare alla sversione di quella directory. C'è una famosa utility chiamata fuser. Puoi uccidere i processi con esso. Se un utente normale potesse usare questo (i) sarebbe in grado di uccidere la tua sessione.

  • Lo stesso vale per /home: / home / user1 è proprietà di user1. / home / user2 è di proprietà di user2. user2 non ha attività da fare a casa dell'utente (e viceversa è anche vero: user1 non ha attività da fare a casa dell'utente2). Se tutti i file si trovassero in / home senza un nome utente sottostante, dovresti dare le autorizzazioni a ogni file e valutare se a qualcuno è permesso scrivere / rimuovere quei file. Un incubo se hai decine di utenti.

  • Aggiunta relativa alle biblioteche.

    /lib/, /usr/lib/e /usr/local/lib/sono le posizioni originali, prima che esistessero i sistemi multilib e esistessero per impedire la rottura di cose. /usr/lib32, /usr/lib/64, /usr/local/lib32/, /usr/local/lib64/Sono a 32/64-bit invenzioni multilib.

Non è affatto un concetto statico. Altre versioni di Linux hanno apportato modifiche a questo layout. Per esempio; attualmente vedrai debian e Ubuntu cambiare molto nel layout di FHS poiché SSD è meglio con i file di sola lettura. C'è un movimento verso un nuovo layout in cui i file sono divisi in una directory / gruppo "sola lettura" e una "scrittura" in modo da poter avere una partizione root che può essere montata in sola lettura (partizione per un ssd) e scrivibile (sata hdd). La nuova directory utilizzata per questo (non nell'immagine) è /run/.


18
+1 Rinzwind. Mi piace l'immagine, in realtà ne cercavo una.
Luis Alvarado,

5
ha pensato che avrebbe attirato l'attenzione: + @LuisAlvarado
Rinzwind

4
Non ci può essere una risposta migliore!
Shashank Sawant,

1
Non era /mntquello che /mediaè adesso, qualche anno fa?
RobinJ,

9
@RobinJ: la differenza è che /mntè stata storicamente gestita manualmente. Con l'ascesa di molti dispositivi transitori (unità flash, ecc.) E il montaggio automatico diventati standard, era necessario gestire automaticamente i punti di montaggio. Era necessaria una nuova directory per evitare conflitti con la configurazione manuale esistente. Pertanto, in questi giorni /mntè stato relegato al ruolo di fornire un conveniente mount point temporaneo.
Scott Severance,

104

Prova questo comando ...

man 7 hier

Puoi anche visualizzare questa pagina di manuale qui: http://manpages.ubuntu.com/manpages/en/man7/hier.7.html

Spero che sia d'aiuto


1
buona chiamata! Lo dimentico sempre, anche se è sempre presente (anche quando la rete è
inattiva

1
l'uomo dovrebbe essere rinominato in "esso". :)))
Shiki,

man hierè ora tra i miei comandi preferiti! Le spiegazioni sono più chiare per me del documento FHS, in particolare distinguendo tra "locale alla macchina" e "a livello di sito", per un utente Ubuntu inesperto, passando da una moderata esperienza DOS / Windows.
WillC

A proposito, il numero 7 si trova nella sezione Miscellanea della pagina man hier.
Pablo A

hmm. Per quello che vale questo tipo di mi ricorda una risposta solo link, anche se è probabile che ogni versione di Ubuntu avrà questo. Puoi incorporare parte del contenuto della pagina man nella tua risposta?
jrh

45

Risposta in ritardo - Ho creato una tabella di marcia che i principianti devono seguire. Se stanno cercando un file ma non sanno dove cercare, possono usare la mappa per navigare approssimativamente. Puoi scaricare un PNG ad alta risoluzione qui . Puoi trovare il post correlato qui . Continuerò ad aggiornare sia il file che il post quando il tempo lo consente, includendo commenti utili.


Idea interessante e utile per produrre un diagramma di flusso, ma purtroppo sembra avere dei vicoli ciechi. La mia domanda è se sto eseguendo un mysqldumpdove dovrei produrre il file?
BadHorsie,

@BadHorsie ovviamente dipenderà sempre dal tuo caso d'uso specifico, ma è /home/badhorsie/mysqldumpsufficiente scaricarlo in una directory. Se si eseguono molte app, è possibile creare un nuovo utente per eseguire ciascuna app e scaricarla nella relativa homedirectory utente / app .
d4nyll,

@ paranoid-panda, potresti espandere un po 'il motivo per cui scegli di non consentire all'immagine di essere cliccabile attraverso la piena risoluzione? La versione integrata in questo post è praticamente illeggibile.
caloroso

@valyrious: Se guardi la cronologia delle revisioni vedrai che ho corretto solo un errore di ortografia, è stato un altro utente che ha aggiunto l'immagine in questo modo particolare. Niente a che fare con me. Sentiti libero di modificarlo, non riesco a ricordare la sintassi corretta per renderlo selezionabile.

@ParanoidPanda è proprio quello che ho fatto. La mia modifica ha reso la correzione dell'errore di battitura e ha reso l'immagine cliccabile, e la tua recensione è stata di rifiutare e modificare , quindi la mia domanda: cosa hai visto di sbagliato nel rendere l'immagine selezionabile?
Waldyrious

36

Questo testo seguente mostra la struttura della directory.

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

I componenti principali qui sono:

  1. /boot : Contiene il boot loader

  2. /home : Contiene le home directory degli utenti.

  3. /bin : Tutti i file binari eseguibili e i comandi utilizzati da tutti gli utenti del sistema si trovano qui.

  4. /sbin : Contiene i file binari eseguibili di sistema generalmente utilizzati dagli amministratori di sistema.

  5. /lib : Contiene le librerie di sistema che supportano i binari in / bin e / sbin.

  6. /etc : Contiene i file di configurazione per rete, tempo di avvio, ecc.

  7. /dev : Qui sono mostrati i file del dispositivo, ad esempio usb, dispositivo terminale o qualsiasi altro dispositivo collegato al sistema.

  8. /proc : Contiene informazioni sul processo in esecuzione.

  9. /tmp: Questa è la directory temporanea in cui molti processi creano i file temporanei richiesti. Viene eliminato ogni volta che si avvia la macchina.

Per maggiori dettagli, il link Thegeekstuff spiega perfettamente il generico file system linux.


20

\Usersè equivalente a /home. Il nome di /usrè un artefatto storico.

L'equivalente combinato di \Windowsed \Program Filesè la combinazione di /bin, /boot, /etc, /lib, /sbin, /tmp, /usre /var. Linux e Windows hanno suddiviso il software installato in modo diverso. Windows distingue tra il sistema operativo e i programmi associati. Linux non fa questa distinzione allo stesso modo; la maggior parte se non tutto il software arriva attraverso Ubuntu (il distributore) ed è installato nella stessa gerarchia di directory e poiché il software è monitorato dal gestore dei pacchetti, non è necessario memorizzare ciascun programma nella propria directory. Su Linux:

  • /etc è per i file di configurazione del sistema: file di configurazione che interessano tutti gli utenti, indipendentemente dal fatto che si applichino al sistema operativo nel suo insieme o a un'applicazione specifica.
  • /usr è per codice di sistema e dati (programmi, librerie, documentazione, ecc.).
  • /varè per dati variabili o temporanei: file temporanei, registri, database del gestore pacchetti, spool della stampante, file di salvataggio del gioco, ecc. Esiste anche /tmpper i file temporanei che possono essere cancellati al riavvio.
  • /bin, /libE /sbinnella directory principale hanno controparti in /usr. I file esterni /usrsono quelli necessari all'inizio del processo di avvio. Questa è una reliquia del tempo in cui i dischi erano piccoli e /usrpotevano trovarsi su un filesystem condiviso tra più workstation sulla rete, non è davvero una distinzione utile sulla maggior parte dei sistemi.
  • /boot contiene alcuni file necessari solo per l'avvio del sistema operativo e non per le operazioni quotidiane.

Esistono directory aggiuntive che non corrispondono a nulla di Windows:

  • /rootè la home directory dell'utente root. L'utente root è un account amministratore non legato a un particolare utente; è l'utente a cui cambi quando corri sudo. Ubuntu non consente all'utente root di accedere per impostazione predefinita.
  • /mediae /mntsono punti di montaggio: sono dove puoi vedere i filesystem di altri sistemi operativi e unità remote. L'equivalente di Windows è altre lettere di unità.
  • /proce /sysmostra le informazioni di sistema. Su Windows, devi visualizzare i menu o chiamare i comandi di sistema o installare programmi di terze parti per visualizzare queste informazioni.

Ubuntu, come altre distribuzioni Linux, generalmente segue il Linux Filesystem Hierarchy Standard .


5

Ubuntu (come tutti i sistemi simili a UNIX) organizza i file in un albero gerarchico, in cui si pensa alle relazioni in gruppi di bambini e genitori. Le directory possono contenere altre directory e file regolari, che sono le "foglie" dell'albero. Qualsiasi elemento dell'albero può essere riferimenti con un nome di percorso; un nome di percorso assoluto inizia con il carattere / (identificando la directory principale, che contiene tutte le altre directory e file), quindi viene elencata ogni directory figlio che deve essere attraversata per raggiungere l'elemento, ciascuna separata da un segno /.

Un nome di percorso relativo è uno che non inizia con /; in tal caso, l'albero delle directory viene attraversato a partire da un determinato punto, che cambia in base al contesto, chiamato directory corrente. In ogni directory, ci sono due directory speciali chiamate. e .., che si riferiscono rispettivamente alla directory stessa e alla sua directory padre.

Il fatto che tutti i file e le directory abbiano una radice comune significa che, anche se sul sistema sono presenti diversi dispositivi di archiviazione diversi, vengono tutti visti come directory da qualche parte nell'albero, una volta montati nella posizione desiderata

Trova esempi e maggiori informazioni qui :

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.