Работа с файловой системой ОС Linux




Лабораторная работа 19

1.Цель работы: приобретение практических навыков работы с папками и файлами

2. Краткие сведения из теории:

Файлы и файловая система

Файлы в Linux играют ключевую роль, что не всегда справедливо для других операционных систем. Все данные пользователей хранятся в виде файлов. Помимо этого, файлы в Linux определяют привилегии пользователей, поскольку права пользователя в большинстве случаев контролируются с помощью прав доступа к файлам. Файлы обеспечивают доступ к периферийным устройствам компьютера, включая диски, CD-ROM, принтеры, терминалы, сетевые адаптеры и даже память. Для приложений Linux доступ к дисковому файлу "неотличим" от доступа, скажем, к принтеру.

Наконец, все программы, которые выполняются в системе, включая прикладные задачи пользователей, системные процессы и даже ядро Linux, являются исполняемыми файлами. В Linux все доступное пользователям файловое пространство объединено в единое дерево каталогов, корнем которого является каталог "/". Т.о., полное имя любого файла начинается с "/" и не содержит идентификатора устройства (дискового накопителя, CD-ROM или удаленного компьютера в сети), на котором оно фактически хранится. Однако это не означает, что в системе присутствует только одна файловая система. В большинстве случаев единое дерево, такое каким его видит пользователь системы, составлено из нескольких отдельных файловых систем, которые могут иметь различную внутреннюю структуру, а файлы, принадлежащие этим файловым системам, могут быть расположены на различных устройствах. Каждый файл имеет связанные с ним метаданные (хранящиеся в индексных дескрипторах - inode), содержащие все характеристики файла и позволяющие операционной системе выполнять операции, заказанные прикладной задачей: открыть файл, прочитать или записать данные, создать или удалить файл. В частности метаданные содержат указатели на дисковые блоки хранения данных файла. Имя файла в файловой системе является указателем на его метаданные, в то время как метаданные не содержат указателя на имя файла.

Типы файлов

В Linux существуют файлы, различающиеся по функциональному назначению и действиям операционной системы при выполнении тех или иных операций над файлами: Обычный файл (regular file), Каталог (directory), Специальный файл устройства (special device file), именованный канал (named pipe), Связь (link), Сокет.

Обычный файл представляет собой наиболее общий тип файлов, содержащий данные в некотором формате. Для операционной системы такие файлы представляют собой просто последовательность байтов. Вся интерпретация содержимого файла производится прикладной программой, обрабатывающей файл. К этим файлам относятся текстовые файлы, бинарные данные, исполняемые программы и т.п. Каталог. Каталог - это файл, содержащий имена находящихся в нем файлов, а также указатели на дополнительную информацию - метаданные, позволяющие операционной системе производить операции над этими файлами. Каталоги определяют положение файла в дереве файловой системы, поскольку сам файл не содержит информации о своем местонахождении. Любая задача, имеющая право на чтение каталога, может прочесть его содержимое, но только ядро имеет право на запись в каталог. По существу каталог представляет собой таблицу, каждая запись которой соответствует некоторому файлу. Первое поле каждой записи содержит указатель на метаданные (номер inode), а второе определяет имя файла. Специальный файл устройства обеспечивает доступ к физическому устройству. В Linux различают символьные (character) и блочные (block) файлы устройств. Доступ к устройствам осуществляется путем открытия, чтения и записи в специальный файл устройства. Символьные файлы устройств используются для небуферизированного обмена данными с устройством, в противоположность этому блочные файлы позволяют производить обмен данными в виде пакетов фиксированной длины - блоков. Доступ к некоторым устройствам может осуществляться как через символьные, так и через блочные специальные файлы. FIFO или именованный канал - это файл, используемый для связи между процессами.

Связь

Каталог содержит имена файлов и указатели на их метаданные. В то же время сами метаданные не содержат ни имени файла, ни указателя на это имя. Такая архитектура позволяет одному файлу иметь несколько имен в файловой системе. Имена жестко связаны с метаданными и, соответственно, с данными файла, в то время как сам файл существует независимо от того, как его называют в файловой системе. Такая связь имени файла с его данными называется жесткой связью (hard link). Жесткая связь (прямая ссылка) представляет собой просто еще одну запись в каталоге для того же самого файла. Жесткие связи абсолютно равноправны и неразличимы. С списках файлов каталогов, которые можно получить командой ls файлы будут отличаться только именем. Все остальные атрибуты файла будут абсолютно одинаковыми. С точки зрения пользователя - это два разных файла. Изменения, внесенные в любой из этих файлов, затронут и другой, поскольку оба они ссылаются на одни и те же данные файла. Можно переместить один из файлов в другой каталог - все равно эти имена будут связаны жесткой связью с данными файла. Удаление одного из файлов не приведет к удалению самого файла, т.е. его метаданных и данных. Файл будет удален только после удаления всех ссылок на него. По определению жесткие связи указывают на один и тот же индексный дескриптор inode. Поэтому проверить, имеют ли два имени файла жесткую связь, можно, вызвав команду ls с ключом -i. Информацию о наличии у файла нескольких имен, связанных с ним жесткими связями, можно получить, просмотрев подробный листинг файлов с помощью команды ls -l: во второй колонке листинга указано число жестких связей данного файла. Прямую ссылку для каталога создать нельзя. Прямые ссылки не могут указывать на файлы из других файловых систем.

Жесткая связь является естественной формой связи имени файла с его метаданными и не принадлежит к особому типу файла. Особым типом файла является символическая связь (symbolic link, soft link, symlink), позволяющая косвенно адресовать файл. В отличие от жесткой связи, символическая связь адресует небольшой файл, который, в свою очередь, ссылается на целевой файл. Данные файла, являющегося символической связью, содержат только имя целевого файла.

Принадлежность файла

Любой пользователь, желающий получить доступ к файлу, может бытьотнесен к одному из четырех классов пользователей. По умолчанию владельцем owner) файла считается пользователь, создавший его. Поскольку большинство польлзователей принадлежит к группам, файл также принадлежит группе, к которой относится создавший его пользователь. Члены этой группы принадлежат к группе владельцев файла (group owners). Прочие (others) пользователи - это те, кто не является владельцем файла и не принадлежит к его группе, и все (all) - это просто все пользователи, включая владельца, группу владельца и прочих пользователей. Для определения владельцев файла достаточно посмотреть подробный листинг команды ls -l. Третья и четвертая колонки содержат имена владельца-пользователя и владельца-группы, соответственно.

Разрешения

Разрешения определяют режим доступа различных типов пользователей: пользователей-владельцев, группы и прочих. Три основных типа разрешений: чтение (read, r) - файл может быть прочитан, но не может быть изменен или удален; запись (write, w) - файл может быть изменен или удален; выполнение (execute, x) - файл может быть выполнен, если он является программой или сценарием (для выполнения сценария также понадобится право на чтение, поскольку при выполнении скрипта командный интерпретатор должен иметь возможность считывать команды из файла). Для владельцев, группы и прочих пользователей могут быть установлены различные разрешения. Например, владелец файла может иметь разрешение на чтение и запись, в то время как группе может быть разрешен доступ только на чтение, а остальным пользователям доступ можно вообще запретить - в зависимости от необходимости. При отображении содержимого каталога в подробном формате режим доступа отображается девятисимвольным выражением, таким как "rwxr-xr-". Группы символов при чтении слева направо обозначают соответственно, режим доступа владельца (чтение, запись и выполнение), группы (чтение и выполнение) и прочих пользователей (чтение).

Перечень команд
сat файл
Выводит содержимое файла на экран терминала.
chgrp группа файл
Делает указанный файл принадлежащим указанной группе. Для указания группы-владельца можно использовать имя или идентификатор группы. Необходим статус администратора.
chmod режим файл
Изменение режима доступа к файлу. Для указания режима используется символьный или числовой формат. Для смены режима доступа к файлам других пользователей требуется статус привилегированного пользователя. Символьный формат режима - u | g | o | a + | - | = r | w | x | s | t
Классы доступа: u - владелец-пользователь, g - владелец-группа, о - остальные пользователи, а - все классы пользователей.

Операция, которую необходимо произвести: + добавить, - удалить, = присвоить.
Права доступа: r - чтение, w - запись, x - выполнение, s - установка SUID или SGID, t - установка Sticky bit.

Примеры допустимых символьных режимов: a+w, go=r, g+x-w, u+w, og+r-w.
Числовой формат записи разрешения позволяет указать уровень доступа с помощью четырехзначного восьмеричного (0-7) числа. Число определяется следующим образом: нужно представить права доступа в двоичном виде (0 - отсутствие соответствующего права, 1 - его наличие) и каждую триаду, соответствующую классу доступа, в свою очередь, преобразовать в десятичное число.
chown пользователь [.группа] файл

Смена владельца указанного файла. Может быть указано имя нового владельца или его идентификатор. Для смены группы-владельца введите точку после имени пользователя, а затем имя группы или ее идентификатор без пробела. Для выполнения команды требуется статус привилегированного пользователя.
cmp файл1 файл2

Сравнение двух файлов. Если файлы одинаковы, никакого сообщения не выводится. В противном случае выводится номер строки и символа в ней, где найдено первое несоответствие.
cp [параметр] [файл1] [файл2]

Копирует один исходный файл (файл1) в другой файл (файл2) или несколько файлов в существующий каталог. При копировании нескольких файлов для их задания можно использовать маску.
less файл

Отображение содержимого файла на экране и удобное управление просмотром.
ln [параметры] файл [имя ссылки]

Создание прямой ссылки на указанный файл. При использовании с параметром -s создается символическая ссылка.
mkdir [параметры] каталог

Создание указанного каталога.
Параметры: -m режим - создание каталога с указанным режимом доступа -p - создание родительских каталогов при необходимости.

Получение справки

Команда

%man файл

где файл - команда, программа, конфигурационный файл или библиотечная функция, по которой требуется получить справку.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-03-31 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: