Обход прав по умолчанию при монтировании томов HFS + в Linux


8

У меня есть MacBook Pro с двойной загрузкой со Snow Leopard и Kubuntu 11.10, и я хочу прочитать (не заботясь о записи) мой домашний домашний каталог Mac, когда я работаю с Kubuntu.

Я могу смонтировать его без проблем, но мой пользователь на Kubuntu не может видеть файлы на HFS +, принадлежащие пользователю Mac, из-за разного идентификатора пользователя (502 на Mac, 1000 на Kubuntu).

Глядя на документы ядра о HFS +, я прочитал, что:

When mounting an HFSPlus filesystem, the following options are accepted:
[CUT]
    uid=n, gid=n
        Specifies the user/group that owns all files on the filesystem
        that have uninitialized permissions structures.
        Default:  user/group id of the mounting process.

Поэтому я попытался использовать эти параметры:

$ sudo mount -t hfsplus -o uid=1000,gid=1000 /dev/sda2 /mnt/Mac

Но они, похоже, ничего не делают: я все еще вижу те же разрешения, когда смотрю по сторонам, используя ls -l. Может я что-то упускаю, какая-то подсказка?

Я знаю, что могу изменить свой идентификатор пользователя в Ubuntu, чтобы он соответствовал Mac OS X, но я бы предпочел избегать его, если это возможно.

Ответы:


9

bindfsэто ответ. Он возьмет уже смонтированную файловую систему и предоставит для просмотра все, что вам нужно:

sudo apt-get install bindfs
mkdir ~/myUIDdiskFoo
sudo bindfs -u $(id -u) -g $(id -g) /media/diskFoo ~/myUIDdiskFoo

Редактировать:

Также, читая документацию, я понял, что mapвариант (1.10 и более поздние) может подойти лучше:

sudo bindfs --map=502/1000 /media/diskFoo ~/myUIDdiskFoo

Очень классное решение. Это решает проблему без изменения поведения ОС по умолчанию и делает возможным намного больше опций. Просто будьте осторожны, если система используется совместно с другими пользователями, это может открыть личные файлы для неожиданной аудитории.
Герлос

1
Да. Я был удивлен, что утилита монтирования системы не предлагает такую ​​возможность. В качестве альтернативы вы можете использовать mapфункциональность bindfs, чтобы просто отобразить пользователя 502 на 1000, что может быть безопаснее и больше того, что вы намеревались.
Catskul

Поскольку у меня нет репутации, чтобы комментировать, я просто хочу заметить, что в ответе Катскула есть небольшая ошибка, и = отсутствует: должно быть: sudo bindfs --map = 502/1000 / media / diskFoo ~ / myUIDdiskFoo
Дж. Саймон ван дер Уолт

1

В конце концов, я создал пользователя linux с тем же UID, что и мой пользователь Mac OS X, но он не может просматривать все каталоги в моем доме на томе Mac hfs +, потому что многие файлы принадлежат пользователю Mac «unknown», UID 99 (см. Http://googlemac.blogspot.com/2007/03/user-99-unknown.html ).

Кажется, что они сделали это, чтобы вы могли подключить и прочитать том, когда вы подключаете его к другому компьютеру. Когда обычный пользователь просматривает эти файлы, принадлежащие UID 99, он видит их как своего владельца. Довольно странно. Только root видит их такими, какие они есть.

Поэтому я перезагрузился в Mac Os X, вошел в систему с другим пользователем с правами администратора и использовал chown -R 502: 20 / Users / gerlos / *, чтобы изменить владельца каждого файла в моем доме. Теперь я могу читать все без проблем.

Примечания:

  • инструмент kubuntu gui по умолчанию для создания новых пользователей в Kubuntu 11.10 не может создавать пользователей с UID менее 1000. Вместо этого используйте adduser на терминале.
  • Вы можете узнать свой UID пользователя, используя команду «id» на терминале.
  • на Mac OS X вы должны быть пользователем root, чтобы увидеть реального владельца файлов. Так что ожидайте других результатов, если вы наберете "ls -n / Users / gerlos" и "sudo ls -n / Users / gerlos".

Эта разница в OSX между «настоящим» пользователем Unix и пользователем, распознаваемым Finder, доставила мне много головной боли ... из-за этого некоторые приложения в OSX могут вести себя странно (например, Dropbox не будет синхронизировать ваши файлы). Чтобы избежать каких-либо проблем, войдите в систему OSX, откройте терминал и убедитесь, что ваш пользователь unix владеет всем, что уже есть у вашего пользователя OS X. Может быть, я чего-то не понимаю, но по моему опыту использования графического интерфейса недостаточно.
Герлос

1

На самом деле, я собираюсь сделать нечто подобное, когда натолкнулся на этот вопрос. Насколько я понимаю из вашего первого поста, запрошенная опция монтирования спрашивает, какой пользовательский uid должен использоваться вместо используемой по умолчанию вашей системы linux (т.е. uid 1000). Поэтому вместо этого вы должны использовать 502, который является ожидаемым владельцем файловой системы, которую вы пытаетесь смонтировать.

Я проверил это в моей собственной ситуации, и она отлично работала, с uid 99 для файловой системы, которую можно использовать в моих системах. При этом мне не нужно будет менять uid. Так что спасибо, что поделились. Это может не иметь большого значения для вас больше, но может помочь кому-то еще. ура


1
Правильно. Лучшее решение - оставить одни UID и разрешения, смонтировать файловую систему HFS +, как обычно, а затем смонтировать дом в файловой системе HFS + с помощью bindfs, чтобы все казалось принадлежащим вашему пользователю linux. Таким образом, вам никогда не потребуется использовать пользовательские идентификаторы UID, а также изменять разрешения в файловой системе HFS +, поэтому вы сохраняете поведение по умолчанию в обеих системах. Поскольку вы можете перемонтировать с помощью дома bindfs каждого пользователя, вы можете сохранять личные файлы даже в общих системах, сохраняя их доступность для пользователей.
Герлос
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.