AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

RW монтирование fat для non-root

Unix Way 2 сообщений 12.10.2009 06:22 - 12.10.2009 12:42
#1 12.10.2009 06:22

RW монтирование fat для non-root


Всем привет!
Есть странная проблема с монтированием vfat раздела - не применяются "права", невозможно записать в раздел не под рутом.
Исходные данные:
/dev/hdc1 - флешка с файловой системой vfat
/flash - каталог, куда ее замонтировать
uid=101 - пользователь, под которым надо писать во флеш
uid=102 - группа, которой можно писать во флещ.

делаем:

bash-3.2# uname -r
2.6.18-53.1.4.el5 (centos какая-то)

#пробуем замонтировать так:
bash-3.2# mount -t vfat -o uid=101,defaults,dmask=007,fmask=007 /dev/hdc1 /flash
#отображаемые права без изменений:
bash-3.2# ls -n
total 72
. . .
drwxr-xr-x 6 0 0 4096 Dec 31 1969 flash
. . .

#пробуем замонтировать по-другому:
bash-3.2# mount -t vfat -o uid=101,defaults,dmask=000,fmask=000 /dev/hdc1 /flash
#ни каких изменений:
bash-3.2# ls -n
total 72
. . .
drwxr-xr-x 6 0 0 4096 Dec 31 1969 flash
. . .

Что пробовал:
- всевозможные комбинации параметров mount
- прописывать жестко в fstab
- монтировать под пользователем, которому нужна запись
и еще три десятка рецептов, которые не помогли.

Немного о системе:

bash-3.2# mount
/dev/mapper/livecd-rw on / type ext3 (rw,noatime)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)

Эта система - "прошивка" VoIP сервера на астере (я выкладывал новость). Корень запакован в squashfs, стартует с флешки как livecd, после запуска носитель не доступен, потом его монтируем по метке в каталог /flash. Можно, конечно, все перевести в ext3 и проблема уйдет, но много виндозных пользователей (как и я сам), которые не могут читать/писать ext3 разделы, что нехорошо скажется на скорости восстановления системы в случае сбоя.

Спасибо за советы.
#2 12.10.2009 12:42

решение найдено.

Как и предполагалось, еще одно монтирование совершалось с прежними правами. Решить проблему можно с помощью петлевого устройства (раздел монтируется при старте по метке):

mount -L TRIXBOXLIVE -t vfat -o loop,remount,gid=102,uid=101,umask=000 /flash

НО! по каким-то причинам этот способ не работает. Поэтому в стартовом скрипте сделал так:

umount -f /flash
DEVICE=$(blkid -o device -t LABEL="TRIXBOXLIVE" -l)
LOOP_DEV=$(losetup -f)
losetup "${LOOP_DEV}" "${DEVICE}"
mount "${LOOP_DEV}" /flash -o uid=101,gid=102,umask=000 -t vfat