LINUX.ORG.RU

>Как разрешить не руту отмонтировать СД, флешку и т.д.?

Добавь пользователя в группу plugdev.

Zubok ★★★★★
()

>Где указать codepage и iocharset для монтирования флешек (а может, и СД)?

В policy для hal

Zubok ★★★★★
()
Ответ на: комментарий от anonymous

>Пользователь во всех этих группах состоит.

А, ну еще добавь опцию user в соответсвующих записях в /etc/fstab. Там же и для cdrom можешь указать кодировки.

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

> А, ну еще добавь опцию user в соответсвующих записях в /etc/fstab. Там же и для cdrom можешь указать кодировки.

Ну с СД да, можно, а вот с тем, что засовывается в USB - нет.

anonymous
()
Ответ на: комментарий от anonymous

>Там их вроде несколько, не подскажешь, куда?

В каталоге /usr/share/hal/fdi/policy/ находишь три подкаталога: 10osvendor, 20thirdparty и 30user. В этом порядке они и запускаются. Тебе, соотвтественно, нужен 30user. Туда добавь новое правило про vfat.

Zubok ★★★★★
()

Посмотри на пакет usbmount - автоматически монтирует usb storage с заданными параметрами. Очень простой и удобный :)

anonymous
()
Ответ на: комментарий от Zubok

> В каталоге /usr/share/hal/fdi/policy/ находишь три подкаталога: 10osvendor, 20thirdparty и 30user. В этом порядке они и запускаются. Тебе, соотвтественно, нужен 30user. Туда добавь новое правило про vfat.

Спасибо, вечерком попробую, тогда напишу, чего выходит.

> Посмотри на пакет usbmount - автоматически монтирует usb storage с заданными параметрами. Очень простой и удобный :)

Если не асилю предыдущий совет, буду это пробовать.

anonymous
()
Ответ на: комментарий от anonymous

>Спасибо, вечерком попробую, тогда напишу, чего выходит.

Тебе это пригодится, если будешь мутить автомонтирование. Можешь поставить ivman для этой цели. Он автоматически замонтирует то, что hal выставил в соответсвии со своими правилами. Опции для монтирования берутся из hal, поэтому если ты правило для кодировки ФС vfat не укажешь, то автоматом замонтируется все с кодировкой по умолчанию.

Ну а если руками монтировать, то подойдет и usbmount.

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

> Тебе это пригодится, если будешь мутить автомонтирование. Можешь поставить ivman для этой цели

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

http://kde.ru/forum/viewtopic.php?start=0&t=2544

Оказывается, КЕДы (а они у меня тоже есть) забивают на правила ХАЛа, но имеется лекарство.

anonymous
()
Ответ на: комментарий от anonymous

>Дык, ессно, уже стоит и монтирует, буду я еще руки напрягать)) Только вот с размонтированием не от рута разобраться и с кодировкой.

ivman для монтирования использует pmount и pmount-hal. Так что с монтированием из-под пользователя проблем быть не должно. А ручное отмонтирование, соотвтественно, надо делать pumount. Для pmount/pumount главное, чтобы ты был в группе plugdev

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

Извиняюсь, что ничего не писал долго, опять не буду писать минимум до завтрашнего вечера (для Москвы), но, млин, обстоятельства. Посмотри потом еще, если сможешь.

ivman запущен от рута. В fstab user стоит, да ivman, похоже, кладет на fstab, хотя по "паспорту" при наличии соотв. строчки не должен бы. Вот выдержка по поводу размонтирования. Монтировать-то оно монтирует, да без опций fstab...

puh@innna:~$ groups puh dialout cdrom floppy audio video plugdev puh@innna:~$ pumount /dev/cdrom umount: only root can unmount /dev/hdc from /media/cdrom0 puh@innna:~$

anonymous
()
Ответ на: комментарий от anonymous

Попробуй

$ pumount cdrom

В pumount надо указать устройство, которое после /media/ идет, а не весь путь монтирования.

Zubok ★★★★★
()
Ответ на: комментарий от anonymous

Не, кажется, я наврал. Я забыл из-под рута выйти, когда проверял. Короче, дело такое. Если монтирует ivman, то он монтирует от имени пользователя ivman, который входит в группу plugdev. Раз замонтировав cdrom, он не даст его больше никому размонтировать, кроме рута или самого ivman, даже если ты тоже в группе plugdev. А ivman размонтирование врубит, когда ты вытащишь диск. Если посмотреть /etc/mtab, то видно, что монтирование диска происходит с опцией user=ivman. Надо подумать. Что-то мне раньше не приходило в голову замонтированное ivman размонтировать руками от пользователя. Может, и правильно, что не дает этого делать?

Zubok ★★★★★
()
Ответ на: комментарий от anonymous

>Монтировать-то оно монтирует, да без опций fstab...

Ну да. В man сказано, что pmount предназначен для монтирования и без этих опций в fstab

pmount ("policy mount") is a wrapper around the standard mount program which permits normal users to mount removable devices without a matching /etc/fstab entry.

Однако потом есть оговорочка:

The mount will succeed if all of the following conditions are met: [skip]

* device is not in /etc/fstab (if it is, pmount executes mount device as the calling user to handle this transparently)

[skip]

То есть, он должен скушать параметры из /etc/fstab, но замонтировать с опцией user=ivman (Ну или любой другой пользователь из группы plugdev), что не даст возможности другому пользователю из группы plugdev размонтировать диск.

У меня так и монтируется (/etc/mtab):

/dev/hdd /media/cdrom0 iso9660 ro,noexec,nosuid,nodev,utf8,user=ivman 0 0

Вот опцию utf8 он у меня скушал. Я попробовал в /etc/fstab поменять опцию на iocharset=cp1251 для примера, и pmount ее абсолютно прозрачно скушала, что отразилось на /etc/mtab:

/dev/hdd /media/cdrom0 iso9660 ro,noexec,nosuid,nodev,iocharset=cp1251,user=ivman 0 0

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

Да нет, я ж не хочу ручками. КЕДы должны все делать. Думаю, либо конфиги ivman править, либо не знаю)) Щас потрогал umask в configbase (извиняюсь, но помню, что 000 - хорошо для всех), и вот что: puh@innna:~$ pumount /dev/sda1 Ошибка: устройство /dev/sda1 было присоеденено другим пользователем puh@innna:~$ Я понимаю, что ivman'ом!

Про ЦД:

puh@innna:~$ pumount cdrom umount: only root can unmount /dev/hdc from /media/cdrom0 puh@innna:~$

anonymous
()
Ответ на: комментарий от Zubok

> Может, и правильно, что не дает этого делать?

Да не думаю. Неразумно для вытаскивания флэшки рутом заходить.

> То есть, он должен скушать параметры из /etc/fstab, но замонтировать с опцией user=ivman (Ну или любой другой пользователь из группы plugdev), что не даст возможности другому пользователю из группы plugdev размонтировать диск.

Ага, понял, надо посмотреть. То есть картина вырисовывается примерно след.:

Для размонтирования не рутом надо конфиг pmount править, для правильности кодировки - HAL Policy. Надо почитать дебиановские readme.

anonymous
()
Ответ на: комментарий от anonymous

>Для размонтирования не рутом надо конфиг pmount править, для правильности кодировки - HAL Policy. Надо почитать дебиановские readme.

Да, размонтировать может только пользователь, который замонтировал, либо рут. То есть ivman и должен размонтировать. Он это и делает, но только тогда получается сигнал о том, что устройство вынули. Если я понимаю правильно, то тебе требуется заставить ivman размонтировать устройство принудительно до того, как ты вытаскиваешь его?

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

> Если я понимаю правильно, то тебе требуется заставить ivman размонтировать устройство принудительно до того, как ты вытаскиваешь его?

Ну да, ведь флешку по другому вытаскивать плохо...

anonymous
()
Ответ на: комментарий от anonymous

>Ну да, ведь флешку по другому вытаскивать плохо...

Ну тогда тебе надо, в соответсвии с документацией на ivman, запустить еще одну копию, но от пользователя:

For automount purposes, Ivman should be run once from a system-wide init script and once per user session (e.g., create a link to /usr/bin/ivman in ~/.kde/Autostart or put an entry for /usr/bin/ivman in gnome-session-manager).

Все настройки пользовательского ivman будут находится тогда в ~/.ivman. Насколько я понимаю, тогда монтирование носителя будет происходить от имени пользователя, а не ivman:

When a device is attached, Ivman will call pmount or mount to mount the device. If pmount is used, it will mount the device readable and writeable only for the current user; if no per-user instance of Ivman is running, the device will be mounted read/write for everyone in the same group as is required to use the pmount command, and read-only for everyone else.

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

>Ну тогда тебе надо, в соответсвии с документацией на ivman, запустить еще одну копию, но от пользователя:

Да, все так. Сейчас проверил. Добавил в свой ~/.icewm/startup запуск ivman. Потом вставляю диск и получаю в /etc/mtab:

/dev/hdd /media/cdrom0 iso9660 ro,noexec,nosuid,nodev,utf8,user=zubok 0 0

Как видно, монтирование уже производится от моего имени. И pumount от пользователя отлично работает.

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

> Ну тогда тебе надо, в соответсвии с документацией на ivman, запустить еще одну копию, но от пользователя

Йес!! Где-то я что-то недосмотрел и/или поторопился. Доку по ивману я все-ж читал, про рута и пользователя знал... Два ивмана, правда, дрались - КЕДы выдавали окошки "что делать", но не кликальбеные, это и еще что-то сбивало с толка. Отрубил Ивман, который в инит-скриптах был, вручную пустил из под пользователя и заработало. Надо прописать ивман куда-нито в скрипт залогинивания.

Спасибо! С кодировкой разберусь, нарыл таки нужное, похоже.

А можно вопрос еще, извиняюсь)) Ну куда покошерней прописать ивмана да еще xxkb, чтобы работали при разных-таки логинах в систему?

Еще раз спасибо.

anonymous
()
Ответ на: комментарий от Zubok

Вдогонку - для ускорения эксперимента отрубил запись в fstab на ЦД. Так эти друзья (ivman и pmount надо думать) замонтировали ЦД по его метке (названию). Хотя чего тут удивляться - с USB устройствами именно так и происходит, а для ЦД необычно и непривычно просто...

anonymous
()
Ответ на: комментарий от anonymous

>Вдогонку - для ускорения эксперимента отрубил запись в fstab на ЦД. Так эти друзья (ivman и pmount надо думать) замонтировали ЦД по его метке (названию). Хотя чего тут удивляться - с USB устройствами именно так и происходит, а для ЦД необычно и непривычно просто...

Совершенно правильно сделали. Откуда pmount знать, что надо монтировать именно в /media/cdrom? В fstab у тебя это было явно задано, а тут требуешь чудес искусственного интеллекта. :)

Сам еще не пробовал, так как монтируется CDROM через запись в /etc/fstab, но название точки монтирования для CDROM (если без fstab) тоже можно задать в HAL policy. Есть там такой параметр, как desired_mount_point.

Поставь aptitude install hal-doc (будет лежать в /usr/share/hal-doc) И поищи по тексту. Там еще и примерчики какие-то есть на этот счет, демонстрирующие, как, скажем, автоматически замонтировать MP3 плеер в нужную тебе точку монтирования my_mp3_player. Понятное дело, аналогичное правило можно добавить и для cdrom.

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

> Сам еще не пробовал, так как монтируется CDROM через запись в /etc/fstab, но название точки монтирования для CDROM (если без fstab) тоже можно задать в HAL policy. Есть там такой параметр, как desired_mount_point. Поставь aptitude install hal-doc (будет лежать в /usr/share/hal-doc) И поищи по тексту. Там еще и примерчики какие-то есть на этот счет, демонстрирующие, как, скажем, автоматически замонтировать MP3 плеер в нужную тебе точку монтирования my_mp3_player. Понятное дело, аналогичное правило можно добавить и для cdrom.

Понял. С кодировкой для флешки все получилось, хотя монтирует без codepage=866. Надо еще будет поэкспериментировать. А вот в ЦД все наши буквы транслитом...

anonymous
()
Ответ на: комментарий от anonymous

>Понял. С кодировкой для флешки все получилось, хотя монтирует без codepage=866. Надо еще будет поэкспериментировать. А вот в ЦД все наши буквы транслитом...

Надо подробнее почитать про ivman. Дело в том, что он, если ему не указать явно, выбирает программу для монтирования автоматически. Явно это можно указать в ~/.ivman/IvmConfigBase.xml (если запуск от пользователя). Там опции mountcommand и umountcommand закомментированы, что означает для ivman "автовыбор". В исходниках, наверное, есть ответ на то, по какому алгоритму он работает. Но можно попробовать явно указать в этих опциях pmount-hal. У меня есть ощущение, что ivman использует pmount, который из hal ничего не берет и вообще опции codepage не понимает, только iocharset. А тут важно, чтобы опции именно из hal брались.

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

скачал исходники ivman. Все правильно он смотрит. Он сначала смотрит 
на опцию в IvmConfigBase.xml. Если она не выставлена, то смотрит на 
наличие pmount-hal на диске. Если нет pmount-hal, то ищет pmount. А 
если нет pmount, то использует mount. Так что ищи отсутсвие codepage в
другом месте. проверь правильность написания правила. Должно быть 
что-то вроде такого (для уникодной локали):


<?xml version="1.0" encoding="UTF-8"?> <!-- -*- SGML -*- -->
<deviceinfo version="0.2">
<device>
  <match key="volume.fstype" string="vfat">
    <merge key="volume.policy.mount_option.utf8" type="bool">true</merge>
    <merge key="volume.policy.mount_option.codepage=866" type="bool">true</merge>
  </match>
</device>
</deviceinfo>

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

Привет.

В принципе, на флешке все видно и без codepage=866, так что на это я, в общем, не жалуюсь. А вот с ЦД столкнулся чуть ли не в первый раз. В другом Дебиане стоит локаль CP1251 и в fstab для ЦД iocharset=cp1251, все показывает по русски. А вот сейчас с utf8 что делать? codepage=866 для ISO9660 никто (mount или pmount) не жрет. кто мне вообще туда транслит прописывает?

anonymous
()
Ответ на: комментарий от anonymous

>А вот сейчас с utf8 что делать? codepage=866 для ISO9660 никто (mount 
или pmount) не жрет. кто мне вообще туда транслит прописывает?


Вообще-то опции codepage для ISO9660 вообще нет. (man mount).

The following options are the same as for vfat and specifying them only
 makes  sense  when  using discs encoded using Microsoft&#8217;s Joliet 
extensions.


    iocharset=value
       Character set to use for converting 16 bit Unicode characters on
       CD to 8 bit characters. The default is iso8859-1.

    utf8  
       Convert 16 bit Unicode characters on CD to UTF-8.

Zubok ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.