Все,

У меня два компьютера: домашний и рабочий. Я настроил их примерно так же (хотя home - это Linux Mint 13, а работа - Ubuntu 11.10). Предположим, что имя моей учетной записи на работе - "me_work", а имя моей учетной записи дома - "me_home".

Я использую USB-накопитель для обмена файлами с одного компьютера на другой. Я написал скрипт, который монтирует разные каталоги этого диска в разные каталоги в каждой системе. Например, я делаю что-то вроде:

mount --bind /media/USB/MyProject $HOME/Projects/MyProject

Работая на любом компьютере, я делаю вещи в $ HOME/Projects, и все это сохраняется на USB-накопителе. Если я переставлю USB-накопитель с одного компьютера на другой, все файлы все еще будут там.

Но есть проблема.

Если я создаю файл на своем рабочем компьютере, он будет принадлежать пользователю "me_work" и связанной группе "me_work". Если я пытаюсь поиграть с этим файлом на моем домашнем компьютере, у меня не получается, потому что у меня нет разрешения на их изменение. Кроме того, пользователь или группа "me_work" не известны на моем домашнем компьютере.

Теперь я могу просто sudo всем, но я не всегда использую терминал - иногда я делаю вещи на веб-сервере, иногда я использую IDE и т.д.

Как я могу настроить все, чтобы содержимое USB-диска читалось обоими учетными записями? Я попытался добавить новую группу на оба компьютера под названием "me_usb" и настроить обе учетные записи, чтобы быть членами этой группы. Затем установите для gid каталогов на USB "me_usb" и сделайте их доступными для групповой записи. К сожалению, это не имело никакого эффекта.

2 ответа2

0

Имя пользователя / группы не имеет значения; имеет значение число.

Вот моя запись в моем /etc/passwd:

rici:x:1009:1000:rici,,,:/home/rici:/bin/bash

Это говорит о том, что мой ИД пользователя - 1009, а моя (основная) группа - это группа № 1000 (вторая 1000). Глядя сейчас на /etc/group , я вижу:

adm:x:4:rici
rici:x:1000:

Это указывает на то, что user-id rici также является членом группы adm , группы № 4, а также существует группа rici с номером 1000.

Когда я создаю файл, он записывается в файловой системе как принадлежащий пользователю с номером 1009 и группой с номером 1000. Это единственная информация в файловой системе. Системные утилиты используют файлы /etc/group и /etc/passwd для перевода чисел в удобные буквенные метки.

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

0

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

Решение с использованием предложенной вами методологии зависит от типа файловой системы раздела USB-накопителя, смонтированного в /media /USB, и используемых параметров монтирования.
Также обратите внимание, что возможные данные разрешений (uid и gid), хранящиеся в файловой системе, представляют собой числовые значения (скажем, 1000 или 1001), которые соответствуют именам пользователей и групп (me_work, me_home, me_usb, ...). Таким образом, предполагая, что операция монтирования идентична в обеих ваших системах, если и me_work, и me_home имеют одинаковое значение uid (обычно добавляется первый пользователь, как правило, 1000), файлы будут принадлежать me_work или me_home, если они используются в вашей рабочей или домашней системе. соответственно.

Чтобы показать текущие параметры монтирования для /dev /USB, введите в терминале следующую команду:

mount | grep /media/USB

Чтобы показать текущие uid и gid вашего пользователя, введите в терминале следующую команду:

id


Теперь я объясню, что нужно для следующих распространенных файловых систем:

fat32/vfat: мы можем заставить все файлы на USB-накопителе принадлежать пользователю в соответствующей системе. Для этого вам нужно иметь параметры монтирования rw, uid и gid, установленные при монтировании /media /USB.
Чтобы установить эти параметры после монтирования /media /USB, но перед привязкой, введите в качестве пользователя root следующую команду:

mount -o remount,rw,uid=`id -u`,gid=`id -g` /media/USB

ext4 или ext3: Вы должны быть в состоянии использовать подход общей группы me_usb, если он имеет одинаковое значение gid в обеих системах. После создания группы me_usb вы можете изменить ее гид в каждой системе, отредактировав его запись в файле /etc /group. Эта запись должна выглядеть примерно так:

...
me_usb:x:<gid-number>:<me_work or me_home>
...

В качестве альтернативы вы можете использовать программу под названием bindfs для замены шага «mount --bind». Подобно отображению uid и gid в разделе fat32/vfat, bindfs может монтировать файловую систему USB-диска в другом месте, используя разные разрешения. Это объясняется в посте на superuser.com здесь.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .