16

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

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

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

5 ответов5

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 .

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

0

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

0

Я только что опубликовал свое решение для этого на другом вопросе https://askubuntu.com/questions/17540/how-do-i-set-executable-permissions-on-a-removable-drive/17550#17550

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 для совместимости с другими ограниченными операционными системами)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .