Bug 22929

Summary: Не монтируются флешки на клиенте терминала.
Product: Школьный Reporter: Mike <amike>
Component: bugsAssignee: Anton V. Boyarshinov <boyarsh>
Status: CLOSED WORKSFORME QA Contact: Andrey Cherepanov <cas>
Severity: normal    
Priority: P3 CC: aen, led, mike, mithraen, shrek
Version: 5.0   
Hardware: all   
OS: Linux   
Bug Depends on: 21738    
Bug Blocks: 22919    
Attachments:
Description Flags
BROKEN fusermount.control none

Description Mike 2010-02-10 13:57:09 MSK
При подключении флешки, на рабочем столе появляется иконка подключённого устройства - но устройство пустое.
В системе видно создаётся директория /tmp/drives/usbdisk-sdb1, но в неё не монтируется устройство.
Comment 1 Mike 2010-02-10 13:57:36 MSK
Altlinux Terminal
Comment 2 Michael Shigorin 2010-02-16 11:16:38 MSK
uname -r на _сервере_ покажи -- там часом не tmc-tc установилось?
Comment 3 Andrey Cherepanov 2010-02-16 13:35:33 MSK
std-def-alt15
Comment 4 Michael Shigorin 2010-02-21 16:40:10 MSK
Всё, дошло.  В текущем tmc-tc опять отключен CONFIG_KALLSYMS=y, см. bug #21738 -- придётся либо дочинить там, либо пока(tm) откатить тут.
Comment 5 Michael Shigorin 2010-02-21 16:43:04 MSK
Заметил по отсутствию загруженных модулей nls_cp866, nls_utf8, vfat после засовывания флэшки: http://lists.altlinux.org/pipermail/ltsp-server/2009-August/001858.html
Comment 6 Michael Shigorin 2010-02-21 18:15:57 MSK
Мимо :(

Загрузил руками vfat, nls_utf8, nls_cp866, вытащил/вставил флэшку -- на десктопе появляется, но в /tmp/drives/usbdisk-sda1/ на терминале не монтируется.

2 led: не напомнишь, кто кого дёргал?  Читаю /etc/udev/rules.d/88-ltsp.rules и /lib/udev/add_fstab_entry, пока не соображу, что именно должно монтировать.
Comment 7 led 2010-02-21 19:39:14 MSK
sed -i 's|\$ENV{|$env{|g' /etc/udev/rules.d/88-ltsp.rules
sed -i 's|\(udev\)\(info\)|\1adm \2|g' /lib/udev/add_fstab_entry
Comment 8 Michael Shigorin 2010-02-21 20:35:40 MSK
(In reply to comment #7)
> sed -i 's|\$ENV{|$env{|g' /etc/udev/rules.d/88-ltsp.rules
> sed -i 's|\(udev\)\(info\)|\1adm \2|g' /lib/udev/add_fstab_entry
Спасибо. (btw ясней было бы 's|udevinfo|udevadm info|g')

Пока на глаз разницы не вижу -- при этом после успешно проходящего
mount /dev/sda1 /tmp/drives/sda1
изначально незагруженные модули nls_* и vfat автоматически загружены.
Comment 9 Michael Shigorin 2010-02-22 00:01:25 MSK
# killall ltspfsd
# ltspfsd -d -a
Program started
# суём флэшку
Packet length: 12
Packet buffer: 000c0001800031
Packet type: LTSPFS_XAUTH
status_return STATUS_OK
Packet length: 36
Packet buffer: 0002400019000182f746d702f6472697665732f7573626469736b2d73646131
Packet type: LTSPFS_MOUNT
mount: /tmp/drives/usbdisk-sda1
status_return STATUS_OK

Дебуга am_mount() _не_ наблюдаю.
Comment 10 Michael Shigorin 2010-02-23 00:36:47 MSK
t@comp-Pentium-M-80f8c4 ~ $ /usr/sbin/ltspfs -u ws250:/tmp/drives Documents
fuse: failed to open /dev/fuse: Permission denied
t@comp-Pentium-M-80f8c4 ~ $ LC_ALL=C ls -l /dev/fuse
crw-rw----+ 1 root fuse 10, 229 Jun  1  2009 /dev/fuse

При `control fusermount` == "public" сломалось монтирование ltspfs.  Если добавить прав на устройство, то по крайней мере вручную удалённое монтирование отрабатывает.

Кто у нас теперь занимается правами на /dev/fuse и что надо сделать, чтоб любой пользователь системы мог воспользоваться файловыми системами, реализованными через FUSE?
Comment 11 Valery Inozemtsev 2010-02-23 10:58:53 MSK
добавить пользователя в группу fuse
Comment 12 Valery Inozemtsev 2010-02-23 11:02:19 MSK
изменения в /etc/udev/rules.d/60-fuse.rules делались для сизифа, в 5.1 класть я это не планировал, т.к. работать должным образом в 5.1 это не будет
Comment 13 Michael Shigorin 2010-02-23 11:40:42 MSK
Спасибо; а что посоветуешь делать на терминальном сервере, когда пользователей может быть множество и возможность доступа к носителям обычно регулируется не столько per-user, сколько per-terminal (и для этого средства реализованы)?

Возможно ли прикрутить какой control к рулесам (если да и примешь, могу сделать) либо же (костыль) добиться добавления дополнительной группы посредством /etc/default/useradd?
Comment 14 Valery Inozemtsev 2010-02-23 11:46:47 MSK
там нужен старый 60-fuse.rules, выглядел он так
KERNEL=="fuse", MODE="0666", GROUP="fuse"
Comment 15 Michael Shigorin 2010-02-24 00:11:53 MSK
Да, так работает (вместе с правками, предложенными в #c7 led@); спасибо.

Похоже, для терминального чрута придётся на скору руку влепить грязный хак по пакетному файлу -- как думаешь, возможно ли это одистрибутивить?  Идеально бы синхронно с control fusermount, ну или хотя бы отдельным control udev-fuse каким.  Вопрос в том, чтоб не только в бранче такое прикрутить, а и в сизифе.
Comment 16 Valery Inozemtsev 2010-02-24 10:43:25 MSK
(В ответ на комментарий №15)
> Да, так работает (вместе с правками, предложенными в #c7 led@); спасибо.
> 
> Похоже, для терминального чрута придётся на скору руку влепить грязный хак по
> пакетному файлу -- как думаешь, возможно ли это одистрибутивить?

нужно пересобрать fuse с этим rules. того rules, что сейчас есть там быть не должно

>  Идеально бы
> синхронно с control fusermount, ну или хотя бы отдельным control udev-fuse
> каким.  Вопрос в том, чтоб не только в бранче такое прикрутить, а и в сизифе.

не понял что ты хочешь прикручивать, но в сизифе и так уже накручено и раздачей прав занимается ConsoleKit
Comment 17 Michael Shigorin 2010-02-25 12:37:12 MSK
lbuscd-0.6-alt9 добрался, fuse-2.8.2-alt1.M51.1 готов, обсуждаем с mithraen@ приемлемость общедоступности /dev/fuse.

2 led: не подскажешь, без привилегий на fusermount это чем-то чревато?

PS: запасной вариант -- chmod a+rw /dev/fuse в дополнительном инитскрипте на терминал-сервере (видимо, в пакете ltspfs).
Comment 18 Michael Shigorin 2010-03-02 22:41:29 MSK
Created attachment 4286 [details]
BROKEN fusermount.control

Добить control-файл двойного (точнее, аж тройного) действия не успевал на той неделе -- бухаю прям как есть недобитый на всякий случай.
Comment 19 Michael Shigorin 2010-03-02 22:45:00 MSK
В incoming отправлен ltspfs-0.3-alt4.20070117 с инитскриптом, который обеспечивает загрузку fuse.ko (на всякий) и при `control fusermount` == "public" -- публичные права на /dev/fuse.

Ставлю WORKSFORME, вдруг когда получится нормальный контрол выточить...