Bug 5468

Summary: RFE: add support for add/remove list of supplementary groups via usermod(8)
Product: Sisyphus Reporter: Artem K. Jouravsky <tema>
Component: shadow-utilsAssignee: Mikhail Efremov <sem>
Status: CLOSED WORKSFORME QA Contact: qa-sisyphus
Severity: enhancement    
Priority: P2 CC: ldv, sem
Version: unstable   
Hardware: all   
OS: Linux   

Description Artem K. Jouravsky 2004-11-09 13:49:25 MSK
Чтобы внести пользователя в группу при помощи usermod, необходимо перечислить
все группы, в которых он уже есть, что неудобно и чревато ошибками. Вариант
действия:
сделать два отдельных ключа для команды, чтобы можно было безопасно (без прямого
редактирования /etc/group или использования дополнительных программ типа
groupkit) изменять членство пользователя в группе, не затрагивая при этом
остальных групп, не перечисленных в команде. Например, вот так:
usermod -Ga group user -- добавить user в группу group
usermod -Gd group user -- удалить user из группы group
Comment 1 Dmitry V. Levin 2004-11-09 14:01:30 MSK
Если бы вы предложили приемлемый синтаксис для usermod(8), то я бы подумал над
реализацией.

Дело в том, что "usermod -Ga" - это сейчас корректная операция (добавление в
список групп, состоящих из одной лишь группы "a"), из-за чего "usermod -Ga group
user" становится синтаксически слишком сложной.
Comment 2 Artem K. Jouravsky 2004-11-09 17:20:59 MSK
Ничего приличного в голову не приходит, Вы правы.
Как вариант, можно расширить функциональность groupmod -- там с параметрами
намного проще.
В FreeBSD, например, можно пользоваться pw(8), где и присутствуют usermod,
groupmod -- аналоги linux-версий. Там можно использовать
pw groupmod <group> -m <user>:
-m newmembers  Similar to -M, this option allows the addition of existing
                    users to a group without replacing the existing list of
                    members.  Login names or user ids may be used, and dupli-
                    cate users are silently eliminated.

Comment 3 Dmitry V. Levin 2004-11-11 15:51:52 MSK
В groupmod(8) из pwdutils это сделано так:

-A, --add-user user
       Add the user account to the specified group.

-R, --remove-user user
       Remove the user account from the specified group.
Comment 4 Dmitry V. Levin 2004-11-19 20:20:46 MSK
Томожу.

gpasswd -a user group
gpasswd -d user group

Пакет shadow-groups.