А. Робачевский - Операционная система UNIX (1114671), страница 7
Текст из файла (страница 7)
е. физически уда!лены его данные на диске).www.books-shop.comФайлы и файловая системаРис. 1.2. Структура файловой системы после выполнения командысвязь имен с данными файла23ЖесткаяПо определению жесткие связи указывают на один и тот же индексныйдескрипторПоэтому проверить, имеют ли два имени файла жесткуюсвязь, можно, вызвав команду ls(l) с ключомwww.books-shop.com24Глава J.
Работа в операционной системе UNIX$i1256712567firstsecondИнформацию о наличии у файла нескольких имен, связанных с ним жест!кими связями, можно получить, просмотрев подробный листинг файлов спомощью команды ! /:$— 12andreistaff7245 Jan 17 8:05secondВо второй колонке листинга указано число жестких связей данного файла.Сразу оговоримся, что жесткая связь является естественной формой связиимени файла с его метаданными и не принадлежит к особому типу файла.Особым типом файла являетсясвязь, позволяющая косвенноадресовать файл. В отличие от жесткой связи, символическая связь адресу!ет файл, который, в свою очередь, ссылается на другой файл. В результате,последний файл адресуется символической связью косвенно (рис. 1.3).Данные файла, являющегося символической связью, содержат только имяцелевого файла.Проиллюстрируем эти рассуждения на примере.
Командапозволяет создать символическую связь:с ключом !s$ pwd$з first$ cd /home/sergey$11 andreistaff15 Jan 17 8:05Как видно из вывода командыфайл symfirst (символическая связь)существенно отличается от файла second (жесткая связь). Во!первых, фак!тическое содержимое файла symfirst отнюдь не то же, что и у файла firstили second, об этом говорит размер файла — 15 байт. На самом деле вэтом файле хранится не что иное как имя файла, на которую символиче!ская связь ссылается —— ровно 15 байт. Во!вторых, файлsymfirst не содержит никаких ограничений на доступсимволы в пер!вой колонке).Символическая связь является особым типом файла (об этом свидетельству!ет символв первой позиции выводаи операционная система рабо!тает с таким файлом не так, как с обычным. Например, при выводе на эк!ран содержимого файла symfirst появятся данные файлаwww.books-shop.comФайлы исистема25Рис.
1.3. Символическая связьпредназначены для взаимодействия между процессами. Интерфейсчасто используется для доступа к сети TCP/IP. В системах, ветвиwww.books-shop.com26Глава 1. Работа в операционнойUNIXBSD UNIX на базереализована система межпроцессного взаимо!действия, с помощью которой работают многие системные сервисы, на!пример, система печати. Мы подробнее познакомимся с сокетами в разде!ле "Межпроцессное взаимодействие в BSD UNIX" главы 3.Структура файловой системы UNIXИспользование общепринятых имен основных файлов и структуры ката!логов существенно облегчает работу в операционной системе, ее админи!стрирование и переносимость.
Эта структура используется в работе систе!мы, например при ее инициализации и конфигурировании, при работепочтовой системы и системы печати. Нарушение этой структуры можетпривести к неработоспособности системы или отдельных ее компонентов.Рис. 1.4.
Типичная файловая система UNIXПриведем краткое описание основных каталогов.Корневой каталогКорневой каталогявляется основой любой файловой системы UNIX.Все остальные файлы и каталоги располагаются в рамках структуры, по!www.books-shop.comФайлы и файловая27рожденной корневым каталогом, независимо от их физического местона!хождения.В каталогенаходятся наиболее часто употребляемые команды и ути!литы системы, как правило, общего пользования.Каталог /dev содержит специальные файлы устройств, являющиеся интер!фейсом доступа к периферийным устройствам.Каталог /dev может содержать несколько подкаталогов, группирующихспециальные файлы устройств одного типа. Например, каталог /dev/dskсодержит специальные файлы устройств для доступа к гибким и жесткимдискам системы./etcВ этом каталоге находятся системные конфигурационные файлы и многиеутилиты администрирования.
Среди наиболее важных файлов — скриптыинициализации системы. Эти скрипты хранятся в каталогах/etc/rc2.d и т. д, соответствующих уровням выполнения системы(run level), и управляются скриптами/etc/rc2 и т. д. Вомногих версиях BSD UNIX указанные каталоги отсутствуют, и загрузка сис!темы управляется скриптами/etc/re иВ UNIXветви System V здесь находится подкаталог default, где хранятся параметрыпо умолчанию многих команд (например,содержит парамет!ры для командыВ UNIX System V большинство исполняемых фай!лов перемещены в каталогили/libВ каталогенаходятся библиотечные файлы языка С и других языковпрограммирования. Стандартные названия библиотечных файлов имеютвид libx.a (или libx.so), где х — это один или более символов, определяю!щих содержимое библиотеки. Например, стандартная библиотека С назы!ваетсябиблиотека системы X Window System имеет имя libXll.a.Часть библиотечных файлов также находится в каталогеКаталог "потерянных" файлов.
Ошибки целостности файловой системы,возникающие при неправильном останове UNIX или аппаратных сбоях,могут привести к появлению т. н. "безымянных" файлов — структура и со!держимое файла являются правильными, однако для него отсутствует имяв каком!либо из каталогов. Программы проверки и восстановления фай!ловой системы помещают такие файлы в каталогпод систем!www.books-shop.com28Глава 1. Работа в операционной системе UNIXчисловыми именами.
Мы коснемся вопроса имен файлов далее вэтой главе и, более подробно, в главе 4./mntСтандартный каталог для временного связывания (монтирования) физиче!ских файловых систем к корневой для получения единого дерева логиче!ской файловой системы. Обычно содержимое каталога /mnt пусто, по!скольку при монтировании он перекрывается связанной файловой систе!мой. Более подробно процесс монтирования и относящиеся к нему струк!туры данных ядра мы рассмотрим в главе 4./и или /homeОбщеупотребительный каталог для размещения домашних каталогов пользо!вателей. Например, имя домашнего каталога пользователя andrei будет, ско!рее всего, называтьсяили /u/andrei. В более ранних версияхUNIX домашние каталоги пользователей размещались в каталоге /usr.В этом каталоге находятся подкаталоги различных сервисных подсистем —системы печати, электронной почты и т.
д.исполняемые фай!лы утилит UNIXдополнительные программы, используемые наданном компьютерефайлы заголовковэлек!тронные справочникит. д./varВ UNIX System V этот каталог является заменителем каталога /usr/spool,используемого для хранения временных файлов различных сервисных под!систем — системы печати, электронной почты и т. д./tmpКаталог хранения временных файлов, необходимых для работы различныхподсистем UNIX. Обычно этот каталог открыт на запись для всех пользо!вателей системы.Владельцы файловФайлы в UNIX имеют двух владельцев: пользователя (user owner) и груп!(group owner). Важной особенностью является то, что владелец!пользователь может не являться членом группы, владеющей файлом.
ЭтоГруппой называется определенный список пользователей системы. Пользователь системыможет быть членом несколькиходна из которых является первичной (primary), ос!тальные — дополнительными (supplementary).www.books-shop.comФайлы и файловая системадает большую гибкость в организации доступа к файлам. Совместноепользование файлами можно организовать практически для любого соста!ва пользователей, создав соответствующую группу и установив для нееправа на требуемые файлы.
При этом для того чтобы некий пользовательполучил доступ к этим файлам, достаточно включить его в группу!владельца, и наоборот — исключение из группы автоматически изменяетдля пользователя права доступа к файлам.Для определения владельцев файла достаточно посмотреть подробныйлистинг командыТретья и четвертая колонки содержат имена вла!дельца!пользователя и владельца!группы, соответственно:12113andy4groupstudent56235520345078Dec 22Nov 12questВладельцем!пользователем вновь созданного файла является пользователь,который создал файл. Порядок назначения владельца!группы зависит отконкретной версии UNIX. Например, в SCO UNIX владельцем!группойявляется первичная группа пользователя, создавшего файл, а в DigitalUNIX владелец!группа наследуется от владельца группы — каталога, в ко!тором создаетсяДля изменения владельца файла используется командаВ качествепараметров команда принимает имя владельца!пользователя и список фай!лов, для которых требуется изменить данный атрибут.
Например, следующаякоманда установит пользователя sergey владельцем файлови$sergeyИзменение владельца!группы производится командойКак ив качестве параметров команда принимает имя владельца!группыи список файлов, для которых требуется изменить данный атрибут. На!пример, для установки группы staff в качестве владельца всех файлов те!кущего каталога, необходимо задать следующую команду:$staff *На самом деле файл создает не пользователь, а процесс, запущенный пользователем. Про!цесс имеет атрибуты, связанные с пользователем и группой, которые и назначаются файлупри его создании. Более точное описание передачи "владения" имеет вид:1.
Идентификатор владельца!пользователя файлаустанавливается равнымпроцесса, создающего файл (т. е. вызвавшего функцию1. Идентификатор владельца!группы файла (group ID) устанавливается равнымEGID процесса (для версии System V);б) GID каталога, в котором файл создается (для версии BSD).Большинство систем, использующих наследование System V, позволяют также устанавли!вать наследование группового владельца в стиле BSD. Это достигается установкой флагаSGID на каталог. Более подробно об этом см. раздел "Дополнительные атрибуты" далее вэтой главе.Ⱦɚɧɧɚɹɜɟɪɫɢɹɤɧɢɝɢɜɵɩɭɳɟɧɚɷɥɟɤɬɪɨɧɧɵɦɢɡɞɚɬɟɥɶɫɬɜɨɦ%RRNVVKRSɊɚɫɩɪɨɫɬɪɚɧɟɧɢɟɩɪɨɞɚɠɚɩɟɪɟɡɚɩɢɫɶɞɚɧɧɨɣɤɧɢɝɢɢɥɢɟɟɱɚɫɬɟɣɁȺɉɊȿɓȿɇɕɈɜɫɟɯɧɚɪɭɲɟɧɢɹɯɩɪɨɫɶɛɚɫɨɨɛɳɚɬɶɩɨɚɞɪɟɫɭpiracy@books-shop.comГлава 1.30в операционной системе UNIXВладение файлом определяет тот набор операций, который пользовательможет совершить с файлом.
Часть из них, такие как изменение прав дос!тупа или владельца файла (табл. 1.1), может осуществлять только владелец(или суперпользователь), другие операции, такие как чтение, запись и за!пуск на выполнение (для исполняемых файлов) дополнительно контроли!руются правами доступа.Таблица 1.1. Операции изменения владельцев файлаОперацияИмеет право выполнятьКомандавИзменение владель%ца%пользователяИзменение владель%ца%группыchgrp(1)в системе SVR4BSD 4.xсуперпользовательвладелец файласуперпользовательвладелец файла толькодля группы, к которойсам принадлежит (в со%ответствии с POSIX)Права доступа к файлуВ операционной системе UNIX существуют три базовых класса доступа кфайлу, в каждом из которых установлены соответствующие права доступа:User access (u)Для владельца%пользователя файлаGroup access (g)Для членов группы, являющейся владельцем файлаOther access (о)Для остальных пользователей (кроме суперпользователя)UNIX поддерживает три типа прав доступа для каждого класса: на чтение(read, обозначается символомна запись (write, обозначается символом w)и на выполнение (execute, обозначается символом х).С помощью команды1rwxrxr211andyandyandyandyможно получить список прав доступа к файлу:groupgroupgroupgroup36482Dec 2264Aug 1548897622Dec 221119:1311:0315: 1309: 13tempa .