Jak zrozumieć układ systemu plików Ubuntu?

220

W systemie Windows może znajduje się tylko kilka ważnych folderów (co ważne mam na myśli ważne w moim logicznym obrazie systemu plików Windows) na dysku instalacyjnym (w moim przypadku C:\). Mianowicie Program Filesi Windows. Po prostu trzymam się z dala od Windowsfolderu, a „dodaj usuń pliki programów” jest wystarczająco dobre, aby obsłużyć program filesfolder systemu Windows. Oczywiście istnieje folder o nazwie, w Usersktórym użytkownicy (którzy nie są administratorami) mają dostęp tylko do swoich folderów.

Dlatego na pewnym poziomie systemu plików Windows mam wyraźny obraz. W Ubuntu, kiedy docieram do lokalizacji /, istnieje ogromna lista folderów, z których większość nie mam pojęcia, co zawierają. /binFolder wydaje się być odpowiednikiem Windowsfolderu w systemie Windows. /usrFolder wydaje się, że to odpowiednik Usersfolderu w systemie Windows. Ale nawet /homefolder wygląda, jakby mógł zmieścić się na rachunku.

Proszę zrozumieć, że rozumiem, że Ubuntu (Linux) ma inny charakter niż Windows, tzn. Nie musi istnieć dokładny odpowiednik funkcji Windows w Ubuntu. Wszystko, czego szukam, to nieco jaśniejszy obraz systemu plików Ubuntu.

To pytanie jest częścią większego pytania, które dzielę, aby uczynić je bardziej odpowiedzialnym. Oryginalne pytanie można znaleźć tutaj:
http://sgsawant.wordpress.com/2012/05/17/whats-the-equivalent-of-add-or-remove-programs-in-ubuntu/

Shashank Sawant
źródło
3
Zobacz także znacznik struktury katalogów w systemach Unix i Linux . Wszystkie dystrybucje Linuksa są zgodne z tym samym modelem.
Gilles
Dziękuję za wszystkie odpowiedzi. Jestem trochę zdezorientowany co do kilku kwestii: w systemie Windows instalator zazwyczaj zapewnia za pomocą monitu opcję instalacji oprogramowania dla wszystkich użytkowników. Jak zrobić to rozróżnienie w Ubuntu? Jest to również zwykły problem przy konfigurowaniu oprogramowania programistycznego do IDE. Na przykład w systemie Windows w „program files \ miktex \ bin” znajduje się plik „pdflatex.exe”. W ten sposób mogę wskazać IDE na ten plik i skonfigurować go. Jak przejść przez ten proces w Ubuntu? Gdzie jest ogólny plik binarny powiązany z oprogramowaniem (szczególnie z punktu widzenia konfiguracji)?
Shashank Sawant
2
W Ubuntu zwykle instalujesz oprogramowanie dla wszystkich użytkowników. Wszystko, co robisz za pomocą menedżera pakietów, jest przeznaczone dla wszystkich użytkowników. Nie rozumiem reszty twojego komentarza; nie „konfiguruje się” „pliku binarnego powiązanego z oprogramowaniem”. Powinieneś zadać to jako osobne pytanie i lepiej wyjaśnić, co próbujesz zrobić.
Gilles
Rozumiem. Ułożę nowe pytanie. Nawet wtedy oto krótkie wyjaśnienie tego, co miałem na myśli: w systemie Windows pliki .exe można łatwo zlokalizować. Na przykład: „C: \ Python27 \ python.exe”. Wiem więc, skąd zaczyna się program Python. Teraz, jeśli muszę użyć środowiska Eclipse IDE, mogę po prostu wskazać na python.exe i właśnie to miałem na myśli przez „config”. Skonfigurowałem IDE dla Pythona. W Ubuntu, gdzie jest miejsce, w którym program jest zainstalowany? To wciąż mnie unika.
Shashank Sawant
2
@Gilles Mów ostrożnie all. Projekt GoboLinux używa struktury katalogów bardziej podobnej do Windows.
new123456

Odpowiedzi:

251

Możesz przeczytać o tym na przykład na Wikipedii. Fragment:

System plików Hierarchy Standard (FHS) definiuje główne katalogi i ich zawartość w systemach operacyjnych Linux. W przeważającej części jest to formalizacja i rozszerzenie tradycyjnej hierarchii systemu plików BSD.

FHS jest prowadzony przez Linux Foundation, organizację non-profit składającą się z głównych dostawców oprogramowania i sprzętu, takich jak HP, Red Hat, IBM i Dell. Obecna wersja to 3.0, wydana 3 czerwca 2015 r.

Wizualna reprezentacja z krótkim opisem:

wprowadź opis zdjęcia tutaj

Zasadniczo Linux podzielił strukturę katalogów w oparciu o funkcję tego, co jest potrzebne, aby system był tak bezpieczny, jak to możliwe, przy minimalnej liczbie wymaganych uprawnień. W przeciwnym razie ktoś będzie musiał wykonać dużo pracy, której można uniknąć.

Pamiętaj, że Unix i Linux zostały stworzone jako systemy dla wielu użytkowników, a system Windows został stworzony dla jednego użytkownika. Wszystko inne można wyjaśnić na podstawie tego pomysłu. Możesz wyjaśnić każdy katalog, gdy myślisz, że jest to wiele użytkowników i bezpieczeństwo.

3 przykłady:

  • Widać, że pliki i katalogi, które są tylko dla administratorów gromadzone są w tym samym katalogu: S w /sbini /usr/sbina /usr/local/sbinoznacza system. Normalny użytkownik nie może nawet uruchomić programów, które się tam znajdują. Pliki, które normalny użytkownik może uruchomić, znajdują się w / bin, / usr / bin, / usr / local / bin w zależności od tego, gdzie powinien najbardziej logicznie się znajdować. Ale jeśli są tylko administratorami, powinni przejść do swersji tego katalogu. Istnieje znane narzędzie o nazwie fuser. Za jego pomocą możesz zabijać procesy. Gdyby zwykły użytkownik mógł z nich skorzystać, byłby w stanie zabić twoją sesję.

  • To samo dotyczy /home: / home / użytkownik1 jest własnością użytkownika1. / home / użytkownik2 jest własnością użytkownika 2. użytkownik 2 nie ma działalności, która robi rzeczy w domu użytkownika 1 (i odwrotnie jest również prawdą: użytkownik 1 nie ma działalności, która robi rzeczy w domu użytkownika 2). Jeśli wszystkie pliki będą w / home bez nazwy użytkownika pod nim, musisz udzielić uprawnień do każdego pliku i ocenić, czy ktoś może zapisać / usunąć te pliki. Koszmar, jeśli masz dziesiątki użytkowników.

  • Dodatek dotyczący bibliotek.

    /lib/, /usr/lib/i /usr/local/lib/są oryginalnymi lokalizacjami, zanim istniały systemy multilib i istnieją, aby zapobiegać uszkodzeniom. /usr/lib32, /usr/lib/64, /usr/local/lib32/, /usr/local/lib64/Są 32- / 64-bitowe multilib wynalazki.

W żadnym wypadku nie jest to koncepcja statyczna. Inne smaki Linuksa poprawiły ten układ. Na przykład; obecnie zobaczysz, że debian i Ubuntu bardzo się zmieniają w układzie FHS, ponieważ lepiej jest SSD z plikami tylko do odczytu. Nastąpił ruch w kierunku nowego układu, w którym pliki są dzielone na „tylko do odczytu” i „zapisywalny” katalog / grupę, dzięki czemu możemy mieć partycję główną, którą można zamontować tylko do odczytu (partycja na ssd) i zapisywalną (sata hdd). Nowy katalog, który jest używany do tego (nie w obrazie) to /run/.

Rinzwind
źródło
18
+1 Rinzwind. Podoba mi się obraz, właściwie go szukałem.
Luis Alvarado
5
pomyślałem, że zwróci na to uwagę: + @LuisAlvarado
Rinzwind
4
Nie ma lepszej odpowiedzi!
Shashank Sawant
1
Czy nie było to, /mntco /mediajest teraz, kilka lat temu?
RobinJ
9
@RobinJ: Różnica polega na tym, że /mnthistorycznie było ręcznie zarządzane. Wraz z pojawieniem się wielu urządzeń przejściowych (dysków flash itp.) I automatycznym montażem stały się standardem, pojawiła się potrzeba automatycznego obsługi punktów montowania. Potrzebny był nowy katalog, aby uniknąć konfliktów z istniejącą konfiguracją ręczną. Dlatego te dni /mntzostały przeniesione do roli zapewniania wygodnego tymczasowego punktu montowania.
Scott Severance
104

Wypróbuj to polecenie ...

man 7 hier

Możesz także wyświetlić tę stronę podręcznika tutaj: http://manpages.ubuntu.com/manpages/en/man7/hier.7.html

Mam nadzieję, że to pomoże

Pritesh Wadhia
źródło
1
dobra decyzja! Zawsze o tym zapominam, chociaż zawsze jest obecny (nawet gdy sieć jest
zepsuta
1
człowiek powinien zostać przemianowany na „to”. :)))
Shiki,
man hierjest teraz wśród moich ulubionych poleceń! Wyjaśnienia są dla mnie bardziej zrozumiałe niż dokumentacja FHS, szczególnie dla „niedoświadczonego użytkownika Ubuntu”, w szczególności rozróżniając „lokalnie na maszynie” i „w całej witrynie”, przechodząc od umiarkowanego doświadczenia DOS / Windows.
WillC
BTW numer 7 oznacza sekcję Miscellanea strony man man.
Pablo A
hmm To, co jest tego warte, przypomina mi odpowiedź tylko za pomocą linku, nawet jeśli jest prawdopodobne, że każda wersja Ubuntu będzie miała taką odpowiedź. Czy potrafisz uwzględnić część treści ze strony podręcznika man w swojej odpowiedzi?
jrh
45

Późna odpowiedź - Stworzyłem mapę drogową dla początkujących. Jeśli szukają pliku, ale nie wiedzą, gdzie go szukać, mogą z grubsza nawigować po mapie. Możesz pobrać plik PNG w wysokiej rozdzielczości tutaj . Powiązany post można znaleźć tutaj . Będę aktualizował zarówno plik, jak i post, gdy tylko pozwoli na to czas, uwzględniając przydatne komentarze.

d4nyll
źródło
Ciekawy i pomocny pomysł na stworzenie schematu blokowego, ale niestety wydaje się, że ma pewne ślepe zaułki. Moje pytanie brzmi, czy wykonuję polecenie, mysqldumpgdzie powinienem wyprowadzić plik?
BadHorsie,
@BadHorsie oczywiście zawsze będzie zależeć od konkretnego przypadku użycia, ale /home/badhorsie/mysqldumpwystarczy zrzucić go do katalogu. Jeśli korzystasz z wielu aplikacji, możesz utworzyć nowego użytkownika, aby uruchomić każdą aplikację i zrzucić go do homekatalogu tej aplikacji / użytkownika .
d4nyll,
@ Paranoid-panda, czy mógłbyś nieco wyjaśnić, dlaczego nie chcesz, aby obraz był klikalny w pełnej rozdzielczości? Wersja osadzona w tym poście jest prawie nieczytelna.
waldyrious
@waldyrious: Jeśli spojrzysz na historię zmian , zobaczysz, że poprawiłem tylko błąd w pisowni, to inny użytkownik dodał obraz w ten właśnie sposób. Nie ma nic wspólnego ze mną. Możesz go edytować, nie pamiętam poprawnej składni, aby można ją było kliknąć.
@ParanoidPanda właśnie to zrobiłem. Moja edycja poprawiła literówkę i sprawiła, że ​​obraz był klikalny, a twoja recenzja miała odrzucić i edytować , stąd moje pytanie: co popełniłeś źle, czyniąc obraz klikalnym?
waldyrious
36

Poniższy tekst pokazuje strukturę katalogów.

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

Główne elementy tutaj to:

  1. /boot : Zawiera moduł ładujący

  2. /home : Zawiera katalogi domowe użytkowników.

  3. /bin : Tutaj znajdują się wszystkie wykonywalne pliki binarne i polecenia używane przez wszystkich użytkowników w systemie.

  4. /sbin : Zawiera systemowe pliki binarne wykonywane zwykle przez administratorów systemu.

  5. /lib : Zawiera biblioteki systemowe, które obsługują pliki binarne w / bin i / sbin.

  6. /etc : Zawiera pliki konfiguracyjne dla sieci, czasu rozruchu itp.

  7. /dev : Zawiera pliki urządzenia, tj. USB, urządzenie końcowe lub inne urządzenie podłączone do systemu.

  8. /proc : Zawiera informacje o uruchomionym procesie.

  9. /tmp: Jest to katalog tymczasowy, w którym wiele procesów tworzy wymagane pliki tymczasowe. Jest to usuwane przy każdym uruchomieniu komputera.

Aby uzyskać więcej informacji, link Thegeekstuff doskonale wyjaśnia ogólny system plików systemu Linux.

Mt.
źródło
20

\Usersjest równoważne z /home. Nazwa /usrjest historycznym artefaktem.

Połączone odpowiednik \Windowsi \Program Filesto połączenie /bin, /boot, /etc, /lib, /sbin, /tmp, /usri /var. Linux i Windows różnie dzielą zainstalowane oprogramowanie. Windows rozróżnia system operacyjny i programy towarzyszące. Linux nie czyni tego rozróżnienia w ten sam sposób; większość, jeśli nie całe oprogramowanie, pochodzi od Ubuntu (dystrybutor) i jest instalowane w tej samej hierarchii katalogów, a ponieważ oprogramowanie jest śledzone przez menedżera pakietów, nie ma potrzeby przechowywania każdego programu we własnym katalogu. W systemie Linux:

  • /etc dotyczy plików konfiguracyjnych systemu: pliki konfiguracyjne, które wpływają na wszystkich użytkowników, niezależnie od tego, czy dotyczą one systemu operacyjnego jako całości, czy określonej aplikacji.
  • /usr dotyczy kodu systemowego i danych (programów, bibliotek, dokumentacji itp.).
  • /vardotyczy danych zmiennych lub tymczasowych: plików tymczasowych, dzienników, baz danych menedżera pakietów, buforów drukarek, plików zapisywania gier itp. Istnieją również /tmppliki tymczasowe, które można usunąć podczas ponownego uruchamiania.
  • /bin, /libaw /sbinkatalogu głównym mają odpowiedniki w /usr. Pliki znajdujące się na zewnątrz /usrsą potrzebne na początku procesu rozruchu. Jest to relikt z czasów, gdy dyski były małe i /usrmogły znajdować się w systemie plików współdzielonym przez kilka stacji roboczych w sieci, tak naprawdę nie jest to przydatne rozróżnienie w większości systemów.
  • /boot zawiera kilka plików, które są potrzebne tylko do uruchomienia systemu operacyjnego, a nie do codziennej pracy.

Istnieją dodatkowe katalogi, które nie odpowiadają żadnemu systemowi Windows:

  • /rootto katalog domowy użytkownika root. Użytkownik root to konto administratora niepowiązane z żadnym konkretnym użytkownikiem; to użytkownik, którego zmieniasz podczas uruchamiania sudo. Ubuntu nie pozwala domyślnie zalogować się rootowi.
  • /mediai /mntsą punktami montowania: tam można zobaczyć systemy plików innych systemów operacyjnych i dysków zdalnych. Odpowiednikiem systemu Windows są inne litery dysków.
  • /proci /syspokaż informacje o systemie. W systemie Windows trzeba przedzierać się przez menu lub wywoływać polecenia systemowe lub instalować programy innych firm, aby zobaczyć te informacje.

Ubuntu, podobnie jak inne dystrybucje Linuksa, ogólnie przestrzega standardu Linux File System Hierarchy Standard .

Gilles
źródło
5

Ubuntu (jak wszystkie systemy podobne do UNIX) organizuje pliki w hierarchicznym drzewie, w którym relacje są rozważane w zespołach dzieci i rodziców. Katalogi mogą zawierać inne katalogi, a także zwykłe pliki, które są „liśćmi” drzewa. Dowolny element drzewa może być odnośnikiem według nazwy ścieżki; bezwzględna nazwa ścieżki zaczyna się od znaku / (identyfikującego katalog główny, który zawiera wszystkie inne katalogi i pliki), następnie wymieniony jest każdy katalog potomny, który należy przejść, aby dotrzeć do elementu, każdy oddzielony znakiem /.

Względna nazwa ścieżki to taka, która nie zaczyna się od /; w takim przypadku drzewo katalogów jest przemieszczane, zaczynając od określonego punktu, który zmienia się w zależności od kontekstu, zwanego bieżącym katalogiem. W każdym katalogu znajdują się dwa specjalne katalogi o nazwie. i .., które odnoszą się odpowiednio do samego katalogu i do jego katalogu nadrzędnego.

Fakt, że wszystkie pliki i katalogi mają wspólny katalog główny, oznacza, że ​​nawet jeśli w systemie znajduje się kilka różnych urządzeń pamięci masowej, wszystkie są widoczne jako katalogi gdzieś w drzewie, po zamontowaniu w żądanym miejscu

Znajdź przykłady i więcej informacji tutaj :

stephenmyall
źródło