Обслуживание разделяемых ресурсов CIFS

Точно так же, как операционная система FreeBSD может обращаться к разделяемым ресурсам CIFS, с помощью Samba она может предоставлять доступ клиентам CIFS к своим разделяемым ресурсам. Найти пакет Samba можно в каталоге /usr/ports/net/samba3. На веб-сайте проекта Samba (http://www.samba.org) кроме всего прочего можно найти множество полезных руководств. Обслуживание разделяемых ресурсов в операционной системе FreeBSD выполняется намного сложнее, чем доступ к ним, поэтому мы закончим обсуждение этой темы, чтобы книга не стала слишком толстой.

devfs

devfs(5) – это динамическая файловая система, предназначенная для управления файлами устройств. Не забывайте, что в UNIX-подобных системах все сущее является файлами. Это относится и к физическим устройствам. Для каждого устройства в системе имеется свой файл устройства в каталоге /dev.

Когда-то давно системный администратор нес ответственность за создание этих файлов устройств. Наиболее удачливые администраторы получали систему, поставляемую вместе с файлом сценария на языке командного интерпретатора, который создавал файлы устройств и определял права доступа к ним. Если производитель операционной системы не прилагал подобный сценарий, или к серверу были подключены необычные устройства, которые не обрабатывались этим сценарием, то системному администратору приходилось создавать файлы устройств с помощью магических заклинаний и утилиты mknod(8). В этом случае при малейшей ошибке устройство могло не работать. Как вариант можно было бы распространять операционную систему с файлами устройств для всех мыслимых аппаратных средств. Тогда системные администраторы могли бы быть уверены, или почти уверены, что нужный файл устройства находится где-то в каталоге /dev среди тысяч других файлов.

Безусловно, ядро точно знает, какими характеристиками должен обладать каждый файл устройства. Посредством devfs(5) операционная система FreeBSD просто спрашивает у ядра, какие файлы устройств, по его мнению, должны иметься в системе, и создает только те, которые действительно необходимы. Этот подход оправдывает себя в большинстве случаев. Однако наш с вами случай не попадает в это «большинство». Мы должны быть готовы к появлению многих неожиданностей. Возможно, нам потребуется создавать файлы устройств с другими именами, изменять права доступа или настраивать устройства уникальным образом. В операционной системе FreeBSD задача управления файлами устройств имеет три подзадачи: конфигурирование устройств на этапе загрузки, глобальная видимость и права доступа, а также конфигурирование устройств с помощью devd(8), которые появляются динамически уже после загрузки.

Управление устройствами и серверы

В большинстве случаев управление файлами устройств на серверах не предполагает каких-либо дополнительных настроек и вмешательства со стороны человека. Чаще всего с файлами устройств приходится возиться на ноутбуках и иногда на рабочих станциях. Инструментальные средства операционной системы FreeBSD, предназначенные для управления файлами устройств, обладают высокой гибкостью и включают поддержку таких ситуаций, с которыми я и не предполагал столкнуться в ближайшие сто лет. Мы затронем лишь самые основы. Не надо думать, что вам обязательно нужно овладеть навыками работы с devfs(5), чтобы обеспечить бесперебойную работу своего сервера!

devfs на этапе загрузки: devfs.conf

Самая большая проблема системного администратора, связанная с динамической файловой системой devfs, состоит в том, что все сделанные изменения исчезают при перезагрузке системы. Когда файлы устройств постоянно хранились на диске, системный администратор мог создавать символические ссылки на эти файлы или изменять права доступа к ним, не беспокоясь, что его изменения могут исчезнуть. С появлением автоматизированной и динамической файловой системы устройств такой уверенности больше нет. (Конечно, вам больше не нужно овладевать оккультными командами mknod(8), так что вам, скорее, повезло.) Среди изменений файлов устройств можно назвать следующие:

•                 Создание файлов устройств под различными именами

•                 Изменение принадлежности файлов устройств

•                 Сокрытие файлов устройств от пользователей

На этапе загрузки devfs(5) создает файлы устройств в соответствии с правилами в файле /etc/devfs.conf.

devfs.conf

С помощью файла /etc/devfs.conf можно создавать символические ссылки, изменять принадлежность файлов устройств и определять права

доступа к устройствам на этапе загрузки. Каждое правило имеет следующий формат:

операция          устройство желаемое_значение

В качестве операции можно употреблять link (создание ссылки), perm (установка прав доступа) и own (установка принадлежности). Под устройством понимается существующий файл устройства, а последнее поле в записи – это желаемое значение. Например, ниже для файла устройства создается новое имя:

Olink     ©acdO    ©cdrom

Нам требуется создать символическую ссылку О на файл устройства /dev/acdO © (привод ATAPI CD), и чтобы ссылка имела имя /dev/ cdrom ©. Если перезагрузиться с этой записью в /etc/devfs.conf, наше устройство /dev/acdO будет также доступно как /dev/cdrom, как того ожидают многие мультимедийные программы.

Чтобы изменить права доступа к файлу устройства, эти права должны быть определены в восьмеричной форме в поле желаемого значения:

perm      acdO    666

Здесь определены такие права доступа к устройству /dev/acdO (все тот же привод компакт-дисков), которые позволят любому пользователю в системе выполнять запись и чтение с этого устройства. Запомните, изменение прав доступа к символической ссылке /dev/cdrom никак не отразится на правах доступа к файлу устройства – это всего лишь символическая ссылка.

Наконец, можно изменить владельца устройства. Изменение владельца обычно указывает, что вы пытаетесь решить проблему не совсем правильным способом и, возможно, вам следует остановиться и подумать. Однако FreeBSD не будет возражать против такого вмешательства в систему, если вы настаиваете на этом. Следующая строка дает конкретному пользователю безраздельный контроль над дисковым устройством /dev/da20:

own       da20    mwlucas:mwlucas

Однако это может и не дать желаемый эффект, поскольку некоторые программы по-прежнему могут считать, что вы должны обладать правами root для выполнения операций с устройством. Я встречал такие программы, которые завершались самостоятельно, если их запускали с привилегиями обычного пользователя, при этом они даже не пытались обратиться к файлу устройства. Изменение прав доступа к файлу устройства никак не отразится на поведении таких программ, если они будут запускаться без привилегий пользователя root.

Процедура конфигурирования devfs(5) позволит решить многие проблемы, но далеко не все. Если необходимо, чтобы устройство было просто невидимо и недоступно, следует использовать правила devfs.

Глобальные правила devfs

Каждый экземпляр devfs(5) ведет себя в соответствии с правилами, которые определены в файле devfs.rules. Правила devfs применяются как к устройствам, которые обнаруживаются на этапе загрузки системы, так и к устройствам, которые подключаются и отключаются во время работы системы. Правила позволяют изменять принадлежность файлов устройств, права доступа к ним, а также могут делать их видимыми или невидимыми. Но с помощью правил devfs нельзя создать символическую ссылку на файл устройства.

FreeBSD использует файлы /etc/devfs.rules и /etc/defaults/devfs.rules подобно файлам /etc/rc.conf и /etc/defaults/rc.conf. Добавляйте свои правила в файл /etc/devfs.rules и не трогайте содержимое файла по умолчанию.

Формат определения набора правил devfs

Каждый набор правил devfs начинается с имени и номера в квадратных скобках. Например, ниже приводятся несколько базовых правил из конфигурации по умолчанию:

[Odevfsrules_hide_all=©1 ] ©add hide

Первый набор правил называется devfs hide all О и имеет номер 1 ©. Этот набор содержит всего одно правило ©.

Содержимое набора правил

Все правила devfs (в файлах) должны начинаться со слова add, которое добавляет правило в набор. После него можно указать ключевое слово path и определить регулярное выражение, которое будет соответствовать именам устройств, либо type, и указать тип устройства. В конце правила должно находиться определение выполняемого действия или команды. Ниже приводится пример правила devfs:

add path da* user mwlucas

Это правило назначает пользователя mwlucas владельцем всех файлов устройств, чьи имена начинаются на da. В многопользовательских системах или в системах, оснащенных жесткими дисками SCSI, этого делать не следует. На ноутбуке, где на da начинаются только имена USB- устройств хранения данных, это не такая плохая идея.

При определении устройств с помощью ключевого слова path используются стандартные регулярные выражения командного интерпретатора. Если необходимо, чтобы правило применялось к нескольким устройствам, используйте символ звездочки в качестве шаблонного символа. Например, определение path ad1s1 соответствует единственному устройству /dev/adlsl, а определение path ad*s* будет соответствовать всем устройствам, имена которых начинаются с ad, за которыми могут

следовать символы, далее находится символ s, вслед за которым также могут следовать дополнительные символы. Точно определить, какие устройства будут соответствовать шаблону, можно с помощью командной строки:

# Is /dev/ad*s*

Эта команда выведет все участки и разделы на жестких дисках АТА, но не выведет файлы устройств, которые соответствуют целым дискам.

Ключевое слово type указывает, что данное правило применяется ко всем устройствам заданного типа. Здесь можно использовать ключевые слова disk (дисковые устройства), mem (устройства памяти), tape (накопители на магнитных лентах) и tty (устройства терминалов, включая псевдотерминалы). Ключевое слово type используется достаточно редко именно потому, что оно охватывает целые группы устройств.

Если в правило не включается ключевое слово type или path, то оно применяется ко всем файлам устройств, что практически во всех случаях нежелательно.

В качестве выполняемого действия может быть использовано одно из следующих: group, user, mode, hide и unhide. Действие group позволяет определять принадлежность файла устройства к группе, название которой передается в виде дополнительного аргумента. Похожим образом действие user позволяет назначить владельца устройства. Следующие правила делают пользователя desktop и группу usb владельцами дисков da:

add path da* user desktop add path da* group usb

Действие mode позволяет определять права доступа к устройству в стандартной восьмеричной форме:

add path da* mode 664

Ключевое слово hide позволяет скрывать файлы устройств, a unhide – делать их видимыми. Так как ни одна программа не может использовать файл устройства, если он невидим, данная возможность находит ограниченное применение, за исключением случаев использования jail(8). Мы будем рассматривать эту специфическую область применения команд hide и unhide в следующей главе.

После того как набор правил devfs будет определен, его можно будет активировать в файле /etc/rc.conf. Следующая строка активирует набор правил devfs с именем laptoprules:

devfs_system_rulesets="laptop rules"

He забывайте, что правила devfs применяются как к устройствам, которые определяются на этапе загрузки, так и к устройствам, которые подключаются динамически, после запуска системы. В заключение посмотрим на устройства, подключаемые динамически.

Источник: ЛукасМ. FreeBSD. Подробное руководство, 2-е издание. – Пер. с англ. – СПб.: Символ- Плюс, 2009. – 864 е., ил.

Похожие посты:

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий