Записки IT специалиста
Linux — начинающим. Часть 4. Работаем с файловой системой. Теория
- Автор: Уваров А.С.
- 21.01.2016
Умение работать с файловой системой — один из наиболее важных навыков для начинающих. Действительно, о какой работе с системой может идти речь, если вы не знаете где и какие системные файлы расположены, не можете свободно перемещаться по дереву каталогов и выполнять элементарные операции с файлами? Тем более, что эти вопросы в руководствах обычно не поднимаются, предполагая, что читатель обладает необходимым минимумом знаний и умений. Поэтому очередная часть нашего цикла будет посвящена именно работе с файловой системой.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Перед тем как начать, вспомним, что такое файловая система. Прежде всего, это порядок, определяющий способ организации, хранения и именования информации на устройствах хранения, а только потом практическая реализация этого порядка. Т.е. первичен некий свод правил: что где лежит, как называется и т.д. и т.п., а практические реализации файловых систем, например, NTFS или ext4, это технический способ организации информации на определенном типе носителя в соответствии с принятыми правилами.
За примерами далеко ходить не надо, каждый пользователь Windows знает, что файлы лежат в папках, папки на разделах (логических дисках), а систему следует искать в папке Windows системного диска. Точно также любой Linux администратор будет искать настройки в /etc, логи в /var/log, а свои собственные документы в /home.
Так как большинство начинающих Linux администраторов уже имеют достаточный опыт работы с файловой системой Windows, то прежде всего мы рассмотрим, что общего у двух систем, а чем они отличаются. Понимание этих моментов поможет по максимуму использовать уже имеющийся опыт, в тоже время, не совершая глупых ошибок.
Структура файловой системы
Начнем с привычного и понятного.
В основу файловой системы Windows положен диск, символизирующий собой отдельное устройство хранения информации. При этом каждый диск содержит свою собственную файловую систему, корень которой составляет он сам и обозначается буквой. Т.е. запись вида C:\ — обозначает корень файловой системы на диске С, а D:\Работа — папку в корне файловой системы диска D. Подключая к системе новый носитель информации мы получаем еще одну или несколько файловых систем.
Это одна из самых больших привычек: подключили накопитель — в системе появился новый диск, если это не так, то накопитель либо не определился, либо неисправен.
В Linuх концепция принципиально иная. Вспомним: все есть файл, дисковые накопители — это тоже определенный тип файла. Кроме того, файловая система Linuх иерархична, т.е. имеет один единственный корень, обозначаемый символом /.
Этот момент вызывает у новичков множество непониманий. Но на самом деле нет ничего сложного, файловая система в Linux просто организована по-другому, но при этом она по-своему стройна, логична и понятна.
Давайте еще раз рассмотрим схему с Windows. На ней имеется один физический диск для системы, второй для пользовательских данных и компакт диск с музыкой. А теперь взглянем на другую схему, где мы показали аналогичную организацию размещения данных в среде Linux.
У нас также имеется системный диск, на котором расположен корень файловой системы и все системные папки. Пользовательские данные все также располагаются на втором физическом диске, но в системе вы его не увидите. Почему? Да потому что в файловой системе Linux такого понятия нет. Новички на этом месте обычно впадают в панику, считают что диск не определился и начинают судорожно искать его где можно и где нельзя.
Но диск, с точки зрения Linux, это тоже файл и может быть расположен в любом месте файловой системы. В нашем случае никто не мешает поместить его на место папки /home, где располагаются пользовательские данные. Такое действие называется монтированием, а место файловой системы, к которому присоединен носитель — точкой монтирования. Таким образом папка /home целиком окажется на втором жестком диске, что будет в какой-то мере аналогично переносу пользовательских данных на диск D.
Съемные носители, такие как компакт-диски, флешки и т.п. в графической среде монтируются автоматически в предопределенную директорию /media, а в рабочем окружении появляется ярлык, что делает работу с ними неотличимой от Windows. В серверной среде вам потребуется монтировать съемные носители вручную, также вы можете выбрать произвольную точку монтирования, но лучше не изобретать велосипед, а использовать /media.
Еще один момент, связанный с иерархичностью файловой системы Linuх — это неизменность путей к данным при изменении физической структуры дисков. Простой пример: у вас есть большая коллекция музыки, которую вы решили вынести на отдельный жесткий диск. В Windows все просто: купили новый диск, подключили, скопировали. Но есть один недостаток. Если до этого пути к музыке были D:\Музыка, то стали E:\Музыка и все ранее созданные ярлыки, плейлисты и т.п. стали неверны.
В Linux процесс выглядит немного посложнее: новый диск временно монтируется, скажем, в /mnt, затем на него переносится содержимое папки /home/Музыка, после чего он монтируется на постоянной основе в точку /home/Музыка. В итоге наша коллекция лежит на отдельном жестком диске, но все плейлисты как работали с /home/Музыка так и продолжают работать.
Эту возможность трудно переоценить, особенно когда надо вынести на отдельный раздел не коллекцию музыки, а базу почтового сервера или содержимое хранилища виртуальных машин.
Имена файлов и расширения
Имена файлов и папок в Linux ограничены длинной в 256 символов и запретом на / (слеш). Отдельно следует упомянуть о символах . (точка) и
(тильда), точка перед именем файла или директории добавляют ему атрибут «скрытый», а тильда после имени добавляет атрибут «архивный» и также делает файл скрытым. Например, .file — скрытый файл, а file
Но это не говорит о том, что можно называть файлы, как вам нравится, без оглядки на иные системы, прежде всего Windows. Допустим, мы решили вопреки всем правилам назвать файл <Правила?>, в Linux нам никто не помешает этого сделать, но уже попытавшись скопировать его на флешку с FAT32 нас постигнет наказание, имя файла превратится в набор подчеркиваний.
Если передать его по SSH то ситуация будет немного получше, подчеркиваниями заменятся только запрещенные символы, а просто перетащив файл из окна виртуальной машины мы получили третий вариант именования файла.
Поэтому, если вы не хотите превращения имени вашего файла в нечто совершенно неожиданное, то не используйте в именах символы:
Также не злоупотребляйте служебными символами в начале имени, например, никто не мешает создать вам файл с именем -text, однако при попытке скопировать его в консоли вы получите неожиданный результат:
Еще одна важная особенность — Linux регистрозависимая система, это означает, что file.txt, File.txt и file.TXT — три разных файла!
Пока вы работаете с такими файлами в среде Linux проблем не будет, но если мы их попытаемся скопировать на флешку FAT32, то сразу возникнут затруднения.
Но это цветочки, ягодки будут тогда, когда вам понадобиться перенести на Windows платформу, скажем, веб-сайт со всем содержимым, куда на протяжении длительного времени заливались многочисленные image.jpg, Image.jpg или image.JPG.
Поэтому примите к сведению и постарайтесь соблюдать еще одно простое правило: все имена файлов набирать только в нижнем регистре, верхний регистр допускается там, где он уместен, например, в именах собственных. Также не забывайте о спецсимволах. Почему? Просто посмотрите на скриншот ниже:
Отдельный разговор — это пробелы в именах файлов. Такая практика не запрещается, но считается в профессиональных кругах дурным тоном. По возможности избегайте таких имен.
Следующая особенность Linux-систем — это расширения файлов. В Windows тип файла полностью определяется его расширением, от которого также зависит дальнейшее поведение системы при работе с таким файлом. Все знают, что для того, чтобы скрипт мог запускаться, ему нужно присвоить расширение bat или cmd. В Linux поведение системы в отношении того или иного файла зависит от его типа, а для возможности запуска файл должен иметь установленный атрибут «исполняемый».
Однако это не говорит, что Linux игнорирует расширения файлов. В графической среде, для удобства пользователя, расширения точно также ассоциируются с приложениями, как и в Windows. Но есть и отличия, вы можете дать файлу несуществующее расширение или оставить его без расширения вообще, система правильно определит тип содержимого и сопоставит его с программой. А вот присвоив ему зарезервированное расширение вы просто сопоставите файл программе, без учета его содержимого.
Как видим документ LibreOffice успешно определяется последним невзирая на «левое» или отсутствующее расширение, но присвоив ему расширение jpg, мы сопоставим его программе просмотра изображений и получим ошибку при открытии.
С изображением и иным медиаконтентом связана еще одна особенность, если у файла есть расширение, то система не будет определять его реальное содержимое и будет пытаться открыть его так, как указано в расширении. Простой пример: мы переименовали файл jpg в png, после чего получили ошибку при попытке его открыть, в тоже время тот же самый файл без расширения вообще открывается нормально.
В Windows jpg переименованный в png (и наоборот) открываться будет нормально, разве что специализированный софт (например, Photoshop) станет ругаться. Поэтому если у вас в Linux перестали открываться мультимедийные файлы, которые нормально открываются в Windows, попробуйте просто удалить им расширение, чтобы система самостоятельно определила содержимое. Для примера мы специально удалили расширения у файлов различных типов, что из этого вышло можно увидеть ниже:
Конечно не со всеми типами файлов все гладко, так документы формата MS Office 2007 и выше (docx, xslx и т.п.) будут определяться как zip-архивы, которыми на самом деле и являются, но мы думаем, что ситуация, когда вы получите офисный документ без расширения на практике вам не встретится.
Жесткие и символические ссылки
Начав работать с Linux вы обязательно столкнетесь с этим типом файлов. Они не имеют прямого аналога в файловой системе Windows и поэтому на них стоит остановиться подробнее.
Начнем с символических ссылок, в первом и достаточно грубом приближении они напоминают ярлыки Windows, это специальный тип файла, который служит указателем на другой файл. Но при этом, в отличии от ярлыка, воспринимается системой прозрачно, т.е. не как файл ярлыка, а как файл типа, на который указывает ссылка. Проще говоря, мы не можем подсунуть Windows приложению ярлык на библиотеку вместо библиотеки, а в Linux это общепринятая практика.
Разберем устройство символических ссылок подробнее, в дальнейшем это поможет понять их отличие от жестких ссылок и лучше понять сферу их применения. Как известно файл (или каталог) есть ничто иное, как некая именованная область на диске. Соответствие имени файла областям диска хранится в специальной таблице файловой системы (inode в Linux, MFT или FAT в Windows), т.е. файл — это указатель в inode на определенную область данных на диске.
Символическая ссылка — это отдельный файл, со своим inode, который указывает на изначальный файл. Если первоначальный файл будет удален или перемещен, символические ссылки останутся, но окажутся бесполезными. В тоже время мы можем как угодно перемещать символические ссылки или удалять их, что никак не скажется на первоначальном файле.
Символические ссылки широко применяются в случаях, когда один и тот-же файл должен быть доступен под разными именами или в разных местах, но при этом его содержимое не должно меняться. Например, некое приложение требует библиотеку lib-1.0.1.so, в то время как есть совместимая библиотека lib-1.0.5.so, в этом случае создаем символическую ссылку на lib-1.0.5.so с именем lib-1.0.1.so и проблема решена. Другой случай, приложение требует lib-1.0.5.so, которая есть в системе, но ищет ее в другом месте, в этом случае делаем символическую ссылку с таким же именем, но в нужное расположение.
Визуально символические ссылки можно определить по значку ярлычка в графическом окружении или по символу @ перед именем файла в mc (но, если вы создадите файл с началом имени на @ — символической ссылкой он не станет).
Другое применение, это файлы настроек. Например, веб-сервер Аpache содержит два набора директорий: с доступными модулями и настройками, и применяющимися в текущий момент. Для того, чтобы подключить модуль или настройку достаточно сделать символическую ссылку из одной директории в другую, надо выключить — удаляем символическую ссылку. Сам файл модуля или настроек остается на своем месте и может быть использован в дальнейшем.
Символические ссылки можно создавать не только на файлы, но и на каталоги. Также нет ограничения на физическое расположение символических ссылок в пределах одной физической файловой системы (одного раздела).
Жесткие ссылки. Это принципиально иная сущность. Жесткая ссылка создает еще одну запись в inode файла, т.е. по сути является еще одним его именем, а внешне является полной копией первоначального файла, определить при этом где файл, а где жесткая ссылка практически невозможно. Отличие жесткой ссылки от копии заключается в том, что несмотря на разные имена, это один и тот-же файл и, если изменить одно из его имен — изменятся остальные. Также файл физически существует до тех пор, пока на него есть хоть одна ссылка (первоначальный это файл или символическая ссылка — значения не имеет).
Для чего могут понадобиться жесткие ссылки? Самое распространенное их применение, это создание полных копий файла без лишних затрат дискового пространства. Например, инсталляционные пакеты. Допустим нам надо выложить на FTP несколько вариантов ПО, в каждый из наборов которого входят некие общие пакеты и документация, причем нужна синхронизация между этими файлами, например, если мы внесли изменения в документацию, это должно отразиться во всех наборах. Жесткие ссылки отлично решают эту задачу.
В тоже время жесткие ссылки создают дополнительную путаницу, особенно если вам нужно удалить файл во всех местах использования. Поэтому подходите к использованию жестких ссылок с осторожностью и не злоупотребляйте ими, так как в большинстве случаев символических ссылок более чем достаточно.
Жесткие ссылки, так как являются дополнительной записью в inode, могут использоваться только в пределах одного физического раздела. Также спецификации POSIX запрещают создание жестких ссылок для каталогов.
Права доступа
Еще одним неотъемлемым атрибутом любой файловой системы являются права доступа к файлам и папкам. Linux унаследовал классическую UNIX-систему прав, они не так гибки, как хотелось бы, но обеспечивают приемлемый уровень гибкости и безопасности для простых систем.
Права доступа к файлу (а как мы помним, в Linux все есть файл) хранятся в специальном 16-битовом поле атрибутов файла:
Тип объекта | Особые признаки | Права доступа | |||||||||||||
SUID | SGID | sticky | Пользователь | Группа | Остальные | ||||||||||
# | # | # | # | s | s | t | r | w | x | r | w | x | r | w | x |
Первые четыре бита устанавливают флаг типа объекта, они задаются при создании файла и не могут быть изменены. Флаг может иметь следующие значения:
- — — Отсутствие флага — обычный файл
- l — Символическая ссылка
- d — Директория
- b — Блочное устройство
- c — Символьное устройство
- p — Канал, устройство fifo
- s — Unix-сокет
Следующие три бита хранят особые признаки, влияющие на запуск исполняемых файлов и некоторые иные права, к ним мы вернемся несколько позже. И наконец следующие девять бит, разделенные на блоки по три бита содержат права доступа к файлу или директории.
Каждый файл в UNIX должен иметь владельца (пользователь, user), группового владельца (группа, group) и остальных пользователей (остальные, other), каждый из этих пользователей может иметь права на чтение (r), запись (w) и исполнение (x).
Применительно к каталогам флаги имеют несколько иной смысл: r — право получения имен файлов в каталоге (но не их атрибутов), x — право получения доступа к файлам и их атрибутам, w — право манипулировать именами файлов, т.е. создавать, удалять, переименовывать. Минимальный разумный набор прав на каталог: rx-, так как только r позволит получить только имена файлов, но не их тип, размер и т.п. Ниже показан пример папки с набором прав r—.
Как нетрудно заметить, w без х не имеет никакого смысла и равносильно его отсутствию.
Запись прав может производиться как в символьной, так и в числовой форме, для этого используют двоичное или восьмеричное (что удобнее) значение установленных битов.
OCT | BIN | Символьное | Права на файл | Права на каталог |
0 | 000 | — | отсутствие прав | отсутствие прав |
1 | 001 | —x | право на исполнение | право на доступ к файлам и атрибутам |
2 | 010 | -w- | право на запись | отсутствие прав |
3 | 011 | -wx | право на запись и исполнение | все права, кроме получения имен файлов |
4 | 100 | r— | право на чтение | право на получение имен файлов |
5 | 101 | r-х | право на чтение и исполнение | право на получение имен файлов и доступ к ним |
6 | 110 | rw- | право на чтение и запись | право на получение имен файлов |
7 | 111 | rwx | все права | все права |
В то время, как в системе используются преимущественно символьные обозначения, для целей администрирования обычно используются цифровые восьмеричные значения. Потому что проще, быстрее и удобнее написать, что права на файл должны быть 644, а не rw-r—r—.
В тоже время символьная запись позволяет быстро оценить реальный набор прав, а не вспоминать, что значит 755. Стандартные права для вновь создаваемых файлов — 664, папок — 775, исключение — файлы и каталоги, созданные с правами суперпользователя, они получают 644 и 755 соответственно.
На практике из всех сочетаний флагов доступа реально используются только 0, 4, 5, 6, 7 для файлов и 0, 5, 7 для папок.
Разобравшись с основными правами перейдем к особым признакам, таких три:
OCT | BIN | Наименование | Действие |
1 | 001 | sticky | удалить файл может только владелец или root |
2 | 010 | SGID | файл запускается на исполнение с правами группового владельца |
4 | 100 | SUID | файл запускается на исполнение с правами владельца |
Начнем с младшего бита, его установка означает установку sticky-бита для каталога, установка данного флага для файлов в современных системах игнорируется. Дословно sticky обозначает «липкий», что довольно хорошо соответствует его смыслу. После установки данного флага удалить файл из каталога может только его владелец или суперпользователь, даже если на файлы и папку стоят права 777.
Эта опция может быть использована для организации файловых серверов типа «файлопомойка», когда нужно организовать доступ для всех, без разбора, но исключить возможность случайного или преднамеренного удаления чужих файлов. Установить sticky-бит может только суперпользователь, снять — суперпользователь или владелец каталога.
Опции SUID и SGID позволяют любому пользователю запускать файл на исполнение с правами его владельца или группы. Для чего это нужно? В обычных условиях файл запускается с правами текущего пользователя, что не всегда достаточно для его работы. Например, таким образом работает утилита passwd, нам нужно чтобы пользователь имел возможность изменить свой пароль без повышения прав, но данная операция требует прав суперпользователя. Как быть? Использовать признак SUID. Если мы проверим права на утилиту, то увидим запись rwsr-xr-x или 4755.
При установке признаков SUID и SGID они заменяют символ x на s в соответствующей группе символьного представления или записываются перед основными правами в восьмеричном виде. Вообще-то в цифровом виде все права следует записывать в четырехзначном формате, так как если особые признаки не установлены, то это 000 BIN или 0 OCT. Т.е. правильно писать не 777, а 0777, но обычно для краткости первый ноль опускают.
Если установлены несколько признаков, то записывается восьмеричное число аналогичное установленным битам в двоичном формате, например, SUID + sticky это 101 BIN или 5 OCT. Установленный sticky-бит заменяет x на t в группе other. Ниже показан каталог с правами 7775 или rwsrwsr-t, что соответствует установке на него SUID, SGID и sticky-бит одновременно.
Данная запись сделана нами исключительно в тестовых целях, так как установка SUID для каталога не имеет смысла, а установка SGID приведет к тому, что групповым владельцем создаваемых в нем файлов будет группа владельца каталога, а не группа создавшего его пользователя, как происходит по умолчанию. Также, ввиду потенциальной опасности, игнорируется установка SUID и SGID для скриптов.
В графической среде установка прав разнится в зависимости от выбранного настольного окружения, например, в Unity настройки выполнены в понятной пользователю форме, но особые признаки не отображаются и не могут быть установлены, а для папок присутствует бесполезный набор прав r—.
В XFCE не потрудились задать понятные и логичные наборы для файлов и папок, ограничившись стандартным перечислением, включая бесполезные -w- и -wx, также отсутствует явное указание признака «исполняемый», вместо этого флаг x автоматически добавляется к любому набору прав владельца.
И наконец KDE сочетает достаточно лаконичный основной набор прав с возможностью установки признака «исполняемый» для файлов и sticky-бит для папок с возможностью явно указывать особые признаки в дополнительных настройках.
В любом случае следует помнить, что графический интерфейс не является основным средством администрирования Linux, а представляет надстройку над средствами командной строки. В следующей части нашей статьи мы как раз уделим внимание приемам работы с файловой системой Linux в консольной среде.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Дополнительные материалы:
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:
Или подпишись на наш Телеграм-канал:
Монтирование в Linux-системах, что это такое и зачем нужно
Здравствуйте, уважаемые читатели сайта «Заметок Сис.Админа». Сегодня мы продолжим приобщать вас к прекрасному внутреннему миру Linux-систем и познакомим (как Вы уже наверняка поняли из названия статьи) с монтированием в операционных системах «под управлением» Linux.
И, само собой, постараемся преподнести информацию в облегченном варианте, т.е. мало будем упоминать командную строку и больше внимания уделять работе в графическом режиме. Ну, а там уж как получится. Ну что ж, нечего тянуть, поехали.
Давайте на секундочку представим такую ситуацию. Вы решились на установку Linux второй операционной системой вместе с Windows . Установили, — запустили её, — а потом захотели посмотреть на разделы Windows глазами линуксоидов :). И, — Опа!, — тут вас может поджидать небольшое разочарование, ибо Вы этого диска (раздела) не видите (рассматривается простой случай, когда у вас установлен драйвер ntfs-config для работы с ntfs -разделами, и система видит Ваши разделы, но не примонтировала их по каким-либо причинам).
Далее, чтобы начать его использовать, нам потребуется подключить или, по-другому, смонтировать эту невидимку. Для начала вспомним одну из предыдущих статей, — «Корневая файловая система Linux, основные каталоги корневой файловой системы, основные команды для работы с файлами и каталогами», где мы немного завуалировано говорили, что файловая система (ФС) Linux очень тесно связана с монтированием, а конкретнее — упоминалось, что ФС это одно большое дерево с корневой директорией / (слеш). И монтирование корневой ФС является частью процесса инициализации ядра. В процессе загрузки операционной системы происходит последовательное (а не абы какое) присоединение всех видимых (да и невидимых тоже 🙂 ) системой устройств.
В современных дистрибутивах Вы не увидите самого процесса загрузки ядра, ибо всё это происходит за красивым фоном. Но иногда эта информация бывает очень полезна, потому как помимо данных о примонтированных устройствах выводятся различные полезные сообщения ядра — об имеющемся оборудовании; о протоколах и технологиях, которые поддерживаются; а самое главное и ценное — об ошибках, если таковые имеются. Чтобы увидеть все сообщения загружаемой системы, наберите команду:
Загрузка ядра — отдельный разговор, сейчас мы не будем останавливаться на этом, просто введите вышеуказанную команду и внимательно изучите все, что выведется на экран монитора. Уверяю, вы найдете там много чего «вкусненького».
Давайте разбираться дальше. Вот ядро Linux опознало все ваши устройства, на которых находятся данные. И что же потом? А потом оно просто обязано предоставить нам с Вами какое-то внешнее связующее звено для дальнейшей работы с этими устройствами. И как не парадоксально, но в роли таких звеньев будут выступать файлы-устройств , которые создаются в каталоге / dev . Только так мы с вами сможем получить доступ к файлам и каталогам, которые располагаются на нашем, скрытом от взора, диске или дисках – это у кого как. У многих может возникнуть резонный вопрос — а зачем так заморачиваться и делать это руками, если современные системы Linux справляются с этим автоматически? Поверьте, иногда это нужно, встречаются отдельные случаи, когда система Linux не может автоматически подсоединить диск в силу каких-то причин, связанных со сбоем диска, вирусами, которыми заражены NTFS/FAT -разделы или из-за чего-то еще противоестественного. И тогда настоящие системные администраторы (или очень умные пользователи ;)) делают это руками с помощью команды:
Что дает примерно такой результат:
Давайте немного внесём ясности в то, что видим на рисунке. Мы наблюдаем самый настоящий процесс монтирования на начальной стадии загрузки системы. Первой присоединилась псевдофайловая система (напомним, что она используется для предоставления информации о процессах) , потом примкнула виртуальная файловая система / sysfs , которая экспортирует в пространство пользователя информацию ядра Linux об устройствах и драйверах, присутствующих в системе. Далее в каталог / dev монтируется tmpfs . Это временное файловое хранилище, предназначенное для монтирования ФС , с той лишь разницей, что размещается она в ОЗУ вместо физического диска, т.е., по-другому, это RAM-диск. Здесь создаются файлы тех устройств, которые присутствуют в системе и которые могли бы создаваться «на лету» – к таким можно отнести подключения по USB (или когда подгружается динамический модуль с драйвером устройства).
И так далее, и тому подобное, т.е всё присоединяется последовательно, по порядку. Чтобы не пугать вас заумной терминологией, давайте спустимся с небес на землю и продолжим наш разговор о монтировании. Последним замыкающим звеном выступают: диск ( /dev/sdа ) и сменное USB -устройство (флешка /dev/sdb ). Я думаю, не надо подсказывать Вам, что если на диске (или каком-либо другом сменном устройстве) не один раздел, а несколько, то прицепятся все имеющиеся разделы и отличие будет только в имени файла-устройств . Например, если на диске 5 разделов, то файлы-устройств будут называться /dev/sda1, /dev/sda2, /dev/sda3, /dev/sda4, /dev/sda5 .
Вывод:
Сколько разделов на съемном диске, столько и будет подключено файлов-устройств.
Этот же вывод команды можно получить, если откроем содержимое файла /etc/mtab (в некоторых системах Linux файл называется / etc/mnt/tab )
Давайте перейдем к практике. Посмотрите, какие из устройств подключены в данный момент к компьютеру, с помощью команды:
У Вас вывод может оказаться совсем другой, нежели в приведенном ниже рисунке:
Просим не забывать, что процесс монтирования/размонтирования выполняется с привилегиями root , о чем говорит значок # и sudo
Далее. Из рисунка видно, что в наличии имеется только один жесткий диск, где есть три точки монтирования — это файл подкачки swap, каталоги root и home (при установке системы мне было удобнее разбить диск именно так).
С вероятностью на 90 процентов уверен, что на Вашем компьютере есть не только один диск, а их может быть несколько и они могут быть поделены на разделы. Чтобы получить доступ к этим разделам, нам нужно подмонтировать их к корневой файловой системе и только после этого мы можем обращаться к содержимому этих разделов через точку монтирования.
А теперь перейдем непосредственно к тренировкам. Допустим, что под рукой есть только CD/DVD-ROM. Давайте вот на нём и попробуем.
1. Вставьте диск в привод.
2. Он у вас автоматически определится системой, т.е. примонтируется (см.картинку ниже):
3. Отмонтируйте его командой:
Взгляните на картинку — CD/DVD-ROM размонтирован (о чем свидетельствует отсутствие треугольника рядом), но..
..он виден в системе (т.е определен системой, но не примонтирован), а посему, дабы убедиться в достоверности этого, наберите команду:
Как видите, команда показала что CD/DVD-ROM отсутствует.
А теперь самое интересное, а именно, мы начинаем шаманить с присоединением нашего, так сказать, сидюка обратно. Для этого понадобится шаманский бубен и прямые руки 🙂
1. Чтобы особо не мучиться с правами суперпользователя, мы примонтируем его обратно в ту же директорию, откуда его и извлекли, а именно в /run/media/имя_пользователя . Почему именно сюда? Всё просто. Каталог /run был задуман как временное хранилище в целях «безопасности», и эта папка ( /run/media/имя_пользователя ) специально остаётся пустой после загрузки системы, так что ничего кроме смонтированных дисков (или других сменных устройств) Вы там не обнаружите (при условии, конечно, что сами что-нибудь не натворите). Но вообще, прежде чем его туда прикрепить, мы должны
2 . Создать директорию — /CDROM
sudo mkdir /run/media/имя_пользователя/CDROM
3. Примонтировать командой
sudo mount -t iso9660 /dev/sr0 /run/media/имя_пользователя/CDROM
-t iso9660 — параметр монтирования, который обычно определяется автоматически, но в некоторых особых случаях этот параметр нужно указать, чтобы система не говорила: «Ой.. Вот ведь какая незадача, что Вы не определили тип файловой системы». В нашем случае тип файловой системы — iso9660 — этим типом определяются все CD- , DVD- диски;
/dev/sr0 — это наш сидюк, откуда взялось это название, легко определить из команды, да хотя бы mount | column -t (или используйте дисковые утилиты, которые есть в любой linux -системе);
/run/media/имя_пользователя/CDROM – обязательно указываемый параметр, а то система не поймет, куда Вы хотите все это присоединить.
В командной строке все уложилось в три строчки 🙂
Аналогичным образом давайте примонтируем флешку:
1. Вставляем флешку в USB
Наша флешка определилась как файл-устройство /dev/sdb1 с именем 3C9B-F329 и с файловой системой FAT32 .
2 . Далее отсоединяем её командой:
И видим примерно следующее:
3. Теперь создаем папку в каталоге /run/media/имя_пользователя/
sudo mkdir /run/media/имя_пользователя/3C9B-F329
sudo mount /dev/sdb1 /run/media/имя_пользователя/3C9B-F329
Получаем на выходе примерно следующее:
Так вот. На протяжении всей статьи Вас подводили к наиважнейшему выводу: монтированием разделов мы «мягко» объясняем системе, как можно добраться до данных и сделать их доступными для использования в наших целях. Главное здесь, чтобы директория или поддиректория существовала, иначе, если её не будет, то весь наш процесс завершится ошибкой монтирования.
Обращаю внимание:
В процессе монтирования фактически монтируется ФС какого-либо устройства (или другого ресурса). Принято говорить о «монтировании устройства», хотя на самом деле подразумевается, что речь идет именно о «монтировании файловой системы устройства».
Впрочем, хватит терминала, переходим к более простым способам с использованием графических инструментов.
Существует множество утилит и программ для работы с дисками, разделами (самая простая утилита, — это автоматическое монтирование, которое выполняет сама система), но есть одно «но».. В каждой Linux -системе эти утилиты свои. Поэтому все мы их просто физически не охватим. Например, в Ubuntu есть встроенная утилита для работы с дисками » Инструмент конфигурации записи на NTFS «, а также можно установить утилиту » Mount Manager «. В » Fedora» же — » palimpsest «, что входит в состав » gnome-disk-utility «.
Ко всему прочему.. Есть общая программа для работы с разделами и дисками в любой Linux -системе — это GParted . Эта программа полностью бесплатна и умеет не только монтировать, но еще и очень, очень многое, но мы не будем рассматривать всё на что она способна, а разберем только две операции. Давайте только кратко, в виде наставительной инструкции:
Как размонтировать раздел с помощью Gparted:
- Запустить саму программу (с правами root )
- Выбрать смонтированный раздел (справа вверху есть выбор разделов — выделен красным прямоугольником).
- Далее выбрать в меню » Раздел — Размонтировать» . Ну или воспользоваться щелчком правой кнопкой мыши по выделенному разделу и пунктом » Размонтировать» . После сего программа отсоединит раздел (в данном случае флешку)
Если операция отсоединения не выполнилась, то скорее всего раздел в данный момент используется другими процессами и поэтому не может быть размонтирован. В этом случае необходимо воспользоваться Live CD Gparted :
Теперь ко второй операции.
Как смонтировать раздел в GParted:
- Запустить программу (с правами root)
- Выбрать ещё не смонтированный раздел (главное, чтобы он у вас был определен системой).
- Далее перейти в » Раздел — Монтировать» и выбрать точку монтирования из списка. Или щелкнуть правой кнопкой мыши по выделенному разделу — » Монтировать» , после чего Gparted смонтирует раздел к указанной точке монтирования.
Если пункт меню » Раздел — Монтировать » не виден (т.е. не активный), значит GParted не знает, к какой точке монтировать раздел. В этом случае необходимо воспользоваться Live CD Gparted .
Но больше всего мне, в общем-то, нравиться утилита в openSUSE (немецкий дистрибутив) и/или её замечательный » Центр управления » (» Параметры системы «) YaST , с помощью которого можно без особых проблем смонтировать/размонтировать все, что только пожелаете.
- Запустите YaST (можно воспользоваться командной строкой с правами root — /usr/bin/xdg-su -c /sbin/yast2 или через графический интерфейс — » Системные параметры — YaST «).
- Зайдите в » Система — Разделы «
Скорее всего, Вас предупредят о том, что эта операция не такая уж безобидная, и Вы понимаете степень вреда, который можно нанести системе, если что-то сделаете не совсем корректно. Но Вы все равно соглашайтесь и нажимайте » Да » .
Теперь откроется окно редактора раздела дисков, где выберите раздел (слева) – «Жесткие диски» , а справа будет выведен список всех дисков, которые подключены в данный момент к Вашему компьютеру. Ищите тот, который Вы хотите присоединить (в нашем случае мы выберем самую последнюю строчку — это флешка) .
Напоминание — не забудьте отсоединить тот диск, с которым будете экспериментировать.
Сделайте это штатными средствами, а именно просто нажмите на значок треугольника в проводнике:
Обратите внимание, что один диск занимает, как минимум, две строчки. Первая — это физическое его наименование и маркировка, а вторая – логический диск (разделы) с файловой системой.
Посмотрите на выделенную строчку — там указан тип файловой системы. У нас это FAT32 .
Выделите свой диск и нажмите на кнопку «Редактировать» , которая располагается внизу окна.
Откроется окно настроек. Проверьте, чтобы стояла галка около пункта «Не форматировать» .
Обычно все диски в Linux монтируют в папку /run/media/имя_пользователя , о чем мы и упоминали выше.
Поэтому в строке » Точка монтирования» впишите такой путь для монтирования Вашего диска: /run/media/имя_пользователя/имя вашего диска (в нашем случае это будет выглядеть так: /run/media/имя_пользователя/3C9B-F329 ).
Как только Вы впишите эту строчку, то сразу станет доступна кнопка » Опции Fstab» . Нажмите на неё, а в открывшемся окне отметьте точкой пункт » ID устройства» и поставьте галочку на » Монтируемый пользователем» . Это нужно для того, чтобы Вы могли пользоваться диском в режиме обычного пользователя, а не только администратора.
Теперь посмотрите на пункт » Значения произвольных опций» . Там найдите текст umask=0002 , и замените 0002 на 0000 (это права доступа к разделу) и согласитесь со всеми изменениями, нажав два раза ОК и Вас вернёт обратно к списку дисков. И, последнее, собственно, — в этом окне нажмите ОК . Программа снова выдаст вам предупреждение, что все изменения сейчас запишутся в файл. Если вы уверены в том что делаете, подтвердите изменения, нажав кнопку » Применить» .
В итоге, если всё было сделано корректно, то зайдя в папку /run/media/имя_пользователя (кстати посмотреть можно и через файловый менеджер, а именно, можете войти в терминал и набрать команду mс ) Вы увидите:
Ура, а вот и наша примонтированная флешка. Можно возрадоваться. Бедная флешка.. Что она только не пережила на момент написания этой статьи.
Послесловие.
Ладно. На этом заканчиваем наше повествование. Оставайтесь с проектом, здесь Вам рады.
Традиционно говорю, что все вопросы, а так же дополнения, мнения, отзывы, критику, благодарности и прочее, Вы можете оставлять в комментариях к этой самой статье.
P.S. За существование данной статьи спасибо члену команды Pantera
Белов Андрей (Sonikelf) alt=»Sonikelf» /> alt=»Sonikelf» />Заметки Сис.Админа [Sonikelf’s Project’s] Космодамианская наб., 32-34 Россия, Москва (916) 174-8226
Что такое точки монтирования в Linux и как их посмотреть
Опытные пользователи Linux знают, что при переустановке операционной системы можно сохранить пользовательские файлы и обращаться к параметрам ядра и блочным устройствам благодаря точкам монтирования. Узнаем, что такое точки монтирования в Linux и как их посмотреть.
Итак, вряд ли для кого-то станет сюрпризом то, что Linux позволяет разбивать накопитель (HDD или SSD) на разделы. Мы можем установить файловую систему без журналирования на раздел с каталогом /boot, отдельную файловую систему для корня и для каталога /home. Количество разделов в данном случае не важно, ведь получить доступ к данным всё равно возможно только через корневой каталог /. Именно в него монтируются все разделы — либо непосредственно в корень, либо в одну из папок, которые и называются точками монтирования.
Посмотреть точки монтирования несложно. Для этого используем команду
Команда mount в Linux.
Нужно отметить, что вывод команды mount не особо удобно читать. Связано это с тем, что snap и flatpack несколько засоряют этот перечень своими точками монтирования. Поэтому воспользуемся командой grep , которая выведет только нужные нам строки. Например, мы хотим посмотреть устройства. Для этого нам надо найти строки, в которых упоминается каталог /dev:
Что касается накопителей, то посмотреть точки монтирования можно и через
Данные команды используются для просмотра информации об устройствах хранения данных, в том числе и о точках монтирования.
Точки монтирования — удобный инструмент настройки структуры каталогов Linux. Прозрачный процесс управления монтированием разделов можно считать преимуществом, которое выгодно отличает Linux от Windows.
Смотрим точки монтирования в Linux
Известное отличие Linux от Windows заключется в предоставлении пользователям возможности прозрачно управлять монтированием разделов диска. В свою очередь жто дает право управлять гибким образом настроить структуру каталогов, использовать несколько файловых систем, где каждая будет выполнять свое предназначение.
Точка монтирования — что это?
Для понимания термина точки монтирования достаточно ознакомиться с аналогией. Представим большое поле, на котором вы желаете высадить овощи. Но потребность есть не в одном, а нескольких сортах, например, картофеля. Чтобы реализовать задачу, поле необходимо поделить на участки, на каждом из них высадить нужный сорт. Когда приходит время собирать урожай, независимо от сорта, картошку следует выкопать и вывезти, а к полю идёт только одна дорога и вся полученная картошка будет вывезена именно по этой дороге. То есть тоже независимо от того, с какого участка был собран урожай.
Теперь перейдем ближе к делу. Допустим, у вас есть один объемный жесткий диск, на который надо записать данные. Фактически это и есть наше поле. Но нужна файловая система без журналирования для каталога /boot, отдельная файловая система для корня и для /home. Поэтому жесткий диск разбивается на разделы. Дальше эти разделы подлежат форматированию в нужную файловую систему. Как на примере различных сортов картофеля. Процесс монтирования это и есть дорога, по которой картофель вывозят с участка. На каком бы из разделов не находились данные, получить к ним доступ можно только с помощью корневого каталога /. Все разделы монтируются сюда, если не к самому корню, то в одну из папок. Такая папка и называется точкой монтирования и её содержимое во время монтирования заменяется на содержимое раздела.
Смотрим точки монтирования
Для просмотра точек монтирования необходимо использовать следующую команду:
С появлением snap и flatpack точки монтирования Linux засорены монтированием различных snap пакетов и их содержимого к файловой системе. Однако здесь можно разобрать и смонтированные жесткие диски. Чтобы отфильтровать только жесткие диски используйте программу grep:
Таким образом можно не просто посмотреть, но и настроить точки монтирования можно с помощью файла /etc/fstab.