Руководство системного администратора • третье издание { h h y с п п т п р



Pdf просмотр
страница8/82
Дата12.11.2016
Размер7.94 Mb.
Просмотров12719
Скачиваний0
ТипРуководство
1   ...   4   5   6   7   8   9   10   11   ...   82
% шог® "My e x c e l l e n t f i l e . t x t " будет воспринята как попытка передать программе тоге единый аргумент My e x c e l l e n t f i l e . t x t .
5.2. Монтирование и демонтирование файловой системы Файловое дерево формируется из отдельных частей, называемых файловыми системами, каждая из которых содержит один каталоги список его подкаталогов и файлов. Термин "файловая система, по сути, имеет два значения. С одной стороны, это составная часть файлового дерева, ас другой — все файловое дерево и алгоритмы, с помощью которых UNIX управляет им. Как правило, значение термина становится ясным из контекста. Большинство файловых систем являются разделами диска, но, как уже упоминалось раньше, файловой системой может быть все, что подчиняется определенным функциональным правилам сетевые файловые системы, компоненты ядра, резидентные диски и т.д. Файловые системы прикрепляются к файловому дереву с помощью команды mount. Эта команда берет из существующего файлового дерева каталог (он называется точкой монтирования) и делает его корневым каталогом присоединяемой файловой системы, На время монтирования доступ к содержимому точки монтирования становится невозможным. Как правило, точка монтирования — пустой каталог. Например, команда
4 mount /dov/adlc /uaars
монтирует файловую систему, размещенную на устройстве /dev/sdlc. под именем /users. После монтирования можно с помощью команды Is /users посмотреть, что содержит эта файловая система. Список файловых систем, которые были смонтированы пользователями, хранится в файле /etc/fstab, /etc/vfstab или /etc/checklist, в зависимости от Здесь необходимо дать пояснения. Сама дисковая подсистема не накладывает никаких ограничений на длину путевого имени. Но системные вызовы, получающие доступ к файловой системе, не позволяют своим аргументам иметь длину более чем 1023 символа.
82
Чость I. Основы одминистрировония
операционной системы. Благодаря этому становятся возможными автоматическая проверка (fsck -р) и монтирование (mount -а) файловой системы на этапе начальной загрузки, а также выполнение коротких команд наподобие mouBt /usr. Точное местоположение монтируемой файловой системы ищется в файле fstab (см. параграф 8 3). Демонтируются файловые системы командой umount. В большинстве систем занятую файловую систему демонтировать невозможно. В ней не должно быть открытых файлов и выполняющихся процессов. Если демонтируемая файловая система содержит исполняемые программы, онн не должны быть запущены. Во FreeBSD допускается применение команды uniount -f, которая принудительно демонтирует занятую файловую систему. Это не лучший выход из положения, потому что программа, работающая сданной файловой системой, может зависнуть или начать вести себя ненормально. Использовать команду umount -f можно только на свой страхи риск. В Solaris 8 также имеется команда umount -Г. хотя в более ранних версиях системы аналогичного результата можно было добиться в два этапа. Сначала выполнялась команда lockfs -h точкамонтирования, которая ставила на файловую систему "жесткую блокировку. Затем вызывалась обычная команда umount. Если ядро "жалуется" на то, что демонтируемая файловая система занята, можно запустить команду fuser, которая позволит узнать, кто работает с файловой системой. Команда fuser -с точкамонтирования выводит идентификаторы всех процессов, обращающихся к файлам или каталогам указанной файловой системы. К этим идентификаторам добавляются специальные символьные коды, обозначающие выполняемые действия. Например
% f u s e r - с / u s r
/ u s r : 157tm 315ctom 474 torn 5049tom 84tm 496ctom
490tm 16938c 16902ctm 358ctom 484tm Точное количество символьных кодов зависит от системы. Наиболее распространены следующие коды с текущий каталог процесса расположен в файловой системе о открыт файл t выполняется программа m подключен файл (обычно совместно используемая библиотека г корневой каталог процесса находится в файловой системе (задается с помощью команды cfaroot). Чтобы определить, какие программы связаны с этими процессами, вызовите команду ps„ передав ей список интересующих вас идентификаторов процессов, о которых сообщила команда fuser. Например
% ре P I D С S T I M E TTY T I M E CMD r o o t
5D49 4 90 0 Oct 11 ? 0: ! 00
/ u s r / b i n / X l l / x d j n r o o t
157 1 0
Jim 21 ? 5 : 26
/ u s r / s b l n / n a i r i e d р
315 1 0
J u n 27 ? 0: :00
/ u s r / l i b / l p s c h e d Список идентификаторов взят в кавычки, чтобы интерпретатор shell передал его команде ps как один аргумент.
Глово 5. Фойловоя систеадо 83
Ш

©
6 Команда fuser может также выдавать статистику использования отдельных файлов, а не всей файловой системы. Синтаксис ее вызова в этом случае должен быть таким f u s e r - f иия_файла
Указав от ш ю -к, можно заставить команду fuser послать всем найденным процессам сигнал KILL. Это очень опасное действие, и для его выполнения следует иметь привилегии пользователя root (им можно стать с помошью команды sudo). В RedMat команда fuser. разработанная Вернером Алъмсбергером (Werner
Almesberger), использует вместо опции -с опцию -т Если нужно получить статистику по отдельным файлам, просто опустите опцию - т . Имеется также полезная огшия -v, которая заставляет команд' fuser выдавать результаты своей работы в стиле команды ps:
% f u a a r - m v / u e r
USER PID ACCESS COMMAND
/ u s r r o o t 1 . . . . m i n i t r o o t 125 , . . . r a apmd r o o t 274 m portmap r o o t 321 . . . . i n s y s i o g d
Bo FreeBSD нет команды fuser, но есть команда fstal с аналогичными возможностями. Альтернативой команде fuser является бесплатная программа Isof ("list of open files" — список открытых файлов, которая формирует список дескрипторов открытых файлов по процессами именам файлов. Программу Isof написал Вик Эйбелл (Vic Abell) из университета Пердью. штат Индиана. Получить ее можно на узле f t p : / / v i e . с с . p u r d u e . e d u / p u b / t o o l s / u n i x / l s o f Она работает во всех рассматриваемых нами системах.
5.3. Организация файловой системы Файловая система в U N I X никогда не была хорошо организована. Поскольку не существует единой системы присвоения имен, одновременно используется много разных, несогласованных между собой правил именования файлов. Во многих случаях файлы группируются по выполняемым функциям, независимо оттого, как часто они изменяются. Это затрудняет модификацию операционной системы. Например, каталог / e t c содержит файлы, которые никогда не меняются, а также полностью локальные файлы. Такие нововведения, как каталог /var, помогли справиться с рядом проблемно файлы большинства систем все еще не упорядочены. Тем не менее, для всего находится свое место. Большинство программ можно инсталлировать с минимальными усилиями в плане переконфигурнрования системы, если ее настроили стандартным способом. Однако попытка улучшить структуру, задаваемую по умолчанию, может привести к неприятностям. Корневая файловая система включает в себя корневой каталоги минимальный набор файлов и подкаталогов. В ней располагается ядро, которое обычно носит имя /unix или /vmunix. Этот файл может быть дополнительно скрыт в подкаталоге /kernel или /stand. Корневая файловая г е
Чость I Основы сдминистрировония
система также содержит каталог /dev для файлов устройств, каталог / e t c для системных конфигурационных файлов, каталоги /sbin и /Ып для важнейших утилит и иногда каталог /tmp для временных файлов. В некоторых системах совместно используемые библиотечные файлы, а также файлы препроцессора языка С хранятся в каталоге /lib. В других системах этой же цели служит каталога каталог /lib является символической ссылкой. Очень большое значение имеют также каталоги / u s r и /var. В первом хранится большинство стандартных программ и другие полезные компоненты, например электронная документация. Совсем необязательно, чтобы каталог
/ u s r был отдельной файловой системой, однако для удобства администрирования его, как правило, создают именно так. В каталоге /var содержатся буферные каталоги, файлы регистрации, учетная информация и прочие компоненты, которые быстро разрастаются и изменяются. Каждый компьютер имеет свой список таких компонентов. Каталоги / u s r и /var должны существовать, чтобы система могла загрузиться в многопользовательском режиме. Большая часть содержимого каталога /var первоначально находилась в каталоге /usr. В своей системе вы, вероятно, еще обнаружите соответствующие символические ссылки, являющиеся остатками прежней эпохи. Начальные каталоги пользователей следует держать в отдельной файловой системе, которая обычно монтируется в корневом каталоге, а иногда — в каталоге /usr. Некоторые файловые системы можно использовать и для хранения больших информационных массивов, например библиотек исходных текстов программ и баз данных. Наиболее важные стандартные каталоги перечислены в табл. 5.1. Таблице 5.1. Стондортные котологи и их содержимое Путевое имя Содержимое
/Ып или /й»1п Команды, необходимые для обеспечения минимального уровня работоспособности системы
/dev Файлы устройств терминалов, дисков, модемов и т.д.
/etc Важные файлы запуска и конфигурации
/lib Библиотеки компиляторе языка С
/trap Временные файлы, удаляемые в процессе перезагрузки

Рабочая область для построения ядра, файлы конфигурации (BSD)
/ргос Образы всех работающих процессов (в некоторых новых системах)
/stand Автономные утилиты, программы форматирования дисков и др.
/osr/Ып Исполняемые файлы
/uir/games Игровые н развлекательные программы (большей частью не очень веселые)
/usr/lnclude Файлы заголовков С-программ
/usr/5bln Команды, обеспечивающие совместимость с ядром System V в системах
/usr/abin Служебные системные команды Если есть каталог /вЫя, то каталог /bin обычно представляет собой символическую ссылку на каталог /usr/bln.
Глово 5. Фойловоя систеадо
85
Путевое имя Содержимое
/usr/llb Вспомогательные файлы для стандартных программ
/usr/man Страницы электронных руководств
/usr/share Элементы, обшие для различных систем (часто сюда входят страницы электронной документации)
/var/adm Учетные файлы, журналы использования ресурсов
/var/log Различные системные журнальные файлы (в некоторых системах)
/var/spool Буферные каталоги для принтеров, UUCP, электронной почты и тл.
/var/tinp Каталог для временного хранения файлов (после перезагрузки файлы не исчезают)
/usr/ucb Утилиты и программы BSD
/usr/local Локальное программное обеспечение (все, что инсталлируется пользователями)
/usr/local/adm Локальные учетные файлы и файлы регистрации
/usr/loeal/Ып Локальные исполняемые файлы
/usr/local/etc Локальные системные команды и файлы конфигурации
/usr/Iocal/llb Локальные вспомогательные файлы
/usr/local/sbin Локальные служебные системные команды
/usr/local/src Исходные тексты для программ каталогов /usr/local/*
Дегпе! Файлы, необходимые для загрузки ядра (в Solaris)
5.4. Типы файлов В большинстве файловых систем поддерживается семь типов файлов обычные файлы каталоги файлы байт-орнентированных (символьных) устройств файлы блок-ориентированных (блочных) устройств
• сокеты; именованные каналы (FIFO); символические ссылки. В некоторых системах не реализована поддержка таких типов файлов, как сокеты или именованные каналы. Обычные файлы Обычный файл — это просто последовательность байтов. Вне накладывается ограничений иа его структуру. Текстовые документы, исполняемые программы, библиотеки функций и многое другое — все это хранится в обычных файлах. К ним возможен как последовательный, таки прямой доступ. Каталоги Каталог содержит именованные ссыпки на другие файлы. Он создается командой mkdir и удаляется (если пустой) командой rmdir. Каталоги, в которых есть файлы, можно удалить командой rm -г. г е
Чость I Основы сдминистрировония
Специальные ссылки 7 и обозначают соответственно сам каталоги его родительский каталог. Их нельзя удалить Поскольку у корневого каталога нет родителя, ссылка в ием эквивалентна ссылке "Л Имя файла хранится в родительском каталоге, а не в самом файле. На файл можно ссылаться из нескольких каталогов одновременно и даже из нескольких элементов одного итого же каталога, причем у всех ссылок могут быть разные имена. Это создает иллюзию того, что файл водно и тоже время находится в разных каталогах. Ссылку невозможно отличить от имени файла, на который она указывает вони идентичны. UNIX подсчитывает количество ссылок, указывающих на каждый файл, и при удалении файла не освобождает блоки данных до тех пор, пока не будет удалена его последняя ссылка. Ссылки можно задавать только в пределах одной файловой системы. Ссылки такого рода обычно называют "жесткими, чтобы отличить их от символических (мягких) ссылок, которые описаны ииже. Жесткие ссыпки создаются командой In. а удаляются командой пл. Синтаксис команды In легко запомнить, так как она повторяет работу команды ср. Команда ср o l d f i i e n e w f i l e создает копию файла oldfiie под именем newfile. Точно также, команда lrt o l d f i i e n e w f i l e создает новую ссылку newfile на файл oldfiie. Важно понимать, что жесткие ссыпки не являются отдельным типом файлов. Просто файловая система позволяет создавать ссылки на один и тот же файл в разных каталогах. Атрибуты файла, в частности права доступа и идентификатор владельца, являются общими для всех ссылок. Файлы байт-ариентировонных и блок-ориентировонных устройств
Подробно устройства и драйверы рассматриваются в главе 12.
Файлы устройств позволяют программам взаимодействовать с аппаратными средствами и периферийными устройствами системы. При конфигурировании ядра к нему подключаются те модули, которые знают, как взаимодействовать с каждым из имеющихся устройств. За всю работу по управлению конкретным устройством отвечает специальная программа, называемая драйвером устройства. Драйверы устройств образуют стандартный коммуникационный интерфейс, который выглядит для пользователя как обычный файл. Когда ядро получает запрос к файлу байт-ориентированного или блок-ориентированного устройства, оно просто передает этот запрос соответствующему драйверу. Важно отличать файлы устройств от драйверов устройств. Файлы сами по себе не являются драйверами. Их можно представить как шлюзы, через которые драйверу передаются запросы. Файлы байт-ориентированных устройств позволяют связанным сними драйверам выполнять свою собственную буферизацию ввода-вывода. Файлы блок-ориентированных устройств обрабатываются драйверами, которые
* Во многих системах возможна также динамическая загрузка этих модулей ядром
Глово 5. Файловая системо
87
осуществляют ввод-вывод большими порциями (блоками) и возлагают обязанности по выполнению задач буферизации на ядро. Аппаратные средства некоторых типов, такие как накопители на жестких дисках и магнитных лентах, могут быть представлены файлами любого типа. В системе может присутствовать несколько однотипных устройств. Поэтому файлы устройств характеризуются двумя номерами старшими младшим. Старший номер устройства говорит ядру о том, к какому драйверу относится данный файла младший номер сообщает драйверу, к какому физическому устройству следует обращаться. Например, старший номер устройства 6 в Linux обозначает драйвер параллельного порта. Первый параллельный порт (/dev/IpO) будет иметь старший номер 6 и младший номер 0. Некоторые драйверы используют младший номер устройства нестандартным способом. Например, драйверы накопителей на магнитных лентах часто руководствуются им при выборе плотности записи и для определения того, необходимо ли перемотать ленту после закрытия файла устройства. В некоторых системах "драйвер терминала" (который на самом деле управляет всеми последовательными устройствами) применяет младшие номера устройств для того, чтобы отличать модемы, используемые для вызова удаленных систем, от модемов, работающих на прием сообщений. Файлы устройств можно создавать командой mknod, а удалять — командой пл. В большинстве систем имеется командный сценарий MAKEDEV обычно находится в каталоге /dev), который создает стандартные наборы управляющих файлов для основных устройств. Прежде чем бездумно вызывать этот сценарий, просмотрите его текст, чтобы понять, что конкретно он делает в вашей системе.
Сокеты
Сокеты инкапсулируют соединения между процессами, позволяя им взаимодействовать, не подвергаясь влиянию других процессов. В UNIX поддерживается несколько видов сокетов, использование которых в большинстве своем предполагает наличие сети. Сокеты UNIX локальны для конкретного компьютера. Обращение к ним осуществляется через объект файловой системы, а не через сетевой порт. Несмотря иа то что другие процессы распознают файлы сокетоп как элементы каталога, процессы, не участвующие в соединении, не могут осуществлять над этими файлами операции чтения и записи. С сокетами работают система печати, система X Window и система Syslog.
Дополнительная информация о системе Syslog приводится в главе П.
Сокеты создаются с помощью системного вызова socket. Когда с обеих сторон соединение закрыто, сокет можно удалить посредством команды rm либо системного вызова unlink. Именованные канолы Подобно сокетам, именованные каналы обеспечивают взаимодействие двух процессов, выполняемых на одной машине. Именованные каналы создаются командой mknod, а удаляются командой rm.
88
Чость I. Основы ОДМИНИСТрИрОВОНИЯ
Символические ссылки Символическая, или "мягкая, ссылка обеспечивает возможность вместо путевого имени файла указывать псевдоним. Когда ядро сталкивается с символической ссылкой при поиске файла, оно извлекает из нее хранящееся в ней путевое имя. Различие между жесткими и символическими ссылками состоит в том, что жесткая ссылка — прямая, те. указывает непосредственно на индексный дескриптор файла, тогда как символическая ссылка указывает на файл по имени. Файл, адресуемый символической ссылкой, и сама ссылка физически являются разными объектами файловой системы. Символические ссылки создаются командой In -s, а удаляются командой гш. Поскольку они содержат произвольное путевое имя, то могут указывать на файлы, хранящиеся в других файловых системах, н даже на несуществующие файлы. Иногда несколько символических ссылок образуют никл. Символическая ссылка может содержать либо абсолютное, либо относительное путевое имя. Например, команда
I n - s . . / . . / u f s / u s r / i n c l u d e / b s d / s y s / u f s связывает имя /usr/include/bsd/sys/ufs с каталогом /usr/include/ufs с помощью относительного пути. Каталог /usr/include можно переместить куда угодно, но символическая ссылка, тем не менее, останется корректной. Остерегайтесь использовать обозначение в путевых именах, включающих символические ссылки, поскольку по символическим ссылкам нельзя проследовать в обратном направлении. Ссылка "..*' всегда обозначает истинный родительский каталог данного файла или каталога. Например, в приведенной выше ссылке путь
/ u s r / i n c l u d e / b s d / s y s / u f s / . . / p a r a r c . h раскрывается как
/ u s r / i n c l u d e / p a r a m . h а не
/ u s r / i n c l u d e / b a d / s y s / p a r a r n . h Распространенная ошибка — думать, будто первый аргумент команды
In -s как-то связан с текущим каталогом. На самом деле он не раскрывается командой In, а записывается в символическую ссылку буквально.
5.5. Права доступа к файлам Каждому файлу соответствует набор прав доступа, представленный в виде девяти битов режима. Он определяет, какие пользователи имеют право читать файл, записывать в него данные или выполнять его. Вместе с другими тремя битами, влияющими на запуск исполняемых файлов, этот набор образует код
режима доступа к файлу. Двенадцать битов режима хранятся в битовом поле индексного дескриптора вместе с четырьмя дополнительными битами, определяющими тип файла. Последние четыре бита устанавливаются при создании файла и не подлежат изменению. Биты режима могут изменяться владельцем файла или суперпользователем с помощью команды clrniod ("change mode" — изменить режим) Просмотр значении этих битов осуществляется с помощью команды Is.
Глово 5. Фойловоя систеадо
89
Биты S U I D и S G I D Биты, которым в коде режима доступа соответствуют восьмеричные значения 4000 и 2000, — это биты смены идентификатора пользователя
(SU1D) и смены идентификатора группы (SGID). Они позволяют программам получать доступ к файлами процессам, которые при прочих обстоятельствах недоступны пользователю, выполняющему эти программы. Подробнее данный механизм был описан в параграфе 3.1. Если бит SGID установлен лля каталога, то создаваемые в нем файлы при запуске будут принимать идентификатор группы каталога, а не группы, в которую входит владелец файла. Это упрощает совместный доступ к каталогам для пользователей, принадлежащих одной группе. Подобная возможность поддерживается не во всех версиях UNIX (это не относится к нашим тестовым системам. Следует также учитывать, что установка бита
SGID для исполняемого файла перекрывает аналогичную установку для каталога. В некоторых системах бит SG1D можно устанавливать для файлов, не являющихся исполняемыми. Тем самым запрашивается специальный режим блокировки файлов при их открытии. бит Бит, которому в коде режима доступа соответствует восьмеричное значение 1000. называется битом ("sticky" — липучка. Это хороший пример "того, как UNIX по мере взросления избавляется от рудиментов, но они продолжают следовать за системой по пятам. В системах с небольшой памятью, например PDP-11/70, где UNIX работала в свои ранние годы, требовалось, чтобы отдельные программы постоянно оставались в памяти. Тогда бит был очень важен, так как запрещал выгрузку программ из памяти. Сегодня в мире долларовых модулей памяти и быстродействующих- дисковых накопителей бит никому ненужен, и современные ядра попросту игнорируют его. Если бит устанавливается для каталога, то большинство версии
UNIX позволяют удалять и переименовывать его файлы только в том случае, если пользователь является владельцем каталога, владельцем файла или пользователем root. Иметь одно лишь разрешение на запись в каталог недостаточно. Такая мера направлена на то, чтобы сделать каталоги вроде
/tmp более защищенными.
^ Системы Solaris и HP-UX не столь строги в отношении каталогов с установленным битом Пользователь, имеющий право записи в такой каталог, может удалять из него файлы, даже если он не является их владельцем. Биты режимо Девять битов режима предназначены для того, чтобы определить, кто и какие операции может выполнять над файлом. В UNIX нельзя устанавливать биты прав доступа отдельно для каждого пользователя. Существуют разные Если быть более точными, то этого не позволяет делать традиционная модель безопасности
UNIX. В Solaris и HP-UX есть расширения, изменяющие многие аспекты традиционной модели. Среди прочего в них поддерживаются списки управления доступом Тем не менее, ли расширения здесь не описываются
90
Чость I. Основы одминистрировонир
наборы (триады) битов для владельца файла, группы, которой принадлежит файл, и прочих пользователей. Каждый набор состоит из трех битов бита чтения, бита записи и бита выполнения (для каталога последний называется битом поиска. Режим доступа удобно представлять в виде восьмеричного числа, так как каждая цифра в нем представляется тремя битами. Три старших бита (в коде режима доступа им соответствуют восьмеричные значения 400, 200 н 100) служат для управления доступом к файлу со стороны его владельца. Вторые три бита (40, 20 и 10) задают доступ для пользователей группы. Последние три бита (4, 2 и I) определяют доступ к файл> со стороны всех остальных пользователей. Старший бит каждой триады — бит чтения, средний — бит записи, младший — бит выполнения. Каждый пользователь попадает только в одну из категорий, соответствующих одной из триад битов режима. В случае неоднозначности выбираются самые строгие права доступа Например, права доступа для владельца файла всегда определяются триадой битов владельца и никогда — битами группы. Возможна ситуация, когда внешние пользователи имеют больше прав, чем владелец, но такая конфигурация используется редко. Для обычного файла бит чтения позволяет открывать и читать файла бит записи — изменять его содержимое. Возможностью удаления и переименования файла управляют биты прав доступа, установленные для его родительского каталога (поскольку именно там хранится имя файла. Установкой бита выполнения задается разрешение запускать файл, если он является программой или командным сценарием. Существует два гипа исполняемых файлов двоичные файлы, которые выполняются непосредственно центральным процессором, и сценарии, обрабатываемые интерпретатором shell или какой-нибудь другой программой (например, awk или sed). По соглашению сценарии начинаются со строки примерно такого вида
#! b i n / c s h -f Она задает соответствующий интерпретатор команд Текстовые файлы, в которых не указан конкретный интерпретатор, считаются сценариями интерпретатора Установкой бита выполнения (в этом контексте часто называемого битом поиска) для каталога дается разрешение входить в каталог, но при этом нельзя получить список его содержимого. Если для каталога задана комбинация битов чтения и выполнения, можно будет получить список содержимого каталога. Комбинация битов записи и выполнения позволяет создавать, удалять и переименовывать файлы в данном каталоге. Просмотр отрибутов файла Файловая система хранит информацию о каждом файле в структуре, называемой индексным дескриптором. Каждый индексный дескриптор содержит около сорока информационных полей, но большей частью они используются только ядром. Системного администратора будут в основном интересовать количество жестких ссылок, владелец, группа, код прав доступа. Когда файл нач!шается с символов * !. он в первую очередь обрабатывается самим ядром Но если интерпретатор команд неуказан или задан неправильно, ядро откажется выполнять файл. В этом случае текущий интерпретатор предпринимает вторую попытку, пытаясь выполнить сценарий в интерпретаторе Bourne shell.
Глово 5. Фойловоя систеадо 91
размер, время последнего обращения, время последней модификации и тип файла. Всю эту информацию можно получить с помощью команды Is -I. Для каждого файла хранятся также сведения о времени последнего изменения атрибутов, те. самого индексного дескриптора. Название данного атрибута ("ctime") вводит многих людей в заблуждение, так как они полагают, что это время создания файла. На самом деле вне м хранится время последнего изменения одного из атрибутов файла (например, владелеца. кода режима, ноне его содержимого. Рассмотрим пример
% 1» -1 /bin/eh
-rwxr-xr-x 1 root bio 85924 Sep 27 1997 /Ьхл/sh В первом поле задается тип файла и маска режима доступа к нему. Поскольку первый символ — дефис, значит, перед нами обычный файл. Различные типы файлов обозначаются односимвольными кодами (табл. 5.2). Таблица 5.2. Кодировоние типов фойлов в листинге комонды U Тип файл г - Символ Создав- У « о лет с .
^ к мандой комондои Обычный файл редакторы, ср и др. пп Каталог d mkdir nndir, rm -г Файл байт-ориеитированного с mknod пп устройства Файл блок-ориентированного b mknod rm устройства
Сокет s aocket(2) rm Именованный канал р mknod пп Символическая ссылка 1 ля Следующие девять символов в этом поле — это три набора битов режима. В листинге команды Is они представляются буквами г, w их (соответственно чтение, запись и выполнение. В данном случае владелец имеет все права доступа к файлу, а остальные пользователи — только право на чтение и выполнение. Если бы был установлен бит смены идентификатора пользователя (SUID), то вместо буквы х, обозначающей право владельца на выполнение, стояла бы буква s. Если бы был установлен бит смены идентификатора группы
( S G I D ) , то вместо буквы х дня группы тоже стояла бы буква s Последний бит режима (право выполнения для остальных пользователей) представляется буквой и, когда для файла задан бит. Если биты S U I D / S G I D или бит установлены, а надлежащий бит вьгполнения — нет, эти биты представляются соответственно символами S и Т, указывающими на наличие ошибки и игнорирование данных атрибутов. Далее раположено поле со счетчиком ссылок на файл. В нашем примере здесь стоит единица, свидетельствующая о том. что /bin/sh — единственное имя, под которым известен данный файл. Всякий раз при создании жесткой ссылки на файл этот счетчик увеличивается иа единицу
88
Чость I. Основы одминистрировонир
Каждый каталог имеет минимум две жесткие ссылки одну из родительского каталога и одну из специального файла 7 внутри самого каталога. Символические ссылки в счетчике не учитываются. Следующие два поля — владелец и группа файла. В данном случае владельцем файла является пользователь root, и файл принадлежит группе bin, В действительности ядро хранит эти данные не как строки, а как идентификаторы пользователя и группы. Если символьные версии имен определить невозможно, в этих полях будут отображаться числа. Такое может случиться, если запись пользователя или группы была удалена из файла
/etc/pesswd или /etc/group соответственно. Не исключено также, что возникла ошибка в сетевой административной базе данных (см. главу 18). Затем следует поле, отображающее размер файла в байтах. Рассматриваемый файл имеет размер 85924 байта, те. почти 84 Кбайт. Далее указывается дата последнего изменения 27 сентября 1997 г. В последнем поле листинга содержится имя файла /bln/sh. Для файла устройства команда Is выдает несколько иную информацию. Например
I -1 / d e v / t t y » c r w - r w - r w - 1 r o o t daemon 12, 0 Dec 20 1998 / d e v / t t y a В основном поля те же, но вместо размера в байтах показаны старший и младший номера устройства. Имя относится к первому устройству, управляемому драйвером устройства 12 (в данной системе это драйвер терминала. При поиске жестких ссылок может оказаться полезной команда Is -i, отображающая для каждого файла номер индексного дескриптора. Ие вдаваясь в детали реализации файловой системы, скажем, что этот номер представляет собой индекс таблицы, в которой перечислены все файлы системы. Жесткие ссылки, указывающие на один и тот же файл, будут иметь один и тот же номер. Система автоматически отслеживает время изменения, число ссылок и размер файла. С другой стороны, права доступа и идентификаторы принадлежности файла изменяются явным образом с помощью команд climod, chown и chgrp. Дополнительные флаги во Во FreeBSD и других системах, построенных на ядре 4.4BSD, имеется ряд дополнительных флагов, которые могут быть установлены для файлов. Эти флаги связаны с расширенной семантикой файловой системы. Например, флаг s a p p n d делает файл доступным только для присоединения (это может быть полезно при создании журнальных файлов. А благодаря флагу s c h g файл становится неизменяемыми неудаляемым. Узнать о наличии этих файлов поможет команда Is -о
% l a - l o / k e r n e l
- r - x r - x r - x 1 r o o t Wheel s c h g 2498230 Nov 3C 2 3 : 5 1 / k e r n e l
" К " обозначает "кило" — метрическую приставку, которой соответствует множитель 1000. В вычислительной технике этот символ имеет несколько иной смысл 1 килобайт равен 210, или 1024, байтам. Аналогичным образом мегабайт — это ие миллион байтов, а 220, или
1048576, байтов.
Гпово 5 Фойловоя системо 93
Управлять флагами можно с помошью команды chflags
# c h f l a g e noechg / k e r n e l
# I s - l o / k e r n e l
- r - x r - x r - x 1 r o o t wheel - 2498230 Nov 30 23:51 / k e r n e l Список доступных флагов вы можете получить на странице интерактивного руководства chflags(l).
Комондо chmod: изменение пров доступа Код режима доступа к файлу можно изменить с помошью команды chmod. Это право предоставлено только владельцу файла и пользователю root. В ранних системах код задавался в виде восьмеричного числа. В современных версиях поддерживается также система мнемонических обозначений. Первый способ удобнее для системного администратора, но при этом можно задать только абсолютное значение режима доступа. А используя мнемонический синтаксис, вы можете сбрасывать и устанавливать отдельные биты режима. Первым аргументом команды chmod является спецификация прав доступа. Второй и последующий аргументы — имена файлов, права доступа к которым подлежат изменению. При использовании восьмеричной нотации первая цифра относится к владельцу, вторая — к группе, а третьяк остальным пользователям. Если необходимо задать биты S U I D / S G I D или бит, следует указывать не три, а четыре восьмеричные цифры. Первая цифра в этом случае будет соответствовать трем специальным битам. В табл. 5.3 показано восемь возможных комбинаций для каждого трехбитового набора, где символы г, w их обозначают соответственно чтение, запись и выполнение. Таблица 5.3. Коды пров доступов команде chmod Восьмеричное число Двоичное число Моек о режимо доступо
0 ООО

1 001
—X
2 010
-w-
3 011
-wx
4 100 г
5 101 г - х
6 110 rw-
7 111 rwx Например, команда chmod 711 myprog предоставляет владельцу все права, а всем остальным пользователям — только право выполнения. В табл. 5.4 представлены некоторые примеры мнемонических спецификаций. Если файл myprog является сценарием интерпретатора shell, должно быть также задано право чтения для остальных пользователей. Файлы сценариев, запускаемые интерпретатором, открываются и читаются в текстовом виде. Двоичные файлы выполняются непосредственно ядром, поэтому для них ненужно задавать право чтения.
94
Чость I. Основы одминистрировонир
Таблица 5.4. Примеры мнемонических спецификоций комонды chmod Спецификация Смысл u+w Владельцу файла дополнительно дается право выполнения ug^rw, о^г Владельцу и фуппе предоставляется право чтения/записи, остальным пользователям — право чтения ах Все пользователи лишаются права выполнения u g ^ s r x , © - Владельцу и группе дается право чтения/выполнения, устанавливается также бит SUID; остальным пользователям запрещен доступ к файлу д=и Группе назначаются такие же права, что и владельцу Символ u ("user") обозначает владельца файла, символ g ("group") — группу, символ о ("others") — других пользователей, символ a ("all") — всех пользователей сразу. Команды и chgrp: смена владельцев Команда chown предназначена для изменения владельца файла, а команда chgrp — для изменения группы, которой принадлежит файл. Первым аргументом обеих команд является имя нового владельца или новой группы соответственно. Для того чтобы выполнять команду chgrp, необходимо либо быть владельцем файла и входить в назначаемую группу, либо быть пользователем root. В большинстве версий команд chown и chgip предусмотрен флаг -R, который задает смену владельца или группы не только самого каталога, но и всех его подкаталогов и файлов. Например, последовательность команд
| Chmod 755 - m a t t
# chown -R m a t t - m a t t
# c h g r p - R s t a f f - m a t t можно использовать для конфигурирования начального каталога нового пользователя после копирования в него стандартных файлов сценариев. Не следует пытаться выполнять команду chown для файлов, имена которых начинаются сточки Указанному шаблону поиска соответствует также файл "malt/.., вследствие чего команда изменит и владельца родительского каталога. В некоторых системах посредством команды chown можно изменять владельца и группу файла одновременно. Ее синтаксис в этом случае таков chown пользователь, группа файл.
Например:
I chown —R m a t t ; s t a f f - m a t t Версии UNIX, относящиеся к семейству System V, часто позволяют пользователям отказываться от владения своих™ файлами с помощью команды chown, тогда как в системах команду chown может выполнять только суперпользователь. Практика показывает, что возможность свободного изменения принадлежности файлов приводит к многочисленным проблемам.
Главо 5. Файловая система
95
в частности к превышению дисковых квот. Лучше всего, если выполнять эту команду разрешается только пользователю root. Команда umask: задание стандартных прав доступа Встроенная команда umask позволяет менять стандартный режим доступа к создаваемым файлам. Значение umask задается в виде трехразряд- ного восьмеричного числа, которое соответствует отнимаемым правам доступа. При создании файла код доступа устанавливается равным разнице между величиной, которую запрашивает создающая файл программа, и значением umask. В табл. 5.5 перечислены возможные комбинации битов режима для команды umask. Таблица 5.5. Схвмо кодиоовония значения umask Восьмеричное число Двоичное число Маска режима доступа
0 ООО rwx
1 001 r v -
2 010 r-x
3 Oil г
4 100 -wx
5 101 - v -
6 110 —x
7 111 Например, команда umask 027 предоставляет все права владельцу файла, запрещает читать файл группе и не дает никаких прав остальным пользователям. По умолчанию значение umask равно, как правило, 022, те. выполнять модификацию файла разрешается только его владельцу. Не существует способа, которым можно было бы заставить пользователя придерживаться конкретного значения umask, так как он в любой момент может изменить его. Возможно, однако, задание стандартного значения umask в тех копиях файлов .cshrc и .profile, которые предоставляются новым пользователям системы.
О стандартных файлах сценариев читайте в главе 6.



Поделитесь с Вашими друзьями:
1   ...   4   5   6   7   8   9   10   11   ...   82


База данных защищена авторским правом ©nethash.ru 2019
обратиться к администрации

войти | регистрация
    Главная страница


загрузить материал