РЕДАКТИРОВАТЬ

РЕДАКТИРОВАТЬ

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

Вот моя главная проблема. У меня есть несколько машин, на которых я собираюсь синхронизировать свою музыкальную библиотеку. Я уже некоторое время пользуюсь Unison, и это отличный выбор, так как я могу легко запустить его через SSH в моей локальной сети, которую я только что настроил. Выигрыш-выигрыш.

До этого момента я синхронизировал компьютеры с помощью внешнего жесткого диска на 2 ТБ. (компьютер 1 unisons на HD, компьютер 2 unisons на HD и т. д.) Это в лучшем случае утомительно, особенно с учетом того, что я зашифровал диск, что сделало его очень сложным для подключения ко всем моим машинам и синхронизации. В любом случае, диск работает под ext4 (в TrueCrypt), поэтому он сохраняет всю информацию о файловой системе Unix, такую ​​как владельцы и группы. Я только что настроил новую машину и просто Unison'ил ее, чтобы записать на нее музыку, и понял, что теперь все мои разрешения — фубар. Мне пришлось запустить Unison как root, так как это был единственный способ получить файлы с внешнего диска. Видимо, поскольку я использую другое имя пользователя на этой машине, а не мое обычное «rfkrocktk» на всех машинах, это по сути вставляет огромный гаечный ключ в шестеренки.

Вот мой вариант использования. На этом ноутбуке два эффективных пользователя: "leandra" и "rfkrocktk". Я хочу поделиться музыкой между этими двумя пользователями, поэтому я создал символическую ссылку /home/rfkrocktk/Music, чтобы она указывала на /home/leandra/Music. Как мне (a) разрешить обоим пользователям читать/писать/удалять файлы в этой папке и (b) поддерживать все в порядке, не нарушая права собственности на файлы?


РЕДАКТИРОВАТЬ

Мне удалось заставить все это работать, но пока не полностью. Я установил идентификатор группы моего музыкального каталога в свою группу media-usersи добавил в группу как своего основного пользователя rfkrocktk, так и общего пользователя . Теперь я могу получить доступ к файлам, но не могу ничего увидеть в каталоге. Вот мои идентификаторы:mt-daapdrfkrocktkmt-daapd

$ id rfkrocktk
> uid=1000(rfkrocktk) gid=1000(rfkrocktk) groups=1000(rfkrocktk),4(adm),20(dialout),24(cdrom),29(audio),46(plugdev),104(lpadmin),115(admin),120(sambashare),124(vboxusers),1001(jupiter),2002(media-users)

$ id mt-daapd
> uid=123(mt-daapd) gid=65534(nogroup) groups=65534(nogroup),2002(media-users)

Я попробовал установить mt-daapидентификатор основной группы для media-usersгруппы, но это ничего не изменило.

Вот мои права доступа к /home/rfkrocktk/Musicкаталогу:

drwxr-Sr-- 201 rfkrocktk media-users 12288 2011-01-13 12:26 Music

Запуск sudo -i -u mt-daapd ls -l /home/rfkrocktk/Musicничего не дает. Как это исправить?

решение1

Я бы установил владельца файла на root, а группу на что-то вроде 'music', а затем сделал бы так, чтобы они оба были членами группы "music". Затем, сделал бы каталог music setgid(это будет означать, что элементы, созданные в каталоге, унаследуют групповое владение самим каталогом). Затем установите права доступа к файлу 0660 и все готово.

Права доступа к файлам могут быть пользовательскими, групповыми, мировыми и часто отображаются в виде восьмеричного числа (например, 0660), где:

1 - выполнение 2 - запись 4 - чтение

Их можно добавлять, например, 0751 означает, что владелец файла может читать, писать и выполнять; группа может читать и выполнять; все остальные могут только выполнять.

решение2

Имена не имеют значения. Файлы и группы Unix хранятся в файловой системе и хранятся в числовом виде, а не по имени. На своей исходной машине откройте терминал как обычный пользователь и введите:

id -u

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

На новой машине выполните тот же шаг, что и выше. Отличается ли идентификатор? Если он отличается, то "вы" на новой машине не являетесь владельцем файлов. На обеих машинах, аналогично, если вы скажете

id -G

Вы получите список идентификаторов групп, к которым принадлежит ваш пользователь. Группа каждого файла должна соответствовать одному из этих идентификаторов, иначе он не будет принадлежать вам как группе. Вы можете получить фактическое числовое имя пользователя и группу файла с помощью ls -nd fileили stat file.

В большинстве случаев две разные системы не будут иметь одинаковые идентификаторы пользователей. Вы можете вручную синхронизировать их, отредактировав passwd, но тогда вам придется тщательно обновить все файлы в системе, чтобы преобразовать все старые идентификаторы в эквивалентные новые. Синхронизация идентификаторов между системами — сложная задача, с которой большинство домашних пользователей не утруждают себя; это область LDAP, NIS и других подобных решений.

Чтобы решить эту проблему, вам нужно будет сделать так, чтобы все файлы принадлежали группе с идентификатором, существующим в обеих системах, затем убедиться, что пользователи в обеих системах являются членами этой группы, а затем предоставить chmod g+rwэтой группе права на чтение и запись ( ).

решение3

Вы можете установить для каталога Music (и всех его файлов и подкаталогов) разрешения 775, так что владелец файлов и любой в той же группе может делать с файлами все, что захочет. Затем следующий трюк — создать новую группу с любым именем, которое вы хотите (например, share) и chgrp для каталога Music (и всех его файлов и подкаталогов) в новую группу. Теперь вам просто нужно убедиться, что пользователи, которым вы предоставляете доступ на чтение/запись к общим файлам, находятся в группе «share». Если вам нужно, чтобы это работало с другими компьютерами, просто позаботьтесь о том, чтобы у группы share был одинаковый числовой идентификатор на всех компьютерах, и все будет в порядке.

решение4

Здесь— это объяснение разрешений, которое я нашел полезным. Вот этот, слишком.

Связанный контент