Назад | Перейти на главную страницу

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

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

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

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

$ su - your_login

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

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

newgrp superawesomegroupname

Вам нужно будет снова регистрировать своих пользователей.

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

exec su -l $USER

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

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

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

gpasswd -a someuser somegroup

Нет необходимости создавать новую оболочку или повторно входить в систему. После этого проверьте членство в группе, используя getent:

getent group somegroup

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

exec /bin/bash -l

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

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