У меня есть внешний диск USB 3 (емкостью 2 ТБ), который, скорее всего, будет перемещаться с компьютера на компьютер. Диск имеет таблицу разделов GUID и раздел ext4. Я не могу записать на диск, если не поднимаю процесс ( sudo
).
На данный момент я думаю попробовать одно или оба из следующих и хотел бы знать минусы каждого -
chmod 777 /mnt/externalDrive
chown nobody:nogroup /mnt/externalDrive
Если я даю разрешение 777, и пользователь user1 (UID: 1005) выполняет запись в него, а затем я перемещаю диск на другой компьютер, где user7 имеет UID: 1005, что произойдет? Становится ли user7 владельцем файла на этом компьютере? Мне кажется, что мне периодически придется запускаться chown -R nobody:nogroup /mnt/externalDrive
на диске.
Что-нибудь из того, что я считаю очевидной плохой практикой? Диск, скорее всего, будет содержать видео, музыку и изображения, которые не нужно защищать, как некоторые финансовые данные.
источник
Ответы:
Это проблема многопользовательских систем, особенно если у вас их несколько. ;) Там нет действительно хороший способ сделать то, что вы хотите. Подходы, приходящие на ум, будут
Наиболее эффективным подходом будет возвращение к общей практике. В большинстве (по крайней мере) Linux-систем существуют группы, которые обычно имеют общие GID. В качестве примера можно привести
users
GID100
в большинстве дистрибутивов Linux. Если бы вам удалось зарегистрировать свою учетную запись в этой группе, вы могли быПервый и второй пункт легко выполнить (
chown
,chmod
). Третий пункт немного сложнее.Часть «владение группой» относительно проста: вы можете установить бит SGID во всех каталогах на диске. Бит SGID, применяемый к каталогам, говорит ядру, что он должен вести себя по-BSDish: BSD делает каждый файл / каталог, созданный в определенной группе каталогов, принадлежащим не основной группе процесса, создавая файл / каталог (как это делает Linux), но владельцем родительского каталога.
Разрешение немного сложнее. На разрешения вновь создаваемых файлов / каталогов (помимо прочего) влияет
umask
битовая маска, сообщающая, какие биты не устанавливать, если это не указано явно. Например, общимumask
значением является то022
, что биты записи для »group« и »others« обычно не должны устанавливаться. Вы можете изменить егоumask
на002
, сказав, что вы не хотите, чтобы разрешения на запись очищались для группы, но недостатком является то, что вы не можете установить это значение на основе каталога и обычно не хотите иметь права на запись для ваша основная группа установлена для каждого файла, который вы создаете.Это можно решить с помощью списков ACL: в ACL вы можете установить набор разрешений a
mask
иdefault
, который применяется ко всем файлам и каталогам, созданным внутри каталога с этим набором ACL. Таким образом, одним из возможных решений вашей проблемы будетСмотрите
setfacl(1)
, иacl(5)
для более подробной информации.источник
Есть еще один похожий вопрос, и здесь предлагается bindfs:
Пользователи OSX предлагают
noowners
вариант монтирования, описанный так:источник
Владелец и группа файла хранятся в виде чисел. Таким образом, файл будет принадлежать uid = 1005, независимо от того, к какому пользователю (или его вообще нет) пользователь системы подключен.
Изменение пользователя / группы на никто не решит вашу проблему. Тогда только пользователь nobody (или члены группы nobody) будет иметь доступ к файлам.
К сожалению, я не думаю, что есть способ отключить проверку разрешений на ext4. См., Например, Возможно ли отключить права доступа к файлам в файловой системе ext3 или ext4?
источник
Андреас Визе говорит, что если у вас есть общий идентификатор группы на всех хостах, вы можете решить проблему с помощью
setgid
битов и ACLЯ задаю вопрос Предопределенные идентификаторы групп в дистрибутивах Linux?
После собственных исследований выяснилось, что такая группа существует во всех затронутых дистрибутивах:
sys
идентификатор общей группы3
на Debian, Ubuntu, RedHat, Fedora, CentOS, Suse, FreeBSD, OpenBSD, NetBSD, MacOSX, Solaris.С этим:
и вкус этого:
Вы
user
сможете читать / писать любые файлы на/dir
.Большая часть работы может быть
setgid
полезной, но, к сожалению, у вас обычно мало контроляumask
. Таким образом, ACL используется для предоставления полного решения.Смотрите также:
источник