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

465
Gabriel Staples

Обновление: для моих общих целей достаточно того, что я выяснил здесь: ОБНОВЛЕНИЕ: 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, но я хочу, чтобы они были в черном списке (имея разрешения "---").


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

1
Похоже, что вы должны быть в состоянии сделать это с помощью нескольких групп. Посмотрите, поможет ли это: http://unix.stackexchange.com/questions/195466/setting-multiple-groups-as-directory-owners fixer1234 7 лет назад 0

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

2
virtex

Для этого типа детализации вы хотите использовать 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. Если вы сделаете a 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
dirkt

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

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

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

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

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

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

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