Intereting Posts
Получено SIGHUP или SIGTERM: nano не может редактировать пустой файл Принудительно идентифицировать раздел с разделением как создать пользовательскую метку SELinux Работа с оператором if ldd возвращает «не динамический исполняемый файл» для 64-битного ELF, хотя objdump и readelf не согласны Как избавиться от приглашения окна двойного цикла в XFCE История команд в Zsh Как управлять службами и демонами Fedora с помощью графического интерфейса? Bash – функции в переменных оболочки hwinfo не найден после кажущейся успешной установки Удалите каталог изнутри с помощью интерфейса командной строки Запуск пользовательского скрипта с правами root Какие причины / proc / <pid> / * ресурсы становятся собственностью root, несмотря на то, что procs запускается как обычный пользователь? Проблема с расширением подстановочных знаков для диапазона петель Разница между эхом и печатью в оболочке Korn

Почему «выключение» сеанса активирует новую добавленную группу?

Я задал следующий вопрос: добавлена ​​дополнительная группа пользователей, но «группы (1)» пока не показывают изменения ранее. Теперь я хотел бы знать, почему ответ работает. После запуска

adduser user group 

Почему пользователю нужно выйти из системы (я даже не уверен, что это означает в контексте без диспетчера окон), или почему нужно активировать newgrp (1) ?

Если вы посмотрите на страницу руководства, учетные данные, вы увидите, почему дочерние процессы не могут иметь изменений, внесенных через adduser немедленно отражаются в режиме реального времени:

выдержка

Детский процесс, созданный fork (2), наследует копии идентификаторов пользователей и групп его родителя. Во время execve (2) сохраняется реальный идентификатор пользователя и группы, а также идентификаторы дополнительных групп; эффективные и сохраненные идентификаторы набора могут быть изменены, как описано в execve (2).

Так что это значит?

Выход из системы завершает родительский процесс, из которого все ваши последующие процессы были разветвлены. Все на вашем рабочем столе и т. Д. В этом исходном процессе были данные вашей группы, которые он заполнял чтением /etc/passwd & /etc/group .

Другим файлом, который играет роль в том, как ваша среда получает информацию о ваших группах, является /etc/nsswitch.conf . Этот файл содержит следующие строки:

 passwd: files shadow: files group: files 

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

Эти строки могут так же легко проинструктировать систему использовать другие источники, такие как NIS, LDAP и т. Д., Чтобы получить эту информацию.

nsswitch.conf

Если вы посмотрите на man-страницу nsswitch.conf вы узнаете, как система может nsswitch.conf содержимое различных «баз данных» имен пользователей, групп и паролей.

выдержка

 FILES A service named SERVICE is implemented by a shared object library named libnss_SERVICE.so.X that resides in /lib. /etc/nsswitch.conf configuration file /lib/libnss_compat.so.X implements `compat' source for glibc2 /lib/libnss_db.so.X implements `db' source for glibc2 /lib/libnss_dns.so.X implements `dns' source for glibc2 /lib/libnss_files.so.X implements `files' source for glibc2 /lib/libnss_hesiod.so.X implements `hesiod' source for glibc2 /lib/libnss_nis.so.X implements `nis' source for glibc2 /lib/libnss_nisplus.so.2 implements `nisplus' source for glibc 2.1 NOTES Within each process that uses nsswitch.conf, the entire file is read only once; if the file is later changed, the process will continue using the old configuration. 

Если вы заметили эту заметку, она отражает аналогичную ситуацию с этим файлом, где изменения в nsswitch.conf не могут быть выполнены в режиме реального времени.

Он требует этого, потому что членство в группе читается при входе в систему. Вся эта информация хранится с этим сеансом и не перечитывается.