Монтирование сменных устройств для FreeBSD без прав root'а


Евгений Чайкин aka StraNNick
StraNN'ое место

5 апреля 2005 г

К моему удивлению, этот вопрос в Рунете освещен слабо. Источники неполны и разрознены. Между тем, всё не так уж и сложно. Я буду рассматривать этот вопрос на примере FreeBSD 5-й ветки.

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

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

Затем, установим значение переменной vfs.usermount, равное 1, путем прописывания её в /etc/sysctl.conf. Можно просто использовать команду

$ sysctl vfs.usermount=1

но тогда после первой же перезагрузки, она сбросится в 0).

Далее, займёмся редактированием файла /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/cd0 /home/user2/cdrom cd9660 ro,noauto,-C=koi8-r 0 0
/dev/cd0 /home/user3/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
/dev/fd0 /home/user2/floppy msdosfs rw,noauto,-L=ru_RU.KOI8-R,-D=CP866 0 0
/dev/fd0 /home/user3/floppy msdosfs rw,noauto,-L=ru_RU.KOI8-R,-D=CP866 0 0

Далее, надо не забыть создать в домашнем каталоге каждого пользователя соответствующие каталоги (cdrom и floppy). Теперь рабочие среды Gnome и KDE будут отображать состояние соответствующих устройств и пытаться управлять ими (монтировать и отмонтировать).

Далее пойдёт шаманство. Поскольку на носителях могут встретиться файлы с именами, содержащими кириллицу, в /etc/fstab прописаны соответствующие опции перекодировки. Но даже при вмонтировании в ядро соответствующих опций, всё равно будет выдаваться сообщение

operation not permitted

Как мне любезно объяснили на opennet, это известный баг и обойти его можно двояко - выставив SUID на mount/umount, либо произведя монтирование/отмонтирование этих устройств от имени root'а на этапе загрузки.

Второй способ показался мне более приемлемым, и я создав файл /usr/local/etc/rc.d/mount_umount.sh, прописал в нем:

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

Наличие носителя в устройстве необязательно.

На этом раскланиваюсь...

P.S. Существует неплохой порт автомонтирования для CD - audio/autocd, который замечательно справляется со своими обязанностями. К сожалению, используемый мной CD является пишущим, а необходимость отмонтировать CD перед каждой записью мне показалось неудобной...

Обновлено: 12.03.2015