Группы пользователей в Linux: создаем группы, добавляем и удаляем из них пользователей
Перевод статьи «Linux User Groups Explained: How to add a new group, a new group member, and change groups».
Linux позволяет многочисленным пользователям работать в системе одновременно. Установка прав доступа защищает пользователей друг от друга. Для объединения пользователей с одинаковыми правами доступа создаются группы. Члены этих групп могут, например, иметь доступ к каким-то файлам или устройствам, в то время как для остальных пользователей доступ будет закрыт.
Часто группы создаются, чтобы дать отдельным пользователям право модифицировать файл или директорию.
Группы бывают двух основных видов: первичные и вторичные. Первичная группа это основная группа пользователя, установленная для него по умолчанию, с ней связан его аккаунт. Директории и файлы, создаваемые пользователем, имеют Group ID именно этой, первичной группы. Любая другая группа (а их может быть много), в которую входит пользователь, является вторичной.
Создание групп
Давайте создадим две группы: «writers» («писатели») и «editors» («редакторы»). Для этого используется команда groupadd. (Возможно, потребуется также поставить sudo в начале команды, чтобы получить право создавать группы).
groupadd writers groupadd editors
Создание пользователей
Возможно, у вас уже есть пользователи, которых вы могли бы добавить в только что созданные группы. Если нет, вот базовый синтаксис для создания пользователя при помощи команды useradd:
useradd [опции] имя_пользователя
Ниже представлена команда для создания пользователя по имени «quincy». Флаг -m нужен для создания домашней директории пользователя (для ее названия используется имя пользователя). Флаг -p позволяет задать пароль для пользователя, в данном случае — «p4ssw0rd».
useradd -m quincy -p p4ssw0rd
Позже пользователь сможет изменить свой пароль при помощи команды passwd. Для этого ему понадобится ввести текущий пароль и новый.
Добавление пользователя в группу
Для добавления пользователя в группу используется команда usermod. Давайте добавим пользователя «quincy» в группу «writers». Опция -a означает «append» («добавить», «прикрепить»), а опция -G служит для указания названия вторичной группы.
usermod -a -G writers quincy
Когда вы создаете пользователя при помощи команды adduser, для него автоматически создается первичная группа, носящая его имя. Поэтому в настоящее время пользователь «quincy» состоит в первичной группе «quincy» и вторичной «writers».
Также можно добавить пользователя сразу в несколько групп, перечислив их через запятую без пробелов (-G group1,group2,group3).
А эта команда изменит первичную группу пользователя quincy на группу «editors»:
Удаление пользователя из вторичной группы
Чтобы удалить пользователя из вторичной группы, нужно перезаписать список групп пользователя, задав набор групп, в котором не будет этой вторичной группы.
При помощи команды id смотрим, в каких группах состоит пользователь (опция -n нужна для вывода названий групп, а не их ID).
Предположим, мы увидели, что пользователь quincy состоит в группах «editors» и «writers». Если мы хотим удалить его из группы «writers», мы можем воспользоваться следующей командой:
Эта команда очень похожа на ту, которой мы установили для пользователя quincy вторичную группу «editors». Но поскольку мы сейчас не использовали флаг -a, предыдущий список групп просто перезаписался, и теперь в нем нет группы «writers».
Заключение
Теперь вы можете начать управлять группами и пользователями. Следующий шаг — определить, какие привилегии должны быть у каждой группы.
можно ли назначить несколько владельцев и групп?
Именно владельцев и групп — нельзя. Для тонкой настройки есть POSIX ACL, есть SELinux.
deadNightTiger ★★★★★ ( 09.10.16 13:42:34 MSK )
Последнее исправление: deadNightTiger 09.10.16 13:42:53 MSK (всего исправлений: 1)
Плюсую selinux.вопрос ТС’у: А для чего такое кудрявое решение понадобилось?
Плюсую вопрос. Обычно создают группу, отдают файл ей, и добавляют в нее всех пользователей, которым нужен доступ к этому файлу. В большинстве случаев этого хватает.
А если одной группе полный доступ, второй только для чтения, остальным нет доступа?
А это бессмысленная затея. Те, у кого нет доступа, попросят тех, у кого доступ есть, и файл им дадут почитать. Так что «одной группе полный доступ, остальным на чтение».
Ну а те кто имеет полный доступ даст им изменить файл. Так что остальным полный доступ. 🙂
Если полный доступ включает в себя возможность открывать доступ другим, то да. Не имеет смысла разграничивать права в таком случае.
Билд-сервер и разработчики могут менять артефакты, а тестеры и техпис — нет. А уборщицу туда вообще не пускать.
kirk_johnson ★☆ ( 10.10.16 10:33:03 MSK )
Последнее исправление: kirk_johnson 10.10.16 10:36:17 MSK (всего исправлений: 1)
setfacl -m u:USERNAME:rw- /path/to/file setfacl -m g:GROUPNAME:rwx /path/to/file
Владельца это не изменит, но права установит.