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

Обсуждаем сайт и форум.

Модератор: f0s

asim
проходил мимо
Сообщения: 2
Зарегистрирован: 2010-06-21 19:57:42

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

Непрочитанное сообщение asim » 2010-06-21 20:27:03

Появилась задача монтировать и размонтировать флешки в автоматическом режиме в директорию внутрь 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";
};
###

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35271
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

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

Непрочитанное сообщение Alex Keda » 2010-10-03 20:36:26

типа статья?
а зачем такое вообще?
Убей их всех! Бог потом рассортирует...

asim
проходил мимо
Сообщения: 2
Зарегистрирован: 2010-06-21 19:57:42

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

Непрочитанное сообщение asim » 2010-10-03 21:57:30

Ну для статьи это наверное слишком убого, да и тема действительно не шибко востребованная.

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

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

Аватара пользователя
manefesto
Группенфюррер
Сообщения: 6934
Зарегистрирован: 2007-07-20 8:27:30
Откуда: Пермь
Контактная информация:

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

Непрочитанное сообщение manefesto » 2010-10-05 8:14:41

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