Идентификационные результаты различаются в зависимости от того, кто спрашивает

У меня есть userX, у которого есть привилегии в реальном времени в реальном времени. Я хотел бы предоставить права администратора для пользователей, поэтому я переключился на root

~>su root 

и побежал

 #>usermod -a -G root userX 

После короткой задержки я вернулся к подсказке и протестировал эффект.

 #>id userX #>uid=1000(userX) gid=0(root) groups=0(root),1001(realtime) 

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

 #>exit ~>useradd BSD bash: /usr/sbin/useradd: Permission denied 

Что-то не так. Я попытался проверить членство в моей группе, и это дало мне другой ответ.

 ~>id ~>uid=1000(userX) gid=1001(realtime) groups=1001(realtime) contextunconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 

Поэтому мне нужно знать, почему мой пользователь говорит, что он не является частью root и root, говорит пользователь. Что мне не хватает?

Что происходит?

Список групп, в которых находится пользователь, установлен только при входе в систему (и, возможно, изменен с использованием редко используемой команды sg , но это работает только в том случае, если для этой группы установлен групповой пароль). Если этот пользователь выйдет из системы, затем снова войдет в систему, они должны увидеть себя в этой группе. Однако, находясь в группе с GID 0 («root» в большинстве Linux-систем, «wheel» или «adm» в большинстве систем, отличных от Linux), это не то же самое, что и административные привилегии, и на самом деле это плохая идея из безопасность.

Почему это не то же самое, что и административные привилегии?

Пользователь root (UID 0) является специальным. Корневая группа (GID 0, называемая wheel во многих системах, отличных от Linux, по историческим причинам, которые, как мне кажется, не может найти), не является. Ваш пользователь сможет получить доступ к файлам, принадлежащим корневой группе, но, вероятно, не так много. Это несколько сложное различие, но очень важно.

Почему это плохая идея?

Это плохая идея по той же причине, что и постоянный пользователь root – это плохая идея. Вы всегда ошибаетесь, чтобы сделать систему непригодной для использования (например, в большинстве Linux-систем, являющихся частью корневой группы, вы можете тривиально сделать систему недоступной, поскольку вы можете удалить ее из /boot ).

Каков правильный (и безопасный) способ предоставить этим пользователям административные привилегии?

Если возможно, настройте sudo , doas или любой другой инструмент повышения привилегий, отличный от su который присутствует в вашей системе, чтобы разрешить им доступ. Если у вас нет такого инструмента, кроме su , установите один (я бы предложил sudo , он наиболее широко используется и, следовательно, один из самых простых, чтобы узнать, потому что есть много документации). Если это тоже не вариант, то просто поднятие до su когда вам нужно выполнять задачи администратора, является правильным вариантом (хотя, будьте осторожны, так как su не корректно перезагружает среду для команд, вызванных через него).