Я уже давно пользуюсь 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-daapd
rfkrocktk
mt-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 был одинаковый числовой идентификатор на всех компьютерах, и все будет в порядке.