Unix Permissions: разрешить доступ к файлам независимо от пользователя?

4626
Naftuli Kay

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

3

4 ответа на вопрос

5
Michael Trausch

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

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

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

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

Итак, я только что создал группу с именем `media-users`, добавил обоих моих пользователей в эту группу, а затем chgrp`d мой музыкальный каталог для группировки в группу` media-users` следующим образом: `sudo chgrp -R медиа-пользователи / home / $ USER / Music`. Затем я chmodded этой директории, чтобы иметь следующие права доступа: `sudo chmod -R 0744 / home / $ USER / Music`, чтобы я мог rxw, но пользователи в группе могут r. Это должно быть достаточно хорошо? Как мне сделать трюк `setgid`, чтобы сохранить вновь созданных каталогов в группе? Naftuli Kay 13 лет назад 0
Это действительно должно быть достаточно хорошо, да. Чтобы включить setgid для каталога, простой `chmod g + s dirname` (или` chmod g + s .`, если вы уже находитесь в этом каталоге) активирует бит setgid в разрешениях каталога. (Вы можете использовать r, w, x, s или t для части прав доступа: чтение, запись, выполнение, установка (uid | gid) или закрепление соответственно.) Michael Trausch 13 лет назад 0
Хм, кажется, я наткнулся на препятствие. Если я попытаюсь `ls` каталог музыки как мой другой пользователь, я ничего не вижу. :( Это команда, которую я выполнил, чтобы проверить это: `sudo -i -u mt-daapd ls / home / $ USER / Music`. Если я запускаю ее как обычный пользователь, она отлично работает. Я отредактировал пост выше, содержащий новую информацию о моих пользователях и группах. Не могли бы вы взглянуть? Naftuli Kay 13 лет назад 0
Собственно, решил это здесь: http://superuser.com/questions/232949/ Naftuli Kay 13 лет назад 0
3
phogg

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

id -u 

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

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

id -G 

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

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

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

1
devius

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

0
Xiong Chiamiov

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

Похожие вопросы