3

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

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

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

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


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

Я был в состоянии заставить вещи работать, но еще не полностью. Я установил идентификатор группы своего музыкального каталога для своих 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 ничего не дает. Как я могу это исправить?

4 ответа4

5

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

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

1 - exec 2 - написать 4 - прочитать

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

3

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

id -u

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

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

id -G

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

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

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

1

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

0

Вот объяснение разрешений, которые я нашел полезным. Этот тоже.

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