Страница 1 из 1

Заметка:Автомонтирование флешек внутрь jail'a с помощью devd

Добавлено: 2010-06-21 20:27:03
asim
Появилась задача монтировать и размонтировать флешки в автоматическом режиме в директорию внутрь jail ( у меня, например, десктоп в jailе живет),
внутри которого монтирование запрещено. После изучения темы в интернете, было принято решение реализовать автомонтирование помощью devd и
родился нижеследующий скипт, который в настоящий момент успешно используется. Может кому-нибудь тоже пригодится.

Код: Выделить всё

#!/bin/sh
#
#author Alexander Makarenkov
#vesrion        20100506
#e-mail asim@makarenkov.info
#################################################################
UMASS_MOUNT_PATH=/host/run/item/asim/mnt/removable
#################################################################

remove_prefix(){
echo ${1#${2}}
}

dev_da_list(){
local result
result=''
for i in `ls /dev/da[0-9][a-z]*`; do
    device_name=`remove_prefix "$i" '/dev/'`
    result="$result $device_name"
done
echo "$result"
}


mnt_da_list(){
local result
result=''
for i in `mount | grep '/dev/da' | cut -f 1 -d ' '`; do
    if [ ! -z "$i" ]; then
        device_name=`remove_prefix "$i" '/dev/'`
        result="$result $device_name"
    fi
done
echo "$result"
}




do_mount(){
# $1 - device name
if [ ! -d "$UMASS_MOUNT_PATH/$1" ]; then
        mkdir -p "$UMASS_MOUNT_PATH/$1" && chmod 770 "$UMASS_MOUNT_PATH/$1"
fi
if [ -d "$UMASS_MOUNT_PATH/$1" ]; then
         mount -o rw,sync "/dev/$1" "$UMASS_MOUNT_PATH/$1" || mount -t msdosfs -o rw,sync,longnames,-L=ru_RU.KOI8-R,-D=CP1251 "/dev/$1" "$UMASS_MOUNT_PATH/$1" || mount -t ext2fs -o rw,sync "/dev/$1" "$UMASS_MOUNT_PATH/$1"

fi
}


is_in_list(){
# $1 - item
# $2 - list
for i in `echo "$2"`; do
    if [ '.'"$1" = '.'"$i" ]; then
        return 0
    fi
done
return 1
}


#################################################################
PATH='/bin:/sbin:/usr/bin:/usr/sbin'
dev_da_list=`dev_da_list`
mnt_da_list=`mnt_da_list`
###########mount da devices that are not mounted yes#############
for i in `dev_da_list`; do
        if [ ! -z "$i" ]; then
            if ! `is_in_list "$i" "$mnt_da_list"`; then
                do_mount "$i" 2>> /dev/null
            fi
        fi
done
#######umount mounted da devices that are not exists#############
for i in `mnt_da_list`; do
        if [ ! -z "$i" ]; then
            if ! `is_in_list "$i" "$dev_da_list"`; then
                umount -f "/dev/$i" 2>> /dev/null
            fi
        fi
done
########### remove unmounted mountpoints #############
mnt_da_list=`mnt_da_list`
for i in `ls "$UMASS_MOUNT_PATH"`; do
        if [ ! -z "$i" ]; then
            if ! `is_in_list "$i" "$mnt_da_list"`; then
                rm -R "$UMASS_MOUNT_PATH/$i"
            fi
        fi
done
#################################################################
У меня скрипт расположен на хостовой машине в /etc/bin

Соответственно в devd.conf он прописывается следующим образом:

Код: Выделить всё

### Automount umass devices
attach 10 {
match "device-name" "umass[0-9]+";
action "sleep 4 && /etc/bin/umass-automount.sh";
};

detach 10 {
match "device-name" "umass[0-9]+";
action "/etc/bin/umass-automount.sh";
};
###

Re: Заметка:Автомонтирование флешек внутрь jail'a с помощью

Добавлено: 2010-10-03 20:36:26
Alex Keda
типа статья?
а зачем такое вообще?

Re: Заметка:Автомонтирование флешек внутрь jail'a с помощью

Добавлено: 2010-10-03 21:57:30
asim
Ну для статьи это наверное слишком убого, да и тема действительно не шибко востребованная.

Понадобиться такое может в реальной жизни, как мне кажется, если, например, в jailе живет какой-нибудь софт, который в нужный момент времени читает с флешки ключи для шифрования или подписи. Мне понадобился для того чтобы автомонтировать флешки в jail где у меня живет desktop.
Также, возможно, просто в том случае, если без всяких jailов нужно автомонтирование флешек, но неохота связываться c hal или amd.

В похожих решениях с devd (например http://m.habrahabr.ru/post/68828/ ) в частности были следующие проблемы, которые я постарался решить в этом скрипте:
>>Фиксированное название раздела носителя (da0s1) не позволит смонтировать в автоматическом режиме другие носители;
>> Фиксированный тип файловой системы (msdosfs) на монтируемом носителе не позволяет правилом attach смонтировать носитель, с тем же названием раздела, но с отличной от FAT ФС.

Re: Заметка:Автомонтирование флешек внутрь jail'a с помощью

Добавлено: 2010-10-05 8:14:41
manefesto
хм, все равно не понимаю.
джаил не должен иметь доступ к физическим устройствам и баста....оно же клетка