Вопрос или проблема
Я столкнулся с проблемой монтирования 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
. Возможно, система не применяет эти параметры должным образом, или есть проблема в специфической теме ядра, монтировочном пункте или конфигурации.
Применение
-
Предварительная проверка: Убедитесь, что вы правильно указываете устройство и точку монтирования. Например:
sudo mount -t vfat -o uid=32074,gid=6202 /dev/sde2 /mnt
Также убедитесь, что
/dev/sde2
– это действительно ваш iPod, используяlsblk
илиfdisk -l
. -
Проверка параметров монтирования: Вы использовали
uid
иgid
, что является правильным для VFAT. Однако, добавьте следующие параметры, чтобы убедиться, что ни один другой монтировочный параметр не влияет на права:sudo mount -t vfat -o uid=32074,gid=6202,dmask=0022,fmask=0022 /dev/sde2 /mnt
Здесь
dmask
иfmask
устанавливают маски прав для директорий и файлов соответственно. -
Проверка успешности монтирования: После монтирования проверьте результат командой
ls -l /mnt
и убедитесь, что файлы принадлежат пользователю с UID 32074 и GID 6202. -
Использование fstab для автоматизации: Если проблема решена и вы хотите, чтобы устройство монтировалось автоматически с нужными правами после перезагрузки, добавьте запись в
/etc/fstab
:/dev/sde2 /mnt vfat defaults,uid=32074,gid=6202,dmask=0022,fmask=0022 0 0
-
Обновление ядра и программного обеспечения: Если проблема носит временный характер или связана с обновлением системы, возможно, стоит проверить наличие критичных обновлений для ядра или системы.
-
Диагностика и отладка: Используйте
strace
, чтобы отследить системные вызовыmount
, если проблема сохраняется. Это увидено в предоставленном примере, однако до перезагрузки. -
Решение проблем с кэшем: Перезагрузите систему или очистите кэш, если проблема не устранена. Вы упомянули, что перезагрузка помогла, это может свидетельствовать о временном сбое в кэшировании или назначении прав.
Заключение
Процесс монтирования VFAT-дисков в Linux требует корректной конфигурации прав доступа, использования соответствующих параметров и, возможно, диагностики через журналы и инструменты отладки. Если проблемы сохраняются, это может быть связано как с системными ошибками, так и с конкретными кейсами, которые требуют более тщательного исправления или конфигурационных изменений. Рекомендую также проверить документацию системы и при необходимости обратиться к разработчикам с подробным отчетом о проблеме, если вы выявили повторяющуюся аномалию в вашей системе.