Как управлять разрешениями на общем томе для OSX и Ubuntu

8

На моем Mac я использую раздел HFS без регистрации для обмена файлами между OSX 10.8 и Ubuntu 12.04.

Сначала это была хорошая мысль, потому что Time Machine автоматически создаст резервную копию тома в OSX, но вскоре я заметил, что OSX и Ubuntu мешают с разрешением таким образом, что мне это мешает.

Поэтому, чтобы полностью просматривать и изменять файлы, я продолжаю использовать chmodдля применения разрешений, которые позволят мне полностью использовать документ. Но я не понимаю, почему я должен продолжать применять изменения снова и снова .

Можно ли постоянно устанавливать какое-то разрешение, чтобы обе операционные системы постоянно уважали?

Я думаю, что 777 будет работать, но я думал, что это не умная вещь, чтобы сделать. Но пока «другие» не получают полный доступ (третья семерка), я вижу значок блокировки на файле в Ubuntu.

Сет
источник
1
У вас одинаковое имя пользователя в OS X и Ubuntu? Если у вас разные имена пользователей, вы можете попробовать добавить имя пользователя Ubuntu в свою группу в OS X и наоборот . Таким образом, вам нужно только 774для разрешений.
Эдвин
@edwin Спасибо за совет. Как добавить имя пользователя в мою группу? Использование 777 разумно или небезопасно?

Ответы:

12

Имена пользователей не имеют значения. Разрешения в обеих файловых системах HFS + и Linux хранятся в терминах идентификаторов пользователей (UID), которые представляют собой числа, связанные с именами пользователей. В Ubuntu, как и в большинстве современных дистрибутивов Linux, первый пользователь получает UID по умолчанию 1000. В OS X первый пользователь получает UID 501 по умолчанию. Таким образом, при совместном использовании мультимедийных данных, которые кодируют значения UID, значения UID, вероятно, не совпадают.

Один из способов исправить это - установить свободные разрешения (значение режима, например rwxr-xr-x, или 755 в восьмеричном). Обратите внимание, что восьмеричный код прав доступа не совпадает со значением UID. В любой из ОС вы можете установить разрешения по умолчанию, используемые для файлов, с помощью umaskкоманды, которая задает значение бита, которое будет удалено из разрешений файла. Например, umask 022удаляет разрешение на запись для группы и другие разрешения, в результате чего 755 (rwxr-xr-x) разрешения для новых файлов (или 644, если что-то удаляет бит разрешения на выполнение, что является обычной практикой для файлов). Хотя это в основном инструмент командной строки; если вы в основном пользователь GUI, вам нужно будет найти другой инструмент для выполнения этой работы, вероятно, связанный со значениями по умолчанию в среде вашего рабочего стола. Это может быть неясным и плохо документированным. Кроме того, установка свободных разрешений таким способом может иметь недостатки безопасности, особенно если у вас многопользовательская система.

Лучшим подходом является синхронизация UID вашей учетной записи в Linux и OS X. Вы можете легко изменить значение UID в Linux с помощью usermodкоманды, например:

usermod -u 501 dale

Эта команда устанавливает для UID daleзначение 501. Однако есть несколько существенных предостережений:

  • Вы должны выйти из учетной записи, которую вы изменяете, прежде чем изменять ее. Попытка изменить используемую учетную запись приведет к ее странному поведению.
  • usermodдолжен быть использован как root. Вы можете выполнить его через sudo, но изменение учетной записи, которую вы изменяете, крайне нежелательно. Таким образом, вам нужно будет либо ввести rootпароль и войти в систему rootнапрямую, либо использовать его sudoсо второй учетной записи пользователя.
  • Команда usermodне изменит владельца любых файлов, принадлежащих данному пользователю. Чтобы настроить владельца этих файлов, вам нужно найти их, а затем изменить их владельца chown. Большая часть файлов будет находиться в домашнем каталоге пользователя, поэтому при chown -R dale: /home/daleвводе, как rootпосле изменения daleUID, большинство daleфайлов изменится на новый номер UID. Однако некоторые файлы пользователя могут находиться в другом месте. Набор текста find / -uid 1000найдет все файлы, которые используют старый UID (при условии, что это был 1000). Обратите внимание, что выполнение этой findкоманды, вероятно, займет несколько минут. Чтобы ускорить его, отключите все файловые системы, в которых вы точно не найдете совпадений, например тома FAT или NTFS.
  • Если вы обращаетесь к томам FAT или NTFS, их значения UID определяются параметрами во время монтирования. Если вы используете файловый менеджер с графическим интерфейсом, скорее всего, значение UID установлено для того, кто запускает файловый менеджер, поэтому вам не нужно делать ничего особенного. Однако, если вы подключаете том через /etc/fstabзапись, вам может потребоваться изменить значение UID, которое оно указывает.
  • Ubuntu хранит минимальное значение, которое оно использует для UID /etc/login.defs. Если вам не удастся изменить UID_MINзначение в этом файле, вы, вероятно, обнаружите, что ваша учетная запись «исчезнет» с экрана входа в систему с графическим интерфейсом пользователя и, возможно, из некоторых других систем. Таким образом, вы должны отредактировать этот файл.

Теоретически, вы можете изменить UID своей учетной записи (-ей) OS X аналогичным образом для достижения той же цели. Однако я менее знаком с инструментами обслуживания учетных записей OS X, поэтому не могу дать четких инструкций для этого. Корректировка значений OS X будет иметь то преимущество, что вам не придется настраивать UID_MINв Linux.

Если у вас есть несколько учетных записей на вашем компьютере, вы должны настроить их все, чтобы синхронизировать их между установками вашей ОС.

Еще один момент: значение идентификатора группы (GID) сохраняется аналогичным образом. IIRC, Ubuntu назначает значение GID для каждой учетной записи, идентичное его значению UID. Я не помню, что делает OS X по умолчанию. Возможно, вы захотите отрегулировать значения GID для двух ОС способом, аналогичным изменениям UID, но это вряд ли будет так важно, как корректировка значений UID.

РЕДАКТИРОВАТЬ: Если вы хотите изменить свой UID (и GID, если необходимо) в MacOS / OS X, а не в Ubuntu, вы можете сделать это. Поскольку эта модификация в macOS выходит за рамки этого сайта, я просто приведу ссылку на несколько страниц, которые предоставляют процедуры для этого в macOS:

Род Смит
источник
Вау, спасибо! Это действительно хорошо написанный исчерпывающий ответ - объясняющий полный контекст проблемы! Это решение помогло мне получить безупречный общий раздел без каких-либо компромиссов. Сначала все еще оставалась проблема владения файлами: «игнорирование владения этим томом» в OSX не давало бы мне права на запись во вновь созданные файлы OSX при работе под Ubuntu (значок замка) и наоборот. В итоге я настроил новую учетную запись в Ubuntu, используя то же имя пользователя, что и в OSX, и снова изменил UID.
Теперь у меня есть полный доступ из обеих операционных систем для существующих и вновь создаваемых файлов без необходимости изменения ограничений доступа. Поскольку это такой примерный ответ, я дам вам вознаграждение, как только вопрос получит право на получение вознаграждения. ;-)
После следования вашим инструкциям я попытался войти в Ubuntu. Когда я нажал Enter, на секунду увидел черный экран, а затем снова вернулся на экран входа. После того, как я изменил что-либо на стандартную 1000 со своего временного аккаунта, я снова мог войти Есть идеи, почему я не могу войти с новым uid?
Борисдиакур
Если вы забыли изменить разрешения для своего домашнего каталога, это может быть причиной проблемы. Если вы используете 13.10, также возможно, что что-то в Ubuntu изменилось, что вызывает проблемы, если вы не настроились UID_MIN.
Род Смит
1
ОБНОВЛЕНИЕ: я только что сделал usermod в моей системе, и каким-то образом разрешение моего домашнего каталога не нужно было менять !? Все работает хорошо после только usermod (как root).
krumpelstiltskin
0

Я обнаружил, что иногда вы можете щелкнуть по папке, которой вы хотите поделиться, и нажать команду + I. Затем нажмите на замок и введите свой пароль, если он не разблокирован. Далее, затем там, где написано «все», выберите «читать и писать».

Еще одна полезная вещь - настроить папку как «общую папку», это можно сделать на панели настроек общего доступа в системных настройках.
Перейдите в системные настройки> общий доступ> общий доступ к файлам. Затем сделайте общий доступ, отметив поле обмена файлами, и добавьте папку, которой вы хотите поделиться, используя кнопку «плюс». Затем вы можете изменить права на чтение записи.

ОДНО ПРИМЕЧАНИЕ: использование второго варианта также откроет ваш компьютер, чтобы разрешить доступ к папке по вашему выбору через Интернет (только при загрузке в OS X) !! Сделайте общий доступ, у вас есть надежный пароль и вы, вероятно, отключите его в общественных местах (не забудьте взять шляпу из фольги!)

aChipmunk
источник
Это работает в обоих случаях, но я буду использовать только первый вариант. Тем не менее, разрешение доступа «каждому» (т.е. разрешение 777) кажется слишком радикальным - или нет? Это безопасно?
1
Ну, это точно не рекомендуется. «Каждый» сможет изменять и читать документы с такими разрешениями (но я думаю, что это в основном вещи в Unix). Это определенно немного более безопасно для использования 774.
Эдвин
0

Откройте терминал и:

В OS X попробуйте это

sudo dscl / -create /Users/<ubuntu-username>
sudo dscl / -append /Groups/<os-x-username> GroupMembership <ubuntu-username>

В Ubuntu запустите этот

sudo adduser --system --no-create-home --ingroup <ubuntu-username> <os-x-username>

Теперь вы должны быть в состоянии использовать 774или даже 770для доступа к файлам.

Эдвин
источник
Это не работает Команда OSX тоже не работает. Но мне удалось добавить пользователя Ubuntu через интерфейс GUI в OSX. После добавления пользователя другой ОС в работающую ОС и изменения разрешений на 774 в обеих операционных системах Ubuntu по-прежнему не может получить полный доступ ко всем файлам в общем разделе. Некоторые подкаталоги, например, я не могу открыть (разрешение 774). Поэтому мне пришлось изменить его на 777, чтобы открыть его. Это милостивое разрешение безопасно?
По крайней мере, в Ubuntu команда должна работать, я попробовал сам, прежде чем добавить ответ. Вы уверены, что вы заменили <ubuntu-username>свое фактическое имя пользователя в Ubuntu (то же самое для <os-x-usernanme>)? И можете ли вы более конкретно рассказать о том, какие ошибки выдает OS X при попытке запустить эту команду?
Эдвин
Я только сказал, что команда не работает в OSX. Если я правильно помню, команда adduserне выходит.
Я отредактировал ответ для этого. Попробуй это. Я не уверен, так как я не знаком с управлением пользователями OS X. В OS X вы также можете использовать графический интерфейс для создания пользователя Ubuntu (с именем пользователя, которое вы используете в Ubuntu), а затем добавить его в свою фактическую группу пользователей OS X.
Эдвин
Это не имеет значения. OSX предлагает простой графический интерфейс при использовании CMD + I, где вы можете очень легко создавать и добавлять пользователей. Но это не решило проблему в конце концов. В итоге я использовал 777 разрешений.