Минаючи дозволи за замовчуванням під час монтажу томів HFS + у Linux


8

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

Я можу встановити його без проблем, але мій користувач на Kubuntu не може бачити файли на HFS +, що належить користувачеві Mac, через різні uid (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це відповідь. Він займе вже змонтовану файлову систему та надасть їй перегляд із будь-якого uid, який ви хочете:

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
Так. Я був здивований, що утиліта для монтажу системи не пропонує цю можливість. Крім того, ви можете використовувати функцію bindfs, mapщоб просто зіставити користувача 502 до 1000, що може бути безпечнішим і більше того, що ви задумали.
Catskul

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

1

Врешті-решт, я створив користувача linux з тим самим UID мого користувача mac os x, але він не може переглядати кожен каталог у моєму домі на mac hfs + volume, тому що багато файлів належали користувачеві "mac", невідомому UID 99 (див. Http://googlemac.blogspot.com/2007/03/user-99-unknown.html ).

Здається, що вони зробили це так, щоб дозволити вам змонтувати та читати томи, коли ви підключаєте його до іншого комп'ютера. Коли звичайний користувач переглядає ті файли, які належать UID 99, він бачить їх як власника. Досить дивно. Тільки корінь бачить їх такими, якими вони є.

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

Зауваження:

  • за замовчуванням інструмент kubuntu gui для створення нових користувачів на Kubuntu 11.10 не може створювати користувачів з UID менше 1000. Замість цього використовуйте аддусер на терміналі.
  • ви можете знати свій 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 для файлової системи, якою можна ділитися між моїми системами. З цим мені не потрібно буде обходити зміни уідів. Тож дякую за обмін. Це може вам більше не подобатися, але може допомогти іншому. Ура


1
Правильно. Найкраще рішення - залишити в спокої UID та дозволи, встановити файлову систему HFS +, як це робиться зазвичай, а потім змонтувати свій будинок під файловою системою HFS + за допомогою bindfs, так що, здається, все належить вашому користувачеві Linux. Таким чином, вам ніколи не потрібно буде використовувати користувальницькі UID, а також не змінювати дозволи в файловій системі HFS +, тому ви зберігаєте поведінку за замовчуванням в обох системах. Оскільки ви можете перекомпонувати вдома bindfs кожного користувача, ви можете зберігати приватні файли навіть у спільних системах, зберігаючи їх доступними для користувачів.
gerlos
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.