Есть ли способ в Linux, чтобы обновить свойства пользователя / группы без необходимости входа снова?

24

После того, как я отредактирую / etc / group и добавлю пользователя в группы, которым он не принадлежит, пользователь не сможет использовать свои вновь приобретенные привилегии, пока не начнет новый сеанс.

Есть ли команда для обновления свойств пользователя / группы в текущем сеансе?

wonea
источник
1
Есть ли причина, по которой вы редактируете файл вручную, а не используете useradd -G groupname username?
Бобби
4
@ Бобби: это не имеет значения.
niXar
Вы можете посмотреть этот ответ .
Пабло А

Ответы:

16

На уровне ядра членство в группах является свойством каждого процесса. Если у него нет соответствующей возможности (CAP_SETGID, если я не ошибаюсь), то есть привилегии root для всех намерений и целей, процесс не может принадлежать новой группе.

Пользователь не существует как объект на уровне ядра; делают только процессы (и файлы). У процесса есть uid (эффективный и прочее) и список идентификаторов групп.

Когда вы добавляете пользователя в группу, ядро ​​понятия не имеет, что это значит. Он только косвенно знает, что при следующем запуске / bin / login или / usr / bin / newgrp процесс с этим идентификатором пользователя будет иметь новый идентификатор группы в своем списке.

Итак, чтобы ответить на ваш вопрос, если вы говорите о сеансе Gnome или KDE, вам действительно нужно его перезапустить. Или, если вас интересует только результат одной команды в отношении этой новой группы, вы можете использовать newgrp, который я только что упомянул. Запустится новая оболочка с добавленной группой.

niXar
источник
5

Я читал ранее, что команда newgrp делает это, но только для текущей оболочки. Кажется, нет лучшей альтернативы, чем выйти и снова войти.

Энди Шеллам
источник
3
На самом деле newgrp запускает новую оболочку. Так что, если вы ... D из этого вы вернетесь к своей старой оболочке. Я обычно просто делаю 'exec newgrp'
niXar