О файлах линукс, в общем
Бессмысленно считать, что файлы в ПК это не самая важная часть, поскольку все данные пользователей хранятся именно в файлах. И тем более когда речь идёт о UNIX-подобных операционных системах, где через файлы делается буквально всё. А именно обеспечивается доступ к периферийным устройствам, дисковым накопителям, принтерам и т.д.
Организация порядка в файловой системе компьютера, это важный и во многом однотипный и даже стандартизированный процесс для всех unix систем. Любому человеку, чтобы пользоваться компьютером, необходимо понимать организацию пространства на физических дисках, т.е. в каких каталогах, расположены те или иные файлы: как собственные, так и системные.
Понимание универсальных принципов системы, всегда будет намного важнее, зазубривания любого из пользовательских интерфейсов, какого-либо дистрибутива. И каждый усвоенный пользователем инвариантный принцип, который применим во всех unix или во всех gnu/linux системах, на вес золота.
Проведём паралель с файлами ОС от Microsoft.
Сначала dos, а потом и windows вместе с IBM быстро заполонили нишу ПК для рядового пользователя. И с ними мы привыкаем к придуманной абстракции, где тома дисков, называют латинскими буквами ...C,D,E....
Тогда для многих из нас, кто знаком с windows и dos, эти буквы стали выполнять роль имён дисков т.е. их адресов.
Вместо подобного именования томов, в семействе систем Unix(linux,bsd, macos), выступает в чём-то похожая, но совершенно другая адресация томов.
проще говоря: Содержимое всех дисков становится доступным через определённые каталоги.
Эти каталоги создаются суперпользователем, и они служат пользователям, адресами к содержимому томов. Адреса таких каталогов в unix системах называют точками монтирования.
Стоит обратить внимание на то, что в адресации unix-систем, используются именно простой слэш "/", такой же как в браузере для адресов интернета, а не обратный "\" как принято в продуктах от microsoft.
Итак: в bsd и linux, для монтирования физических накопителей, большинством принято использовать следующие пути:
/media/run/UserName/имяраздела
для съёмных дисков, флэшек и оптических приводов, чаще всего используется каталог /run/media/
Не запрещается для этих целей использовать и любые другие каталоги. Но сразу обратите внимание и запомните, что регистр имён, в отличии от среды microsoft, для Linux имеет непосредственное значение. Например /MNT и /mnt это два совершенно разных каталога, а также и /Mnt, /mNt, /mnT, /mNT - всё это будут разными каталогами. Однако для этих целей принято и удобнее помнить всё исключительно в нижнем регистре. (Как создавать свои каталоги и перемещаться по ним...)
Что находится в самом начале пути ко всем файлам линукс
команда показать содержимое каталога
Визуально на самом верху, вначале, или иными словами в корневом каталоге операционной системы, с уникальным именем в виде прямого слэша "/", находятся вообще все каталоги, которые различным способом смонтированы в систему. Тут находятся все диски и устройства, что уже определены в системе: а также все файлы и ПО. И всё, что ещё будет вновь появляться в системе, тоже будет брать начало с одного из этих каталогов.
Посмотрим, что это за имена каталогов, в операционной системе Fedora 34, и кстати во всех дистрибутивах linux, эти каталоги корня почти одинаковы...
Подробнее об этом моменте, и почему это именно так, рассказано в разделе Корневой каталог системы. В этой же статье просто принимаем этот факт, как данность.
Как выглядит корень в терминале, и заодно каталоги c точками монтирования пользователя itdid:
☯
Terminal:
⌕
≡
✕
[itdid@fedora ~]$ ls / backup boot dev home lib64 media opt root sbin sys tmp var bin Desktop etc lib lost+found mnt proc run srv Templates usr [itdid@fedora ~]$ ls /mnt c d dockerzm old sbvl sub test tomdata Zoneminder [itdid@fedora ~]$ ls /run/media/itdid Ventoy
Поэтому чтобы отличать одно от другого, в этом вопросе есть определённый порядок. У имён корневых каталогов gnu/linux имеется своё предназначение, предложенное и принятое сообществом разработчиков, и пользователей.
В других операционных системах тоже существует своебразный порядок. Например в OS для MAC, точки монтирования томов всех дисков, находятся в подкаталогах по адресу /volumes/..... В устройствах с OS Android это однотипные каталоги /mnt и(или) /storage .В OS от Microsoft, подобием точек монтирования являются каталоги c:\, d:\, e:\, f:\, ...
В Windows эти буквы дисков представляют различные устройства хранения. В Linux же все устройства хранения данных подключены к единому корню - иерархии файловой системы. Таким образом, каталог /home может находиться на отдельном жёстком диске, или каталог /mnt/privet может являться файловой системой, сетевого диска(с другого компьютера)... Обычный пользователь, как правило, этого не знает. Но при желании и обладая соответствующим пониманием, он всегда сможет увидеть истинное положение вещей...
Основное отличие систем семейства Unix на этом поприще, это полный контроль и свобода для монтирования своих разделов по собственному разумению, если конечно у вас есть права root.
Ещё в DOS имена файлов почти всегда имели суффиксы (например, .txt для тек- стовых файлов или .docx для файлов Word). Трёхсимвольные суффиксы иногда можно применять и в Linux, однако они не имеют особого значения. Они полезны скорее для визуальной идентификации типа файла.
Но многие приложения и из окружения Linux используют эти суффиксы файлов для определения содержимого последних, и выставлению им соотвествующих значков в графической оболочке.
Однако в Linux расширения команд DOS, такие как .com, .exe и .bat, не всегда означают исполняемый файл. (Исполняемость файлов в Linux определяют флаги прав доступа.)
О правах доступа к файлам, каталогам и манипуляциях с ними смотрите здесь. Если кратко, то у каждого пользователя, в его личном пространстве есть право не только разрешать или запрещать доступ к своим файлам, но и делать, или не делать их исполняемыми с помощью установки разрешений.
Все основные системные функции, можно настроить только с правами root, этот механизм многоярусного разграничения прав, является одним из фундаментальных принципов защищённости и надёжности системы в целом.
Итак, чтобы быстро понять в каких именно точках монтирования находится содержимое наших томов, в текущий момент, в bsd и linux системах.
Есть разные утилиты, которые выполняются в консоле.
Рекомендую сразу опробовать эти две, с указанными ключами:
lsblk -f
Вот как выглядит в терминале например Centos 7:
☯
Terminal:
⌕
≡
✕
[11:28:14 root@centos7:/] # df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 1.9G 8.9M 1.9G 1% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/mapper/centos-root 78G 5.6G 72G 8% / /dev/sda1 997M 260M 737M 27% /boot tmpfs 379M 0 379M 0% /run/user/1000 [11:28:18 root@centos7:/] # [11:28:21 root@centos7:/] # [11:28:21 root@centos7:/] # lsblk -f NAME FSTYPE LABEL UUID MOUNTPOINT sda ├─sda1 xfs 44e5d762-7957-4c35-afca-de806b2d5f40 /boot └─sda2 LVM2_member ljQvhs-xzfL-ba6a-316w-YpfH-BSVk-nKnKZA ├─centos-swap swap b794b19d-4b5f-400a-8507-dca1c409da86 [SWAP] └─centos-root xfs 8c99abdd-12c1-4e2b-beef-f3c20b841aab / [11:28:30 root@centos7:/] #
Давайте разберёмся с этим более основательно:
По обыкновению все основные тома и их точки монтирования, указываются суперпользователем при установке OS. Монтирование дополнительных дисков, которые никак не учавствуют в загрузке системы происходит уже в процессе работы. Все подключаемые при загрузке разделы указаны в файле конфигурации /etc/fstab.
посмотрим и его содержимое сразу
Вот как это выглядит в терминале той же Centos 7:
☯
Terminal:
⌕
≡
✕
[11:28:30 root@centos7:/] # cat /etc/fstab # # /etc/fstab # Created by anaconda on Wed Feb 25 04:09:34 2015 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/mapper/centos-root / xfs defaults 1 1 UUID=44e5d762-7957-4c35-afca-de806b2d5f40 /boot xfs defaults 1 2 /dev/mapper/centos-swap swap swap defaults 0 0 #VAGRANT-BEGIN # The contents below are automatically generated by Vagrant. Do not modify. vagrant /vagrant vboxsf uid=1000,gid=1000,_netdev 0 0 #VAGRANT-END