1

Обновление: для моих общих целей достаточно того, что я понял здесь: ОБНОВЛЕНИЕ: https://raspberrypi.stackexchange.com/questions/13401/locking-down-raspbian-to-only-allow-limited-features/58778# 58778


Поэтому мне кажется, что разрешения Linux действуют как белый список (принудительно разрешают одному, указанному пользователю или одной указанной группе что-то), а не как черный список (принудительно запрещают одному, указанному пользователю или одной указанной группе что-то) , Это правильно? Если да, то как я могу занести кого-то в черный список из-за возможности читать, писать или выполнять в определенном каталоге или в наборе файлов?

Пример: ls -l показывающий права доступа к каталогу, поскольку drwxr-xr-x означает, что это каталог, пользователи имеют разрешения на чтение, запись, выполнение (rwx), группы имеют разрешения rx, а другие имеют разрешения rx. Допустим, пользователь "user0", а группа "user0".

Как явно разрешить "user1" и "user2" возможность иметь все разрешения в этом каталоге "user0", "user3" и "user4" не получить разрешений, а "user5" и «user6 получить частичные разрешения?

Мне кажется, мне нужно было бы занести в черный список user3 и user4, в белый список user1 и user2 и частично в белый список или частично в черный список user5 и user6.

Поскольку (я думаю) разрешения Linux указаны только в белом списке, каков наилучший способ добиться этого?

Обратите внимание, что часть моей путаницы заключается в том, что:

  1. Каталог или файл могут принадлежать только одному пользователю или группе за раз (а не, скажем, давать разрешения нескольким группам на доступ к определенному каталогу или файлу)
  2. Пользователь может принадлежать нескольким группам

Я думаю, мне просто нужны хорошие примеры этого материала.


Одно частичное решение, которое помогает продемонстрировать мою проблему, заключается в следующем:

Давайте предположим, что каталог user0, для которого я хочу установить эти разрешения, - "/home/user0"

Во-первых, создайте каталог user "user0" и группу "user0" (по умолчанию это уже сделано просто с помощью sudo adduser user0 в первую очередь). Затем установите права доступа для «drwxrwx ---» (пользователь и группа оба rwx, но другие ничего)

Разрешить user1 и user2 все разрешения для каталога, добавив их каждое в группу user0

Дайте user3 и user4 никаких разрешений: уже сделано, так как другие имеют доступ "---", а user3 и user4 НЕ являются частью группы user0.

Дайте user5 и user6 частичные разрешения (например, "rx"): -не может быть сделано ???? --because, если я сделаю другие разрешения "rx", тогда это даст это и user3 и user4, но я хочу, чтобы они были в черном списке (имея разрешения "---").


Фоновое чтение, которое я уже сделал, включает в себя:

2 ответа2

2

Для этого типа детализации вы хотите использовать ACL. С ALC вы можете назначать различные разрешения нескольким пользователям или группам. Чтобы выполнить то, что вы просите, вы должны выполнить следующие команды (при условии, что ваш каталог называется dir):

setfacl -m u:user1:rwx dir
setfacl -m u:user2:rwx dir
setfacl -m u:user3:- dir
setfacl -m u:user4:- dir
setfacl -m u:user5:rx dir
setfacl -m u:user6:rx dir

Это предоставит полный доступ к user1 и 2, отсутствие доступа к user3 и 4, а также права на чтение / выполнение для user5 и 6. Если вы выполните ls -ld в каталоге, вы заметите, что теперь к ней добавлен знак + .

$ ls -ld dir
drwxrwxr-x+ 2 user0 users 40 Dec  7 11:42 dir

Знак + означает, что с ним связан один или несколько списков ACL. Вы можете увидеть ACL с помощью getfacl :

$ getfacl dir
# file: dir
# owner: user0
# group: users
user::rwx
user:user1:rwx
user:user2:rwx
user:user3:---
user:user4:---
user:user5:r-x
user:user6:r-x
group::r-x
mask::rwx
other::r-x

Также стоит отметить, что команда ls кажется, показывает, что каталог доступен для записи группой, но getfacl показывает, что это не так. ACL здесь правильный, то есть, если пользователь в группе users , но не названный по-другому в ACL, или владелец файла пытается создать файл в каталоге, произойдет сбой.

2

Да, если вы хотите сформулировать это так, стандартные разрешения Unix - это "белый список".

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

Разрешения на использование устройств обрабатываются одинаково, поэтому у вас есть группы, такие как input , disk и т.д. Во многих дистрибутивах.

Таким образом, в этом смысле вы можете думать о группе как об особом "правиле" вашего "набора правил доступа". Ограничение состоит в том, что каждый файл может иметь только одно правило с единственной комбинацией разрешений rwx , помимо разрешений "пользователь" и "другие".

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

Тем не менее, есть расширение стандартных разрешений Unix, называемое списками контроля доступа (ACL). Смотрите man acl для деталей. Для многих файловых систем вы должны указать опцию, чтобы активировать ACL при их монтировании.

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