Как установить разрешения по умолчанию для автоматически подключаемых дисков FAT в Ubuntu 9.10?

17

У меня есть много дисков FAT32, которые я хотел бы смонтировать в Ubuntu, чтобы у них был режим разрешений 700 для каталогов и 600 для всех остальных файлов. По умолчанию у них есть 755 для всех файлов, что не особенно полезно, так как почти не каталоги не должны быть исполняемыми, и это портит репозитории с контролем версий, размещенные на дисках.

"Назад в тот день" я бы перечислил диски в / etc / fstab с нужным мне umask / dmask, и по умолчанию не было такого понятия. В наши дни диски автомонтируются под своими именами томов. Что здорово, кроме как сейчас я понятия не имею, как установить значение по умолчанию.

Я попытался изменить ключ / system / storage / default_options / vfat / mount_options gconf без видимого эффекта. Первоначально это был 077, но подключенный диск отражал значение по умолчанию 022; изменение его и повторная вставка приводов привели к тому, что файлы все еще имели биты разрешений 755.


источник
да. думал, что ваше имя пользователя выглядит знакомым. Я использую мутаген в течение многих лет. добро пожаловать в Super User. :)
шарлатан-кихот
Кроме того, какую версию Ubuntu вы используете? Я бы предположил, что Кармик, но вы можете говорить о Lucid RC, или даже что-то раньше.
Квик-кихот
Поясняется в заголовке. Я надеялся, что это не будет иметь значения, поскольку у меня есть некоторые старые установки, и что-то вроде монтажа не должно меняться каждые шесть месяцев.
К сожалению, материал HAL претерпел немало изменений в последних версиях. 9.04 и предыдущие, вероятно, одинаковы; некоторые решения могут относиться ко всем; но 9.10 использует DeviceKit и HAL устарела. я не доверяю никаким вещам DBus / HAL / DeviceKit, чтобы оставаться стабильными в данный момент.
Квик-кихот
1
Комментарий от pagin : Я думаю, что проблема гораздо более фундаментальная: я хочу изменить umask для автоматического монтирования независимо от того, какое устройство подключается к компьютеру. Т.е. если мой друг заходит с его USB-флешки, и я хочу просто скопировать какой-нибудь файл с этого, я хочу, чтобы они автоматически передавались как chmod 750, а не 000 или 777, 770 или что-то еще. Там действительно должна быть опция где-то для настройки этого ...
Quack Quixote

Ответы:

7

Обновлено
К сожалению нет встроенных средств для этого. «Правильный путь», поддерживаемый способ , это установка строки / etc / fstab с параметрами по умолчанию, которые вы хотите. Это означает, что ваши значения по умолчанию должны быть установлены для каждого устройства, хотя вы можете использовать метку раздела или UUID, чтобы не требовать определенного пути к устройству. В частности, этот метод, по-видимому, имеет место до авторизации PolicyKit на рабочем столе.

На форумах Ubuntu, Launchpad и bugzilla Gnome есть много сообщений от пользователей, которые ищут ту же функциональность, что и вы, как в NTFS, так и в FAT32. Ubuntu 9.10 и 10.04 обеспечивают автоматическое монтирование по умолчанию через комбинацию DeviceKit-Disks, GVFS и Nautilus.

DeviceKit-disk предоставляет интерфейс FilesystemMount , аргумент параметров которого является правильным способом настройки параметров подключения. Но GVFS / Nautilus, по-видимому, не предоставляет каких-либо средств через пользовательский интерфейс или файл конфигурации для указания этой опции при автоматическом подключении USB-ключа.

Есть несколько обходных путей:

  • Эта ошибка Launchpad содержит предоставленное пользователем исправление, которое изменяет значения по умолчанию DeviceKit-Disks в пакете devicekit-disk, созданном пользователем .

    С другой стороны, это может быть самый простой способ установить предпочитаемые значения по умолчанию для всех устройств. Недостатком является то, что вам нужно будет повторно выполнить повторную проверку при обновлении пакета.

  • В одном посте на форумах Ubuntu предлагается обходной скрипт для конкретного устройства :

    #!/bin/bash
    devkit-disks --unmount /dev/disk/by-uuid/0D3594370C618A2A
    devkit-disks --mount-options "dmask=000" --mount /dev/disk/by-uuid/0D3594370C618A2A
    

    Это также является неоптимальным, так как вам придется обновлять его для определенных устройств. Но это позволяет избежать проблемы авторизации, которую может иметь поддерживаемое решение fstab .

шарлатан
источник
Комментарий Rndmerle : В качестве дополнительного примечания в Ubuntu Lucid (10.4) команда
devkit-disc
Этот обходной путь с udisks - unmount и т. Д., Работает только для umask и dmask. Другие варианты не разрешены, как вы можете догадаться из патча, который вы связали.
user39559
1

Вот моя строка fstab для получения монтирования usb-флешки с разрешениями, подходящими для закрытого ключа ssh (fmask = 177). Метод проб и ошибок проинформировал меня, что я должен был добавить опцию 'user', чтобы заставить работать автомонтирование.

/dev/disk/by-uuid/C2F8-E4F2  /media/TIM_ABELL  vfat  rw,user,nosuid,nodev,dmask=0077,flush,fmask=177

Мне также пришлось создать точку монтирования, которая раньше была автоматической:

mkdir /media/TIM_ABELL

диск uuid можно найти, подключив диск и запустив

mount
ls -l /dev/disk/by-uuid/

который позволит вам получить точку монтирования -> device -> uuid mapping

Тим Абелл
источник
1
вместо использования полных путей / dev / disk / by-uuid / FOO или / dev / disk / by-label / FOO вы можете использовать синтаксис ярлыков UUID=FOOили LABEL=FOO.
шарлатан-кихот
0

Вы действительно пытались использовать старый метод / etc / fstab? Меня устраивает. Ubuntu использует fstab, независимо от автомонтирования HAL.

Иван Петрушев
источник
2
Что я помещаю в / etc / fstab, чтобы все FAT-диски монтировались таким образом? Моя точка зрения заключается не в том, что «я мог бы сделать это с помощью fstab» (я не могу), а в том, что «этого не произошло в модели fstab, потому что она ничего не монтировала, пока я этого не сказал».
0

Я сделал несколько сценариев bash и выпустил улучшенную версию сценария обхода, которая опубликована выше:

#!/bin/bash
dev_path="/dev/disk/by-id"
usb_drives=$(find $dev_path -name "usb*")
mount_options="utf8=0,codepage=850,iocharset=iso8859-1"

for dev in $usb_drives ; do
  if ( devkit-disks --show-info $dev | \
       grep "is mounted:" | grep -q 1 ) ; then
    devkit-disks --unmount $dev
    devkit-disks --mount $dev \
      --mount-options $mount_options
  fi
done

Он находит все устройства, подключенные через USB (возможно, все pendrive), которые уже смонтированы, и перемонтирует их, используя mount_options (в моем случае, пусть они используют кодировку iso-8859-1 для совместимости с другими ограниченными операционными системами)

Гвидо я
источник
3
Что произойдет, если вы подключите ext4 USB? Будут ли применяться маски и другие параметры, которые вы хотите (и только имеют смысл) для FAT?
user39559