В системах Windows (особенно Windows Server 2008R2, который я использую) иногда, когда я добавляю локального пользователя в локальную группу, пользователю необходимо выйти из системы и снова войти в систему, прежде чем эта новая группа будет зарегистрирована для него.
Но иногда также регистрация группы выполняется немедленно ... без необходимости выхода пользователя из системы и повторного входа в систему ..
почему это так?
Вы упоминаете локальных пользователей и группы, оставляя в стороне Active Directory.
Вам следует всегда необходимо повторно пройти аутентификацию, чтобы токен безопасности пользователя содержал новое членство в группе. Обычно это означает, что вам необходимо повторно войти в систему. LSASS передает этот токен только тогда, когда пользователь аутентифицируется, то есть обычно только при входе в систему, но вы можете сделать что-то вроде C:\> runas /user:Yourself cmd.exe
и вам будет предложено ввести пароль, и вы снова пройдете аутентификацию, и ваше новое членство в группе будет подобрано. (Но я не могу гарантировать, что другие запущенные приложения, которые могли запрашивать членство в вашей группе, обновят свои данные без перезапуска этих приложений и т. Д.)
(Не говоря уже о klist.exe
потому что мы говорим только о локальных пользователях и группах.)
Эта статья в значительной степени авторитетна в этом вопросе.
Когда пользователь аутентифицируется, Local Security Authority (LSA) создает токен доступа - в данном случае первичный токен доступа - для этого пользователя. Маркер доступа содержит идентификатор безопасности (SID) для пользователя, все идентификаторы безопасности для групп, к которым принадлежит пользователь, и привилегии пользователя. Если вы добавляете пользователя в группу после того, как был выпущен токен доступа пользователя, или изменяете права, назначенные учетной записи пользователя, пользователь должен выйти из системы, а затем снова войти в систему, прежде чем токен доступа будет обновлен.
Каждый раз, когда поток или процесс взаимодействует с защищаемым объектом или пытается выполнить системную задачу, требующую привилегий, операционная система проверяет действующий маркер доступа, чтобы определить уровень авторизации. Если поток выдает себя за другое лицо, эффективный токен обычно считается токеном в потоке. Если поток, взаимодействующий с защищаемым объектом, не олицетворяет себя, то для принятия решения о доступе проверяется маркер процесса.
Таким образом, существует два типа токенов доступа: первичный и имитационный. У каждого процесса есть первичный токен, который описывает контекст безопасности учетной записи пользователя, связанной с процессом. Первичный токен доступа обычно назначается процессу для представления информации о безопасности по умолчанию для этого процесса. С другой стороны, маркеры доступа олицетворения обычно используются для сценариев клиент / сервер. Маркеры олицетворения позволяют потоку выполняться в контексте безопасности, который отличается от контекста безопасности процесса, которому принадлежит поток.
Это видео как бы отвечает на вопрос https://vimeo.com/73500318
Видео также решает проблему получения пользователем доступа к ресурсу, членство в группе которого человек только что был добавлен, без необходимости выхода из системы и повторного входа в систему.
Вот краткое изложение решения, которое позволяет избежать хлопот при входе в систему и выходе из системы:
Открыть командную строку Kill
Убейте процесс explorer.exe (он убьет только проводник Windows. Все остальные приложения в безопасности).
В командной строке введите следующую команду: runas / user: DOMAIN \ explorer.exe
В приведенном выше примере имя пользователя, которое вы бы использовали, совпадает с тем, под которым вы уже вошли в систему.