Большой архив статей, книг, документации по программированию, вебдизайну, компьютерной графике, сетям, операционным системам и многому другому
 
<Добавить в Избранное>    <Сделать стартовой>    <Реклама на сайте>    <Контакты>
  Главная Документация Программы Обои   Экспорт RSS E-Books
 
 

  Раздел: Компьютерная документация -> Операционные системы -> FreeBSD

 

FreeBSD: монтирование сменных устройств и механизм HAL

В одном из комментариев к Саге о FreeBSD мне попалась такая фраза от некоего анонима:

бсдшники настолько суровы, что флешки вручную монтируют.

Что на это можно ответить? Да, фришники — народ суровый, и монтируют флешки вручную. Более того, делают это только от root'а. И поступают так же с компактами, сменными дисками и носителями цифровых камер. Правда, только тогда, когда им этого хочется.

А когда им это становится лениво, они настраивают возможность монтирования сменных устройств от лица пользователя. И, дабы уж до конца испугать анонимов своей суровостью, подчас не брезгуют даже автоматическим монтированием.

Давеча как раз этим мне и пришлось заниматься на одной дружественной машине, так что я решил вкратце описать последовательность действий — поскольку собственно в Саге о FreeBSD речь до этого дойдёт ещё не скоро, а нервы анонимов надо беречь — иначе кто же будет комментировать материалы в таких количествах?

Начнём с вопроса о монтировании с правами юзера.

Начинающих пользователей FreeBSD, имеющих некоторый опыт работы в современных дистрибутивах Linux'а, часто раздражает необходимость получать права администратора для монтирования сменных накопителей (компакт-дисков, флэшек, носителей цифровых камер и тому подобных). И по умолчанию это действительно так, а попытки решить эту задачу простым редактированием файла /etc/fstab по образу и подобию Linux'ового успеха иметь не будут — опция user, обеспечивающая эту функцию в последней ОС, командой mount из FreeBSD не поддерживается.

И тем не менее необходимость административных прав для монтирования сменных устройств во FreeBSD — кажущаяся. Вот только для реализации права юзера на монтирование потребуются несколько иные действия, нежели в Linux'е.

Для начала необходимо обеспечить пользователю права доступа к файлам устройств, соответствующих сменным носителям — напомню, что это файлы вида /dev/acd# для компакт-дисков и /dev/da0 для любых носителей с USB-интерфейсом. Поскольку, начиная с ветки 5, во FreeBSD используется файловая система устройств devfs, прямое изменение атрибутов доступа командой типа chown ничего не даст: она, как известно, пересоздаётся при каждом рестарте машины. А потому пойдём иным путём: получив привилегии root'а, устанавливаем необходимые права доступа к файлам сменных устройств в файле /etc/devfs.conf, отвечающем за поведение файловой системы devfs, вписав в него такие строки:

perm    /dev/acd0    0666
perm    /dev/xpt0    0666
perm    /dev/pass0   0666
perm    /dev/da0	 0666
perm    /dev/da0s1   0666
...

и так далее.

Заодно тут же снимаем символ комментария со строки

#link    acd0    cdrom

Благодаря этому при воссоздании devfs перечисленные выше файлы не только получат нужные атрибуты доступа (чтение и запись для владельца, группы и прочих) , но будет устанавливаться также символическая ссылка для файла /dev/cdrom -> /dev/acd0: такое имя привода компакт-диска желают видеть некоторые программы, например, mplayer.

Затем в файле /ect/sysctl.conf разрешаем монтирование VFS от имени обычного пользователя:

vfs.usermount=1

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

% mkdir ~/cdrom ~/usb [что ещё нужно]

Проверяем правильность настроек командами:

% /sbin/mount -t msdosfs /dev/da0s1 ~/usb
% /sbin/mount -t cd9660 -o ro /dev/da0s1 ~/cdrom

Если монтирование проходит нормально, то вносим в файл /etc/fstab соответствующие строки:

/dev/acd0 /home/username/cdrom cd9660 ro,noauto 0 0
/dev/da0s1 /home/username/usb msdosfs rw,noauto 0 0

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

Operation not permitted

Почему — тайна сия велика есть, но такой результат не исключён. Однако и тут есть решение, даже два, правда, оба — на уровне шаманских рецептов.

Первое решение — это (от лица суперпользователя) присвоить командам /sbin/mount и /sbin/umount так называемый бит суидности:

# chmod a+s /sbin/mount /sbin/umount

Не очень изящно, но, говорят, работает.

Второе же решение — вообще попахивает колдовством: произвести монтирование и размонтирование устройства от имени администратора в процессе инициализации системы. Проще всего это сделать посредством скрипта следующего содержания:

#!/bin/sh
mount /cdrom;  umount /cdrom
mount /mnt; umount /mnt

который поместить в каталог /usr/local/etc/rc.d/ под именем, например, mount_umount.sh. Наличие компакта в приводе или флэшки, подсоединённой к USB-порту, не обязательно.

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

Однако есть и более радикальный метод настройки монтирования сменных носителей от лица пользователя — использование механизма HAL (Hardware Abstraction Level). Правда, насколько мне известно, работает он только в Иксах, точно — в интегрированных средах KDE, GNOME и Xfce, за менеджеры окон не скажу по незнанию. Хотя, судя по тому, что порт hal идёт в качестве зависимости X-сервера, вероятно, и в некоторых из них этот механизм также поддерживается.

Итак, для начала необходимо установить соответствующий порт — /usr/ports/sysutils/hal. Правда, как только что было сказано, при установке Иксов и какой-либо из интегрированных сред он уже будет инсталлирован как зависимость, причём вместе с графическим фронт-эндом к нему (в случае с GNOME и Xfce это будет порт /usr/ports/sysutils/gnome-mount).

Далее, надо обеспечить запуск соответствующих демонов при старте системы. Собственно, демон, отвечающий за механизм HAL, так и называется — hald. Однако он зависит еще от нескольких стартовых служб — devd, usbd, dbus. Некоторые из них могут быть уже запущены — например, devd запускается по умолчанию (как это установлено в файле /etc/defaults/rc.conf). Определить, какие демоны уже функционируют можно, например, командой

# ps ux

Просматриваем её вывод и вписываем в файл /etc/rc.conf все недостающие строки из следующего набора:

usbd_enable="YES"
dbus_enable="YES"
hald_enable="YES"

Подчеркну, что никакой необходимости в установке прав доступа к файлам устройств или редактировании /etc/fstab, что требовалось при настройке описанного выше пользовательского монтировании вручную, при использовании механизма HAL не возникает. Хотя она (настройка) и ничему не мешает.

Теперь — собственно настройка. Она проста как грабли: отправляемся в каталог /usr/local/etc/PolicyKit и обнаруживаем там файл PolicyKit.conf. По умолчанию содержимое его следующее:

<config version="0.1">
    <match user="root">
	<return result="yes"/>
    </match>
    <define_admin_auth group="wheel"/>
</config>

Что предваряется следующей фразой:

<!-- See the manual page PolicyKit.conf(5) for file format -->

Руководствуясь man (5) PolicyKit.conf, между строками

    <define_admin_auth group="wheel"/>

и

</config>

дописываем следующие строки:

	<match action="org.freedesktop.hal.storage.mount-removable">
              <return result="yes"/>
	</match>
    <match action="org.freedesktop.hal.storage.mount-fixed">
               <return result="yes"/>
	</match>

разрешающие членам группы wheel монтирование сменных и внутренних носителей, соответственно. Мы ведь не забыли ранее включить нашего главного пользователя в эту группу, не так ли?

И после реинициализации системы (например, посредством временного перехода в однопользовательский режим или полного рестарта) получаем возможность автоматического монтирования сменных устройств сразу вслед за их помещением в привод или подсоединением к USB-порту.

По собственному опыту, через HAL нормально монтируется всё, что способно монтироваться: CD- и DVD-диски, флэшки, внешние винчестеры с USB-интерфейсом, носители внутри фотокамер и они же, подключённые через кард-ридер. Единственная проблема возникла с флэшкой, переформатированной через штатную опцию Windows умолчально, то есть с файловой системой VFAT не на разделе, а непосредственно на raw-устройстве. В чём дело - пока не понял, руками эта же флэшка монтируется как устройство /dev/da0, хотя и со второго пинка.

Конечно, в отличие от современных дистрибутивов Linux, где HAL, как правило, работает "из коробки", во FreeBSD подключение этого механизма требует некоторых телодвижений. Но, как мы только что видели, совсем не сложных. А для совсем уж ленивых существует PC-BSD — там HAL задействуется по умолчанию, точно так же, как и в любом Linux'е (о чем вкратце сказано здесь).

Автор: Алексей Федорчук
Источник: citkit.ru

Ссылки по теме
FreeBSD: диски, слайсы, партиции
Открытая криптография. Использование SSH
Открытая криптография. Конфигурирование SSH

Вся документация по FreeBSD

 

Компьютерная документация от А до Я - Главная

 

 
Интересное в сети
 
10 новых программ
CodeLobster PHP Edition 3.7.2
WinToFlash 0.7.0008
Free Video to Flash Converter 4.7.24
Total Commander v7.55
aTunes 2.0.1
Process Explorer v12.04
Backup42 v3.0
Predator 2.0.1
FastStone Image Viewer 4.1
Process Lasso 3.70.4
FastStone Image Viewer 4.0
Xion Audio Player 1.0.125
Notepad GNU v.2.2.8.7.7
K-Lite Codec Pack 5.3.0 Full


Наши сервисы
Рассылка новостей. Подпишитесь на рассылку сейчас и вы всегда будете в курсе последних событий в мире информационных технологий.
Новостные информеры. Поставьте наши информеры к себе и у вас на сайте появится дополнительный постоянно обновляемый раздел.
Добавление статей. Если вы являетесь автором статьи или обзора на тему ИТ присылайте материал нам, мы с удовольствием опубликуем его у себя на сайте.
Реклама на сайте. Размещая рекламу у нас, вы получите новых посетителей, которые могут стать вашими клиентами.
 
Это интересно
 

Copyright © CompDoc.Ru
При цитировании и перепечатке ссылка на www.compdoc.ru обязательна. Карта сайта.