Как подключить диск vfat в Linux с правами, отличными от прав root?

Вопрос или проблема

Я столкнулся с проблемой монтирования iPod на недавно обновленном Debian Squeeze. Подозреваю, что либо протокол изменился, либо я наткнулся на баг, о котором не знаю, куда сообщить.

Я пытаюсь смонтировать iPod, чтобы у меня были права на чтение и запись.
Но мои усилия ничего не дают:

    $ sudo mount -v -t vfat -o uid=32074,gid=6202 /dev/sde2 /mnt
/dev/sde2 on /mnt type vfat (rw,uid=32074,gid=6202)
    $ ls -l /mnt
    total 80
    drwxr-xr-x 2 root root 16384 Jan  1  2000 Calendars
    drwxr-xr-x 2 root root 16384 Jan  1  2000 Contacts
    drwxr-xr-x 2 root root 16384 Jan  1  2000 Notes
    drwxr-xr-x 3 root root 16384 Jun 23  2007 Photos
    drwxr-xr-x 6 root root 16384 Jun 19  2007 iPod_Control
    $ sudo umount /mnt
    $ sudo mount -v -t vfat -o uid=nr,gid=nr /dev/sde2 /mnt     
    /dev/sde2 on /mnt type vfat (rw,uid=32074,gid=6202)
    $ ls -l /mnt
    total 80
    drwxr-xr-x 2 root root 16384 Jan  1  2000 Calendars
    drwxr-xr-x 2 root root 16384 Jan  1  2000 Contacts
    drwxr-xr-x 2 root root 16384 Jan  1  2000 Notes
    drwxr-xr-x 3 root root 16384 Jun 23  2007 Photos
    drwxr-xr-x 6 root root 16384 Jun 19  2007 iPod_Control

Как видите, я попробовал и символьные, и числовые идентификаторы, но файлы продолжают принадлежать root (и доступны для записи только root).

Идентификаторы действительно мои; я имею этот UID с 1993 года.

$ id
uid=32074(nr) gid=6202(nr) groups=6202(nr),0(root),2(bin),4(adm),...

Я разместил strace на http://pastebin.com/Xue2u9FZ, и вызов mount(2) выглядит хорошо:

mount("/dev/sde2", "/mnt", "vfat", MS_MGC_VAL, "uid=32074,gid=6202") = 0

Наконец, вот версия моего ядра из uname -a:

Linux homedog 2.6.32-5-686 #1 SMP Mon Jun 13 04:13:06 UTC 2011 i686 GNU/Linux

Кто-нибудь знает,

  • должен ли я делать что-то иначе, или
  • если есть обходной путь, или
  • если это баг, куда о нем сообщить?

Перезагрузка машины решила проблему.

Думаю, я оставлю вопрос, так как он, по сути, показывает, как смонтировать vfat-диск на Linux с правами, отличными от root.
Если кто-то считает, что я должен удалить вопрос, пожалуйста, дайте знать.

.

Ответ или решение

Теория

Монтирование файловых систем в Linux — это важная операция, которая позволяет пользователям получать доступ к различным типам хранилищ данных. VFAT — это файловая система, совместимая с FAT32, и часто используется на съемных накопителях, таких как USB-диски и устройства iPod. Одной из частых проблем при монтировании VFAT в Linux является получение правильных прав доступа и владения, так как по умолчанию файловая система монтируется с правами root.

Кроме того, поскольку VFAT не поддерживает понятие владельцев, пользователей и групп на уровне файловой системы, вам нужно использовать монтировочный механизм, чтобы эмулировать эти понятия, применяя параметры монтирования, такие как uid и gid. Эти параметры определяют, кто будет владельцем файлов и директорий на смонтированной файловой системе.

Пример

На основании данных из предоставленного примера, пользователь сталкивается с тем, что VFAT-диск монтируется с правами root, несмотря на использование опций uid=32074 и gid=6202. Возможно, система не применяет эти параметры должным образом, или есть проблема в специфической теме ядра, монтировочном пункте или конфигурации.

Применение

  1. Предварительная проверка: Убедитесь, что вы правильно указываете устройство и точку монтирования. Например:

    sudo mount -t vfat -o uid=32074,gid=6202 /dev/sde2 /mnt

    Также убедитесь, что /dev/sde2 – это действительно ваш iPod, используя lsblk или fdisk -l.

  2. Проверка параметров монтирования: Вы использовали uid и gid, что является правильным для VFAT. Однако, добавьте следующие параметры, чтобы убедиться, что ни один другой монтировочный параметр не влияет на права:

    sudo mount -t vfat -o uid=32074,gid=6202,dmask=0022,fmask=0022 /dev/sde2 /mnt

    Здесь dmask и fmask устанавливают маски прав для директорий и файлов соответственно.

  3. Проверка успешности монтирования: После монтирования проверьте результат командой ls -l /mnt и убедитесь, что файлы принадлежат пользователю с UID 32074 и GID 6202.

  4. Использование fstab для автоматизации: Если проблема решена и вы хотите, чтобы устройство монтировалось автоматически с нужными правами после перезагрузки, добавьте запись в /etc/fstab:

    /dev/sde2 /mnt vfat defaults,uid=32074,gid=6202,dmask=0022,fmask=0022 0 0
  5. Обновление ядра и программного обеспечения: Если проблема носит временный характер или связана с обновлением системы, возможно, стоит проверить наличие критичных обновлений для ядра или системы.

  6. Диагностика и отладка: Используйте strace, чтобы отследить системные вызовы mount, если проблема сохраняется. Это увидено в предоставленном примере, однако до перезагрузки.

  7. Решение проблем с кэшем: Перезагрузите систему или очистите кэш, если проблема не устранена. Вы упомянули, что перезагрузка помогла, это может свидетельствовать о временном сбое в кэшировании или назначении прав.

Заключение

Процесс монтирования VFAT-дисков в Linux требует корректной конфигурации прав доступа, использования соответствующих параметров и, возможно, диагностики через журналы и инструменты отладки. Если проблемы сохраняются, это может быть связано как с системными ошибками, так и с конкретными кейсами, которые требуют более тщательного исправления или конфигурационных изменений. Рекомендую также проверить документацию системы и при необходимости обратиться к разработчикам с подробным отчетом о проблеме, если вы выявили повторяющуюся аномалию в вашей системе.

Оцените материал
Добавить комментарий

Капча загружается...