CITKIT.ru - свободные мысли о свободном софте
Деловая газета CitCity.ru Библиотека CITForum.ru Форумы Курилка
Каталог софта Движение Open Source Дискуссионный клуб Дистрибутивы Окружение Приложения Заметки Разное
20.02.2017

Последние комментарии

ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)
24 December, 22:53
Kubuntu Feisty (15)
24 December, 18:42
Один на один с Windows XP (3758)
24 December, 11:46

Каталог софта

Статьи

Дискуссионный клуб
Linux в школе
Open Source и деньги
Open Source и жизнь
Windows vs Linux
Копирайт
Кто такие анонимусы
Лицензии
Нетбуки
Нужен ли русский Linux?
Пользователи
Дистрибутивы
Идеология
Выбор дистрибутива
Archlinux & CRUX
Debian
Fedora
Gentoo
LFS
LiveCD
Mandriva
OpenSolaris
Slackware
Zenwalk
Другие линуксы
BSD
MINIX
Движение Open Source
История
Классика жанра
Окружение
shell
Библиотеки UI
Графические среды
Шрифты
Приложения
Безопасность
Управление пакетами
Разное
Linuxformat. Колонки Алексея Федорчука
Заметки
Блогометки
Файловые системы
Заметки о ядре

Заметки :: Файловые системы

Монтирование cd (с правами пользователя) в FreeBSD 5.3

Дано: FreeBSD 5.3, мультиформатный cd/dvd пишущий привод NEC ND-3520A (любой другой, просто у меня такой).
Найти: Возможность монтировать cd/dvd от имени пользователя и с его правами.

1. Первоначальная настройка

Сразу замечу, что мы будем использовать драйвер ATAPI/CAM, что позже позволит нам использовать такие утилиты, как cdrecord и growisofs. Этот драйвер позволяет работать с ATAPI-устройствами (приводы CD-ROM, CD-RW, DVD и так далее) через подсистему SCSI.

Использование драйвера ATAPI/CAM подразумевает его подержку ядром, для этого в файл конфигурации ядра необходимо добавить следующие строки:

device atapicam
device scbus
device cd
device pass

Кроме того, в файле конфигурации ядра должна быть следующая строка:

device ata

которая уже должна там присутствовать. Подробности по ссылке.

Далее, мы должны создать новое ядро, как описано здесь.

После создания и установки нового ядра не торопитесь перезагружаться. Выполним некоторые настройки, описанные Евгением Чайкиным aka StarNNick (можно прочитать и здесь).

Я приведу их здесь со своими комментариями.

Для начала, выставим на устройства соответствующие права. В файле /etc/devfs.conf пропишем следующее:

perm    /dev/cd0     0666
perm    /dev/xpt0    0666
perm    /dev/pass0   0666

Если вы все еще используете флоппи диски... Нет, мы не идем к вам, просто добавьте туда же строчку:

perm    /dev/fd0     0666

Права можно установить и 0660, но тогда вам (пользователю, под которым вы работаете) необходимо войти в группу operator, поскольку устройство /dev/cd0 принадлежит пользователю root и группе operator.

Затем, установим переменную vfs.usermount в 1, путем прописывания её в /ect/sysctl.conf:

vfs.usermount=1

Важное замечание: В системных файлах FreeBSD последняя строчка должна заканчиватся символом перевода строки, в противном случае параметр, размещенный в последней строчке не будет применен. Будьте внимательны.

Далее, займёмся редактированием файла /etc/fstab, прописав в нем точки монтирования для тех пользователей, которым мы хотим разрешить это делать:

/dev/cd0 /cdrom cd9660 ro,noauto,-C=koi8-r 0 0
/dev/cd0 /home/user1/cdrom cd9660 ro,noauto,-C=koi8-r 0 0

Если вы все еще используете флоппи диски, добавьте:

/dev/fd0 /floppy msdosfs rw,noauto,-L=ru_RU.KOI8-R,-D=CP866 0 0
/dev/fd0 /home/user1/floppy msdosfs rw,noauto,-L=ru_RU.KOI8-R,-D=CP866 0 0

Теперь создайте точки монтирования /home/user1/cdrom, /home/user1/floppy, например, от имени пользователя, это не играет роли.

Далее Евгений рекомендует создать некий загрузочный скрипт /usr/local/etc/rc.d/mount_umount.sh, следующего содержания:

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

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

Если я использую этот скрипт, то при загрузке системы (у меня, во всяком случае) выводятся сообщения:

Local package initialization:cd9660 \
	/dev/cd0:Input/output error
	umount: /cdrom: \
	not a file system root directory

Возможно, так и надо, но меня это раздражает... :)

Прекрасно. "Отсель грозить мы будем шведу." Перезагружаемся.

2. Пожинаем плоды

Перезагрузились, радуемся новому ядру и новым возможностям. Вставляем в привод какой-нибудь диск (cd или dvd) и набираем в командной строке:

mount_cd9660 /dev/cd0 ~/cdrom

Диск должен успешно примонтироваться. Однако, у меня, хоть диск и смонтировался, но я не смог ничего на нем прочесть, потому что...

3. Чудеса начинаются

Сначала я думал, что я дурак... Я всегда так думаю, когда что-то идет не так.

Диск успешно смонтирован, но после выполнения команды mount, права доступа на точку монтирования установились в 0600 с UID=501 и GID=501. Это мне было непонятно, ведь пользователи в FreeBSD начинают нумероваться с 1000, и я завел обсуждение на форуме http://linuxforum.ru, в соответствующем разделе посвященном BSD-системам - http://www.linuxforum.ru/index.php?showtopic=6323. И мне действительно помогли найти некий промежуточный ответ (огромная благодарность Алексею Федорчуку за правильные наводящие вопросы).

Небольшая предыстория:
Прежде чем перебраться на FreeBSD, я долгое время в качестве домашней системы использовал Linux (если вам так интересно, то сначала это был Mandrake 8.2, и несколько позже Mandrake 9.1).

Естественным образом, я еженедельно бэкапил (это же естественно, не правда ли?) ценные данные на cd, и позже на dvd+rw. А политика доступа к файлам у меня была довольно жесткая (не люблю, когда копаются в моих данных), т.е на директории - 0700 или на файлы 0600, если только они не являются исполняемыми (для них маска доступа была 0700).

И в результате, поскольку я при записи данных на диски использовал как расширение Joilet, так и расширение Rock Ridge, эти права (вместе с GID и UID) были, естественным образом, бережно сохранены расширением Rock Ridge.

Последний штрих, необходимый для понимания, той ситуации, в которой я оказался - в Линукс (очень часто) нумерация пользователей начинается с 500, во всяком случае так и было в Mandrake (а есть дистрибутивы, где она начианется со 100, возможны и иные варианты - А.Ф.).

В итоге, mount, "увидев" на диске Rock Ridge, ничтоже сумняшеся, установил права на точку монтирования 0600, а также UID=501 и GID=501 (именно те, с которыми я работал под Linux). Кроме того, mount под FreeBSD не имеет многих полезных опций, (позволивших бы решить проблему) доступных в Linux, и это сильно осложнило положение.

Я оказался в глупом положении, куда сам себя же и загнал... Можете посмеяться... :) Нет, из под пользователя root я все прекрасно вижу, диск и файлы на нем великолепно читаются...

Гугление на тему не дало результата, а изменять свой GID и UID на 501 как-то неспортивно. Что делать, неясно. Что же делать?

4. Нормальные герои всегда идут в обход

Ну, или, пытаются это сделать. Попробуем amd. Нет, я еще не сошел с ума и не собираюсь менять процессор, amd это не процессор, это Automatically Mount Daemon. Итак, в файл /etc/amd.map дописываем строчку:

cdrom   type:=cdfs;dev:=/dev/cd0;opts:=ro

В файл /etc/rc.conf добавляем:

amd_enable="YES"
amd_flags="-r -l syslog /mnt1 /etc/amd.map"

Директорию /mnt1 создавать не нужно, она будет создана автоматически, при загрузке демона. Однако нужно создать директорию /.amd_mnt (это такой хитрый шаманизм). На самом деле, диск будет автоматически монтироваться именно в нее, а /mnt1/cdrom будет символической ссылкой на /.amd_mnt/cdrom/host.

Но мне все это не помогло, т.к. amd монтирует ровно с теми правами, о которых я писал выше. Вы, кстати, можете воспользоваться и amd, если для вас это окажется более удобно.

5. Итого

У меня оставалась одна нерешенная проблема, но зато я прекрасно провел время в попытках найти ее решение, узнал много интересного, и пообщался с замечательными людьми. Хочу сказать огромное спаcибо: Евгению Чайкину и Алексею Федорчуку.

Post Scsriptum: Да и проблема в итоге решилась просто - за счет внимательного чтения man mount_cd9660. Из которого следовало, что диск с Rock Ridge Extension следует монтировать следующим образом:

mount_cd9660 -o norrip /dev/cd0 ~/cdrom/ 

При этом опция norrip как раз и отвечает за то, чтобы расширения Rock Ridge (в частности, атрибуты доступа) игнорировались бы).





Новости:

Все новости на CitCity.ru

Компании месяца

 
Последние комментарии
Почему школам следует использовать только свободные программы (101)
20 Декабрь, 14:51
ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)

24 Декабрь, 22:53
Linux в школе: мифы про школу и информатику (334)
24 Декабрь, 22:43
Kubuntu Feisty (15)
24 Декабрь, 18:42
Software is like sex: it's better when it's free.
©Linus Torvalds