Обновить дополнительные членства в группах без повторного входа?

12

Насколько я понимаю, сессия Linux кэширует членство в группах при входе в систему. Затем, если добавлено новое членство в группе (например, с помощью adduser someuser somegroup), пользователь должен выйти из системы и войти снова, чтобы иметь возможность воспользоваться преимуществами нового членства.

Мой вопрос: есть ли способ обновить членство в группе в процессе, без повторного входа в систему, выхода из текущего процесса или запуска нового процесса?

AVDI
источник

Ответы:

9

Вы можете начать новый вход в систему с вашего сеанса

$ su - your_login

Это не влияет на ваш рабочий процесс. Если вы используете Xserver, вы можете запустить xterm и набрать эту команду (повлиять только на этот терминальный сеанс). Единственный способ сделать его постоянным - завершить сеанс и запустить его снова.

Сумар
источник
Если вы разрешаете только аутентификацию с открытым ключом на вашем сервере, вам нужно будет импортировать секретный ключ?
Кирилл Дюшон-Дорис
4

Я так не думаю. Но вы можете использовать newgrpкоманду для создания новой оболочки с новой группой. Это не навсегда.

newgrp superawesomegroupname

Вам нужно будет отключить, а затем снова включить пользователей.

Джозеф Керн
источник
1
+1 работает, не требуя пароля / аутентификации в отличие отsu
Кирилл Дюшон-Дорис
2

Другие упоминали " su - $USER" и " newgrp", и я подумал, что должен упомянуть, что вы также должны посмотреть на " sg".

Тедди
источник
1

Вы можете использовать gpasswdдля немедленного изменения:

gpasswd -a someuser somegroup

Там нет необходимости для создания новой оболочки или relogin. Затем проверьте членство в группе, используя getent:

getent group somegroup
Tombart
источник
Вы создаете группу, затем вы ищете эту группу. Это не имеет никакого отношения к обсуждаемому вопросу - изменения не эффективны в вашей текущей сессии.
ул.
1

Ты можешь сделать:

exec su -l $USER

Это неявно обновляет список групп, не выходя из терминала.

Арьен П. Де Врис
источник
0

Как насчет этого (хотя это только отвечает требованию, что вы не должны были повторно регистрироваться)

exec /bin/bash -l

Флаг -l предполагает, что новая оболочка входа в систему и exec заменит текущую оболочку этой новой. Кстати, не опечатка название оболочки :-)

Одна из проблем с использованием newgrp и su, как предлагалось ранее, заключается в том, что будет создана новая вложенная оболочка. Да, вы также можете использовать команду exec.

Якорь,
источник