Итак, я использую Linux уже несколько лет, и я действительно должен знать этот ответ, но мне трудно его найти. В частности, я использовал дистрибутив на основе Debian .... в основном Ubuntu.
Если у меня есть сервер с более чем тремя пользователями, как мне установить разные наборы разрешений для файла для каждого пользователя.
Например:
Если у меня есть файл с этими разрешениями и владельцем:
rwx rw_ r__ user1:group1 file1.txt
и у меня есть 3 пользователя с этими желаемыми разрешениями ....
- user1 rwx
- user2 rw_
- user3 r__
Все, что мне нужно сделать, это иметь user1 , владеющего файлом, user2 быть в group1 , а user3 не может быть ни - правильным?
Но что, если у меня есть user4 и user5 .
- user4 _wx
- user5 __x
Как бы я это настроил?
Я не должен был делать это раньше, но мне задали этот вопрос администратор Windows, и я честно не мог ответить.
источник
Ответы:
Традиционные разрешения Unix позволяют только пользователю, группе, другим разрешениям, как вы нашли. Это может привести к некоторой неловкой комбинации групп, нуждающихся в создании ...
Таким образом, была добавлена новая форма ACL (списки контроля доступа). Это позволяет указать несколько пользователей и несколько групп с разными разрешениями. Они устанавливаются
setfacl
командой и читаются сgetfacl
Вы можете легко определить, имеет ли файл ACL, посмотрев на
ls
результат:В
+
конце разрешений указывается ACL.источник
Да, списки ACL позволяют свободно устанавливать разные права для разных пользователей или групп. IIRC обычные групповые разрешения ограничивают набор разрешений, которые группы и пользователи могут иметь через ACL: s (показано как
mask
наgetfacl
), ноsetfacl
должны иметь дело с этим, если вы добавляете разрешения.Но в некоторых случаях вам нужно спросить, имеет ли смысл набор разрешений.
Вы можете реализовать это с помощью ACL: s или (приблизительно) с обычными разрешениями Unix, сделав user1 владельцем файла, user2 членом группы и предоставив другим пользователям, включая user3, доступ на чтение. Хотя тогда каждый (с доступом к каталогу) также будет иметь права на чтение.
Давайте рассмотрим значение этих разрешений. У вас есть один пользователь, который может читать, и другой, который может читать и писать. Это совершенно обычно. Ни один из них не имеет доступа к выполнению файла, но тогда предполагается, что это может сделать и третий пользователь.
Это не имеет большого смысла в моем уме. Любой пользователь, который может прочитать файл, может сделать копию (*), пометить его как исполняемый и запустить его, не имея права на запуск исходного файла. Единственная ситуация, в которой имеет смысл иметь доступ к исполнению для некоторых пользователей, но не для других, - это когда исполняемый файл имеет повышенные привилегии через suid. Но если бы это было так, у вас не должно быть других пользователей с правами на запись в файл.
В том же смысле user4 с
-wx
и user5 с--x
не имеют смысла для меня. Доступ только для записи может иметь смысл, если бы была возможность разрешать только добавления , но система разрешений не настолько детализирована.(* если они не могут нигде писать)
Хотя, если мы удалим странное требование для
x
бита, у нас останется файл, в котором user1 и user2 должны иметь доступ на запись, а user3 должен иметь доступ на чтение. Один автор и несколько читателей могли бы легко использовать традиционную модель, но в этом случае потребовались бы хитрости, чтобы объединить права доступа к файлу с разрешениями содержащего каталога. К счастью, во многих случаях достаточно одного пользователя с большим количеством разрешений.Без требования к биту выполнения это похоже на случай использования ACL: s. Но с этим, этот конкретный пример кажется мне довольно запутанным.
источник
-wx
безусловно, странно.chattr +a
, например. И даже без каких-либо специфичных для системы вы можете сделать файл FIFO.--x
и, соответственно-wx
, имеет смысл для каталогов .