Делаю скрипт настройки чистого сервера под свои нужды:
под sudo, команда su не будет запрашивать пароль.
sudo может принять пароль со stdin, опция
-S, –stdin
Write the prompt to the standard error and read the password from the standard input instead of using the terminal device.
но это не секурно, правильнее прописать необходимую строчку запуска программы без запроса пароля в /etc/sudoers
статей навалом к примеру https://losst.ru/otklyuchaem-parol-sudo-v-linux
03 мая 2023, в 12:44
420 руб./в час
03 мая 2023, в 12:33
10000 руб./за проект
02 мая 2023, в 12:00
100000 руб./за проект
После создания новой групповой политики, нужно убедиться в корректности ее применения, по указанному фильтру, на удаленном компьютере. Наиболее быстрым способом проверить фактическое применение GPO, без входа на целевой компьютер, рассмотрим в этой заметке
/s — ключ обозначающий system — указывает на имя целевого компьютера.
ComputerName — Имя компьютера с которого вы хотите получить информацию о примененных политиках
/scope computer — фильтр по области применения политик
/R — ключ указывающий что мы запрашиваем список примененных групповых политик
В итоге мы получаем список групповых политик с удаленного компьютера без задействования дополнительных утилит типа PsExec
Навигация по записям
Добрый день! Уважаемые читатели и гости IT блога Pyatilistnik.org, в прошлый раз я вам показал, как я делал досрочное погашение ипотеки Сбербанка, поделился свои жизненным опытом. Сегодня я хочу вас научить, как находить и диагностировать причины, по которым у вас может не применяться назначенная вами групповая политика к компьютеру или пользователю или целому организационному подразделению. Мы рассмотрим все этапы, через которые проходит происходит взаимодействие с GPO. Разберем утилиты, которыми должен владеть системный администратор в задачи которого входит создание и назначение политик. Уверен, что данный пост будет вам полезен и интересен.
За, что Active Directory от Microsoft получила такую популярность? Одним из ответов на данный вопрос, будет функционал групповой политики. Все администраторы, как и большинство современных людей, существа очень ленивые и любят, когда все централизованно управляется и по возможности автоматизированно. Именно объекты GPO, позволяют производить настройки десятков, сотен и тысяч компьютеров, из одного места и практически по всем направлениям, например добавление принтеров, скриптов входа, профилей WiFi и многое другое.
Очень частые ситуации, что системный администратор создал новую групповую политику, применил ее на нужный ему объект, но эффекта это не дало и нужно понять почему она не применилась и вот тут начинающие системные администраторы попадают в просак, не понимая, где и что нужно искать. Ниже мы с вами разберем алгоритм действий, который поможет вам найти причину и восстановить работу применения групповой политики на нужный объект.
gpresult syntax examples
- GPRESULT /R
- GPRESULT /H GPReport.html
- Search for CMD in the start menu
- cd emp (change to a folder you can easily find and have full rights to)
- /h generates HTML formatted results
- gpr-local.html is the file name (any name .htm or .html)
Хотя концепция нескольких пользователей, совместно использующих одно устройство или один ПК, с каждым днем становится все реже , по-прежнему бывают случаи, когда вам нужно совместно использовать ПК и быстро переключать пользователей. Иногда вам нужно завершить сеанс для другого пользователя, вошедшего в ваш компьютер. Вот несколько методов, которые вы можете использовать.
Ситуация может быть другой, когда вам нужно завершить сеанс пользователя. . Например, кто-то просто забыл выйти из своей учетной записи и оставил запущенные приложения и открыл документы, поэтому они остались в памяти вашего компьютера и потребляли его системные ресурсы. В этом случае может быть полезно отключить неактивный сеанс для другого пользователя.
Никаких сторонних инструментов не требуется. Это можно сделать с помощью диспетчера задач, командной строки или PowerShell.
Чтобы выйти из системы другого пользователя в Windows 10,
- Откройте диспетчер задач. app.
- Если это выглядит следующим образом, переключите его в полноэкранный режим, используя ссылку «Подробнее» в правом нижнем углу.
- Щелкните вкладку Пользователи .
- Щелкните правой кнопкой мыши учетную запись пользователя, для которой вы хотите выйти из системы.
- В контекстном меню выберите Выход .
В качестве альтернативы есть несколько консольных инструментов, которые мы можем использовать для той же цели. Давайте рассмотрим их.
Выйдите из системы другого пользователя из командной строки
- Откройте командную строку с повышенными привилегиями.
- Введите или скопируйте и вставьте следующую команду: сеанс запроса . Будет выведен список доступных пользовательских сеансов.
- Обратите внимание на значение столбца идентификатора для пользователя, которого вы хотите выйти.
Наконец, вы можете использовать PowerShell, как показано ниже. .
Выйти из системы другого пользователя с помощью PowerShell
- Откройте PowerShell от имени администратора. Совет: вы можете добавить контекстное меню «Открыть PowerShell от имени администратора».
- Теперь выполните команду logoff $ sessionID .
Метод PowerShell отлично подходит, когда вы знаете точное имя пользователя. Вы можете сохранить его как сценарий и при необходимости выйти из системы одним щелчком мыши.
🐧 Как выполнить команду или скрипт при перезагрузке или запуске системы
Хорошо известные сервисы на Linux могут быть добавлены на старт при загрузке системы без каких-либо проблем.
Например, если вы хотите добавить службу Apache Httpd при загрузке, вы можете сделать это с помощью команд chkconfig и systemctl.
Иногда вам нужно добавить собственный скрипт или команду или службу при загрузке, и как это сделать?
Вы можете сделать это, используя следующие три метода.
В этом руководстве мы покажем вам, как использовать эти методы на примерах.
Как запустить скрипт или команду при перезагрузке или запуске системы с помощью файла /etc/rc. d/rc. local
Файл «/etc/rc.local» традиционно выполняется после того, как все обычные службы были запущены в конце процесса перехода в многопользовательский уровень выполнения.
Этот метод также работает в системе systemd.
Вам нужно добавить местоположение вашего скрипта в файл «/etc/rc.d/rc.local» для запуска при старте системы.
Убедитесь, что файл имеет права на запуск.
# chmod +x /etc/rc.d/rc.local
Чтобы продемонстрировать это, мы собираемся создать простой пример скрипта.
Вы можете создать любой скрипт по мере необходимости.
Как только скрипт будет готов, установите права на выполнение.
# chmod +x /opt/scripts/run-script-on-boot.sh
Наконец добавьте скрипт в конец файла.
# vi /etc/rc.d/rc.local
/opt/scripts/run-script-on-boot.sh
Перезагрузите систему, чтобы проверить его выполнение.
Как выполнить команду или скрипт при перезагрузке или запуске системы с помощью crontab
cron автоматически выполняет запланированные задания в бэкэнде в определенное время.
В этом примере запускается файл «/opt/scripts/run-script-on-boot.sh» при перезагрузке системы.
Мы будем использовать тот же скрипт, что и выше.
Для этого просто добавьте следующую запись в файл crontab.
Как запустить команду или скрипт при перезагрузке или запуске системы с помощью системного сервисного юнита
Этот метод работает только в системах systemd.
Этот метод очень прост.
Мы собираемся использовать тот же скрипт, показанный выше, чтобы продемонстрировать этот способ.
Для этого вам нужно создать скрипт запуска systemd и поместить его в каталог «/etc/systemd/system/».
Это наш пример скрипта запуска юнита systemd.
Как только вы поместите скрипт в расположение systemd, выполните следующую команду, чтобы обновить файлы конфигурации systemd и включить службу.
# systemctl daemon-reload
# systemctl enable sample-on-boot-script.service
Если вы хотите запустить скрипт в фоновом режиме, вам нужно добавить амперсанд «&».
Если вы хотите выполнить команду от имени другого пользователя, используйте следующий формат.

Я подумал, ладно пойду другим путем и попробую проверить применение политик GPO через RSOP, но и тут я получил ошибку:
Не удалось создать данные результирующей политики из-за указанных ниже ошибки. Недостаточно памяти.

Если посмотреть журнал с логами Windows, то вы обнаружите вот такое предупреждение:
Код события 1090: Windows не удалось записать информацию результирующей политики (RSoP), которая описывает область применения объектов групповой политики к этому компьютеру или пользователю. Возможные причины: отключение или остановка службы WMI (инструментария управления Windows), иные ошибки WMI. Параметры групповой политики были успешно применены к этому компьютеру или пользователю, но, возможно, средства управления сообщают неверные данные.

Первым делом проверьте, что у вас в запущенном состоянии служба инструментария управления Windows (Winmgmt). Для этого откройте оболочку PowerShell и введите команду:
Если у вас будет статус “Stop”, то введите команду:
Так же вы можете перезапустить сервис, командой:

Следующим шагом я вам советую добавить ключ в реестр Windows. Переходим в ветку:
Создаем ключ dword32


И точно такой же в ветке:
Создаем ключ dword32 с именем GroupPolicyMinTransferRate и значением 0. Перезагружаем компьютер или сервер. Данная манипуляция в большинстве случаев исправляет ошибку GPResult пользователь не имеет данных RSOP.
Если первый метод не помог, то пробуем удалить из реестра всю историю объекта групповой политики из профиля пользователя. Перед удалением обязательно сделайте резервную копию ветки реестра.

После чего в командной строке вводим gpupdate /force, а затем gpresult /h. В итоге ошибка “Пользователь не имеет данных RSOP”, должна пропасть. Еще одним методом устранения проблемы в обработке результирующей политики, является вывод компьютера из домена Active Directory, и повторный ввод в домен.
Дополнительные решения
- Еще на многих форумах советуют проверить ваши сетевые настройки в частности DNS, правильно ли разрешаются имена контроллеров домена.
- Установите все доступные обновления безопасности и исправления в системе.
Надеюсь мое небольшой опыт окажется вам полезным, а с вами был Иван Семин, автор и создатель IT блога Pyatilistnik.org.
Представьте себе такой сценарий. Вы управляете сервером Linux, к которому имеют доступ несколько пользователей.
Все пользователи имеют права sudo.
Вы хотите протестировать определенные команды Linux с разными пользователями.
Как бы вы это сделали?
Да, это один из способов сделать это.
Однако существует простой способ запуска команд от имени другого пользователя через sudo в Linux.
Читайте дальше, чтобы узнать об этом.
Я собираюсь использовать “itsecforu” в качестве текущего пользователя и “itisgood” в качестве целевого пользователя.
Я хочу, чтобы пользователь “itsecforu” мог выполнять любую команду от имени пользователя “itisgood” на любом хосте, не входя в систему под именем “itisgood”
Запуск команд от имени другого пользователя через Sudo
В настоящее время я вошел в систему как пользователь “itsecforu”.
Позвольте мне показать вам текущего пользователя, вошедшего в систему, с помощью команды whoami.
Вот почему вы видите имя пользователя и идентификатор пользователя “itisgood”, но не “itsecforu”.
Давайте проверим, правильно ли указан uid пользователя “itisgood” с помощью команды id.
$ id itisgood
uid=1001(itisgood) gid=1001(itisgood) groups=1001(itisgood),10(wheel)
Здесь флаг -u используется для запуска заданной команды от имени другого пользователя (в данном случае itisgood), а bash -c используется для указания имени команды.
Вы должны указать команду в одинарной кавычке.
Аналогичным образом вы можете запускать любые команды от имени другого пользователя.
Обратите внимание, что в нашем предыдущем примере команды я не ввел пароль sudo для целевого пользователя.
Если вы запускаете команду, требующую разрешения sudo, от имени другого пользователя, вы должны ввести пароль.
Вот еще один пример.
$ sudo -u itisgood bash -c ‘sudo dnf –refresh update’
$ sudo -u itisgood bash -c ‘~/backup_script_name’
Запуск команд без пароля Sudo
Иногда вы можете оказаться в ситуации, когда не хотите вводить пароль sudo для каждой команды.
В таких случаях вы можете пропустить запрос пароля для определенных команд, добавив опцию NOPASSWD в файл /etc/sudoers.
Допустим, вы хотите разрешить пользователям выполнять любую команду dnf без пароля sudo.
Для этого сначала найдите путь к команде dnf с помощью команд which или whereis.
$ which dnf
/usr/bin/dnf
Как вы видите, путь к исполняемой команде dnf – /usr/bin/dnf.
Теперь отредактируйте файлы /etc/sudoers с помощью команды:
$ sudo visudo
Внимание: Обратите внимание, что вы не должны вручную редактировать файл sudoers с помощью любого текстового редактора. Всегда используйте команду visudo для безопасного редактирования файла sudoers.
Добавьте следующую строку в конец файла, чтобы разрешить пользователям запускать команды dnf без пароля sudo.
Сохраните файл и выйдите.
Теперь пользователь “itisgood” может выполнять команды dnf без пароля sudo.
Видите? Нам не нужно вводить пароль sudo для “itisgood”
Отказ от ответственности: Вы должны быть очень осторожны при применении этого метода. Этот метод может быть использован как в продуктивных, так и в разрушительных целях. Например, если вы позволите пользователям выполнять команду ‘rm’ без пароля sudo, они могут случайно или намеренно удалить важные файлы. Не делайте этого, если это действительно необходимо.
.
Заключение
В этом кратком руководстве мы обсудили, как разрешить пользователям выполнять команды от имени другого пользователя с помощью sudo в Linux.
Мы также узнали, как можно отключить запрос пароля sudo для определенных пользователей при выполнении определенной команды (команд), изменив файл sudoers.
Как я предупреждал, вы должны быть осторожны при тестировании этого метода на рабочей системе. Вы можете неосознанно позволить пользователю выполнить опасную команду (например, rm) без необходимости вводить пароль sudo.
Вы всегда должны быть осторожны при тестировании подобных советов по Linux.
Возможно, нам потребуется выполнить некоторые команды на удаленной машине.
Для этого войдите на удаленную систему и выполните свои действия, если это происходит время от времени.
Но если это происходит часто, каждый раз, когда вы делаете это может вас сильно раздражать
Это сэкономит вам много времени.
В следующем примере пользователи могут запускать команду df через ssh на удаленном компьютере с Linux.
2) Как запустить несколько команд на удаленной системе Linux через SSH
В следующем примере пользователи могут запускать несколько команд одновременно через ssh на удаленной системе Linux.
Он одновременно запускает команды uptime и free на удаленной системе Linux.
3) Как запустить команду с привилегиями sudo на удаленной системе Linux через SSH
В следующем примере пользователи могут запускать команду fdisk с привилегией sudo на удаленной системе Linux через ssh.
Обычные пользователи не могут выполнять команды, доступные в системном бинарном каталоге (/usr/sbin/).
Пользователи должны иметь права root для запуска этих бинарников.
Таким образом, чтобы запустить команду fdisk в системе Linux, вам нужны права root.
Команда which возвращает полный путь к исполняемому файлу данной команды.
$ which fdisk
/usr/sbin/fdisk
4) Как запустить служебную service с привилегией sudo на удаленной системе Linux через SSH
В следующем примере пользователи могут запускать команду service с привилегией sudo на удаленной системе Linux через ssh.
5) Как выполнить команду на удаленной системе Linux через SSH с нестандартным портом
В следующем примере пользователи могут запускать команду hostnamectl через ssh на удаленной машине Linux с нестандартным портом.
6) Как сохранить вывод из удаленной системы в локальную через ssh
В следующем примере пользователи могут удаленно выполнять команду top в системе Linux через ssh и сохранять выходные данные в локальной системе.
Кроме того, вы можете использовать следующий формат для запуска нескольких команд в удаленной системе.
Вывод вышеуказанной команды.
7) Как выполнить локальные скрипты Bash на удаленной системе
В следующем примере пользователи могут запускать локальный скрипт bash «remote-test.sh» через ssh на удаленной машине с Linux.
Создайте скрипт оболочки и выполните его.
$ vi /tmp/remote-test.sh
#!/bin/bash
#Name: remote-test.sh
#——————–
uptime
free -m
df -h
uname -a
hostnamectl
Вывод вышеуказанной команды:
В качестве альтернативы может быть использован пайп.
Если вы считаете, что вывод плохой, добавьте несколько изменений, чтобы сделать его более элегантным.
Постановка задачи
Предположим, что вы сделали новую групповую политику и к какому-то пользовательскому компьютеру она не применилась, перед тем, как искать причину обработки GPO, вам нужно вычислить дату последнего обновления. В статье нам нужно изучить методы и инструменты, которые позволят это сделать.
Методы определения времени применения групповых политик
- Утилита Gpresult
- PowerShell
- Утилита GP Time
- Rsop
- Реестр Windows
Как выяснить время обновления GPO через командную строку
Самый просто способ, это использование всем известной утилиты командной строки под названием Gpresult. Открываем cmd и вводим команду:

При необходимости gpresult может вывести информацию, только по пользователю или компьютеру, для этого есть ключ /scope:

или более детально отфильтровать через findstr

Узнаем время обновления GPO через gptime
gptime.exe – это удобная небольшая утилита предназначена для быстрого и краткого отчета о том, когда в последний раз компьютер и пользовательская групповая политика запускались в локальной или удаленной системе. Если в систему вошли более одного пользователя, инструмент сообщит о времени обработки GP для всех найденных пользователей.
Этот инструмент предоставляет время запуска и остановки для последнего цикла обработки, а также общее истекшее время, что может быть полезно. Вам необходим Для работы требуется .Net Framework 2.0, установленный на компьютере, на котором вы запускаете эту утилиту.
В командной строке перейдите в каталог с gptime.exe и запустите ее. В моем примере видно, когда были обновлены политики для компьютера, а так же для всех пользователей, чьи профили были обнаружены на компьютере.

Как выяснить время обновления GPO через RSOP
RSoP (Resultant Set of Policy) – это отчет обо всех параметрах групповой политики в Active Directory, который показывает, как эти параметры могут влиять на сеть или как существующие объекты групповой политики (GPO) влияют на различные комбинации пользователей и компьютеров, когда локальная политика безопасности прилетели.
Чтобы запустить RSOP вы можете воспользоваться множеством методов, я бы выделил через командную строку или через окно выполнить. В командной строке просто введите:
В результате у вас будет произведен сбор сводных данных

Тоже самое через окно “Выполнить” в котором нужно вписать rsop.msc.

В результате вы получите отчет результирующей политики, тут вы увидите так же два раздела. Один для компьютера, второй для пользователя. Щелкните правым кликом по нужному разделу и выберите из контекстного меню пункт “Свойства”.

В окне свойств перейдите на вкладку “Сведения об ошибке” и найдите пункт “Инфраструктура групповой политики”, в области сведений вы увидите время обновления групповой политики.

Как выяснить время обновления GPO через PowerShell
Естественно у Microsoft есть отдельные командлеты, который позволяет вычислить время применения GPO, называется они Get-GPResultantSetOfPolicy и Get-GPOReport. Чтобы ими воспользоваться на клиентской системе, такой как Windows 10, вам необходимо установить RSAT пакет и импортировать модуль GroupPolicy. в противном случае вы будите получать ошибку:

Чтобы иметь возможность использовать эти командлеты, установите пакет RSAT, в операционных системах Windows Server, это не нужно. Далее установите модуль GroupPolicy, через команду:
Install-WindowsFeature –Name GPMC
После его установки введите команду для просмотра доступных модулей:
Get-Command -Module GroupPolicy
В итоге я вижу:

Чтобы вычислить время последнего обновления групповых политик через командлет Get-GPResultantSetOfPolicy, выполните команду:
Get-GPResultantSetOfPolicy -ReportType HTML -Path “c:
eport.html”
Где -ReportType, это вид конечного файла, может быть и xml, -Path, это путь до конечного файла, подробнее можно почитать на https://docs.microsoft.com/en-us/powershell/module/grouppolicy/get-gpresultantsetofpolicy?view=win10-ps.

В результате вы получите отчет в виде html файла, который легко открывается через браузер. В самом верху отчета вы увидите сводку по времени последнего обновления политики для пользователя и компьютера.

Так же Get-GPResultantSetOfPolicy может получать данные и с удаленного компьютера, для этого нужно добавить ключ -Computer, в итоге команда примет вот такой вид:
Get-GPResultantSetOfPolicy -Computer dc01 -ReportType HTML -Path “c:
eport.html”


Как выяснить время обновления GPO через реестр Windows
Логично предположить, что gpresult, rsopm powershell получают все значения из реестра Windows и я вам покажу, где располагаются данные ветки. Для начала давайте посмотрим для компьютера. Для этого откройте реестр Windows и перейдите в раздел:
тут вы обнаружите 6 ключей:
- EndTimeHi
- EndTimeLo
- LoggingStatus
- StartTimeHi
- StartTimeLo
- Status

Как вы можете обратить, эти данные для вас не особо читаемы, так как имеют шестнадцатиричное значение, но вы можете воспользоваться моим скриптом, который легко, это поправить.
Вы можете воспользоваться готовым скриптом по определению времени обработки политик, слева ссылка на его скачивание, а ниже его тест:
На выходе я вижу 19 ноября 2019 г. 17:25:51.

Как запустить скрипт от имени другого пользователя?
dieselБывший модераторСообщения: 5989ОС: OS X, openSuSE, ROSA, Debian
Контактная информация:
Black писал(а): ↑
BlackСообщения: 1100ОС: ArchLinux
Код: Выделить всё
Компьютер служит для решения тех проблем, которых до изобретения компьютера не существовало
Алгоритм устранения проблем с GPO
Предположим, что у меня есть групповая политика, которая применяется на организационное подразделение “Client Computers”. Политика называется “Управление UIPI”. По какой-то причине пользователь жалуется, что она у него не применилась.
Из информации, об области действия групповой политики, первое на что нужно обратить свое внимание, это находится ли объект пользователя или компьютера по нужному пути. Сделать, это просто в оснастке “Управление групповой политикой” найдите вашу политику и посмотрите к каким OU она применяется, это видно на вкладке “Область (Scope)”, ее еще называют областью действия политики. В моем случае, это путь root.pyatilistnik.org/Client Computers.

Так как Active Directory, это иерархическая структура, то одна OU можете быть часть дерева из других и сама включать в себя большое количество организационных подразделений. Поэтому если у вас есть вложенность, то просто зайдя в нужную OU вы можете сразу не найти нужный объект. В таком случае воспользуйтесь поиском по Active Directory. Например у меня есть рабочая станция с которой идут жалобы на применение объекта GPO. В поиске выбираем в поле “Найти” компьютеры и в имени указываем w10-cl01, после чего нажимаем “Найти”. В результатах поиска вы получите выдачу. Щелкаем по нужному объекту и переходим в нем на вкладку “Объект”, где смотрим “Каноническое имя объекта”, по сути это его путь расположения в Active Directory. Сравниваем его с тем, что получили из области применения групповой политики и делаем вывод, попадает объект под действие или нет.

Далее убедитесь, что у вас элементарно включена связь объекта групповой политики с нужным организационным подразделением. Для этого в оснастке управления GPO, щелкните правым кликом по нужной политике и в контекстном меню проверьте, что установлена галка “Связь включена”, ее так же можно проверить на вкладке “Область” в столбце “Связь задействована”, должно стоять значение “да”.

Следующим моментом необходимо проверить, что политика не отключена на определенный объект. Для этого перейдите на вкладку “Сведения” на нужной GPO. Нас интересует строка “Состояние GPO”. По умолчанию там стоит значение “Включено”, означающее, что политика будет пытаться примениться заданные в ней настройки к обоим типам объектов (Пользователю и компьютеру). Но может быть выставлено значение:
- Параметры конфигурации компьютера отключены (Computer configuration settings disabled)
- Все параметры отключены (All setting disabled) – запретит применение политики для любого объекта
Сделано, это для ускорения применения политики к объекты. Согласитесь, что если у вас в GPO настроены изменения только для пользователя, то нет смысла проверять политику для компьютера. Поэтому системные администраторы могут отключать это, но могут и ошибиться, выключив не тот объект
Выше я вам писал, что структура OU иерархическая, а это означает, что политика прилинкованная с вышестоящего организационного подразделения применяется на нижестоящее. Но вот если у нижестоящей OU отключено наследование сверху, то он не сможет применить данную политику. Проверяется очень просто, найдите нужную вам OU, щелкните по ней правым кликом и удостоверьтесь, что не стоит пункт “Блокировать наследование”.

Он кстати будет иметь характерный значок с восклицательным знаком. Данный механизм создан специально, чтобы изолировать данную OU от ненужных политик GPO.

Проверка прав на политику
Объекты групповой политики, так же имеют свой ACL (лист доступа), это означает, что вы можете более тонко настраивать к каким объектам применяется данная политика. В редакторе “Управление групповой политикой” выберите ваш GPO. На вкладке “Область” найдите раздел “Фильтры безопасности”, он отображает к каким объектам применяется политика. Данный фильтр безопасности может включать объекты:
- Пользователь
- Компьютер
- Группа безопасности

Если у вас тут выставлена другая группа или отдельные записи, то убедитесь, что нужный объект состоит в данном ACL. Хочу отметить, что если даже нужный объект присутствует в списке фильтра безопасности, то это не означает, что политика к нему применяется и тут дело все в том, что в 2014 году Microsoft изменила принцип чтения политики, таким образом, что у вас в делегированном фильтре безопасности обязательно должна присутствовать группа “Компьютеры домена” или “Прошедшие проверку” у которой должны быть прав на чтение политики. Вся соль в том, что когда вы удаляете группу “Прошедшие проверку” из фильтра безопасности, она удаляется и из вкладки делегирование.
Чтобы параметры групповой политики для пользователя успешно применялись, она требует наличия у каждой учетной записи компьютера разрешения на считывание данных GPO из контроллера домена. Удаление группы “Прошедшие проверку” может предотвратить обработку групповых политик для пользователя. добавьте группу безопасности “Пользователи, прошедшие проверку подлинности” или “Компьютеры домена”, у которой есть по крайней мере разрешение только для чтения (https://support.microsoft.com/en-us/kb/316622)

Поэтому перейдите на вкладку “Делегирование” и проверьте наличие любой из групп “Прошедшие проверку” или “Компьютеры домена” и, что есть права на чтение. Если групп нет, то добавьте любую из них. Для этого нажмите кнопку “Дополнительно”, далее добавить и выберите “Прошедшие проверку”.

Удостоверьтесь, что выставлена галка “Чтение”.

Тут же убедитесь, что нет запретов на нужный вам объект, в моем примере, это W10-CL03. Если есть снимите.

Обратите внимание на группу “КОНТРОЛЛЕРЫ ДОМЕНА ПРЕДПРИЯТИЯ (Enterprise Domain Controllers)” данная группа определяет, будет ли происходить репликация данной политики на другие контроллеры или нет, так что если политика отсутствует в папке SYSVOL на других контроллерах, то проверьте права у данной группы.

Еще одним механизмом фильтрации групповой политики, может выступать WMI фильтры. Если они есть и ваш объект не соответствует его требованиям, то вы не сможете применить политику. Посмотреть, это можно в соответствующем разделе. В моем примере есть WMI фильтр для ноутбуков, который не даст применения политики на стационарные компьютеры. Подробнее, о создании WMI фильтров и механизме проверки WMI фильтров, читайте по ссылкам. Ниже я покажу, как на конечном компьютере увидеть, что он не подошел из-за фильтрации GPO по WMI.

Удаленное определение времени применения GPO
Я вам уже неоднократно рассказывал про утилиты Марка Руссиновича PSTools, а конкретнее PsExec. Утилита при наличии административных прав на целевом компьютере может запускать командную строку или оболочку PowerShell из которой уже легко делать, то что нужно. Открываем командную строку, переходим в папку с утилитой PsExec. Подключаться я буду с контроллера домена dc01 к удаленному серверу SVT2019S01. Для начала через команды hostname и whoami я виду исходные данные и, что cmd запущенна именно на исходном сервере.

PsExec64.exe \svt2019s01.root.pyatilistnik.org -u rootАдминистратор
\svt2019s01.root.pyatilistnik.org это имя моего сервера


Еще получить данные с удаленного компьютера, вы можете через командлет PowerShell Enter-PSSession. Для этого введите команду:
Enter-PSSession -ComputerName svt2019s01
далее подключившись к серверу вы все так же выполняете gpresult /R.

На этом мои методы закончились, я допускаю, что существует еще огромное количество утилит, но мне достаточно и этих. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.
К чему применяется групповая политика (GPO)
Первое, на что я хочу обратить внимание, это ответить, что делает групповая политика. Все мы прекрасно знаем, что операционная система Windows, это набор служб и ключей реестра. Все настройки, которые вы видите и меняете в графическом режиме, по сути меняют ключи реестра. Понимая, это сразу можно сделать вывод:
- что реестр есть как для объекта компьютер
- и реестр есть для объекта пользователь
Именно эту две сущности являются конечными объектами в политике GPO. В Active Directory объекты пользователей и компьютеров не лежат просто так, а располагаются в двух видах папок:
- Это контейнер – по сути простая папка, важно, что к ней нельзя применять объекты групповой политики.
- Второй тип, это организационные подразделения (OU) – это специальные папки для объединения объектов AD по принципам. Именно с OU связываются объекты групповой политики, для применения их к компьютерам и пользователям. Внешне контейнер отличается от организационной утилитой, тем что у OU, есть дополнительная лычка на значке, это показано на скриншоте.

Записки администратора
Выше мы разобрали возможные места, где могла быть проблема, но по мимо них еще есть несколько инструментов, которые могут дать системному администратору информацию, о причинах, которые мешают применению GPO к нужному объекту.
Существуют три инструмента, которые вам покажут информацию, о применяемых политиках на объекты:
- Утилита командной строки gpresult
- Утилита rsop
- Моделирование групповой политики в оснастке gpmc.msc
- Результаты групповой политики
Результаты групповой политики
В оснастке GPMC есть возможность посмотреть какие политики применяются к нужному объекту групповой политики. Данный мастер называется “Результат моделирования групповой политики”. Щелкаем по нему правым кликом и открываем мастер.

Выбираем нужный компьютер, к которому мы хотим проверить применение политики.

Если в момент добавления компьютера у вас выскочит ошибка “Сервер RPC-недоступен”, то проверьте, что у вас запущена на нем служба WMI и в брандмауэре открыты порты для подключения к ней.

Так как я проверяю GPO для компьютера, то мне нет смысла отображать политику для пользователей.

Нажимаем далее. У вас появится отчет. Раскрыв его на вкладке “Сведения” вы увидите, какие политики применены, а какие нет.

Раскрыв подробнее политику, которая не смогла примениться, я вижу, что причиной всему был WMI фильтр.

Последним удобным инструментом диагностики и моделирования групповой политики, выступает функционал GPMC, под названием “Моделирование групповой политики”. В задачи которого входит проверка применения политики в существующей ситуации, так и просто тест без реальной прилинковки к OU, указав нужный объект. В оснастке GPMC выберите пункт “Моделирование групповой политикой” и щелкните по нему правым кликом, выбрав “Мастер моделирования групповой политики”.

На первом шаге мастера моделирования групповой политики, будет простое уведомление, что к чему, нажимаем далее.

Далее вам будет предложен выбор, дабы указать нужный контроллер домена.

Теперь выбираем нужную OU, для которой мы будем тестировать групповую политику. Делается все через кнопку “Обзор”. Я выбрал “Client Computers”


На следующем шаге мастера моделирования групповой политики, вам предоставят сэмулировать таки параметры:
- Медленное сетевое подключение, меньше 500 кб/с
- Обработка петлевого адреса (Замыкание групповой политики – loopbacl policy) – это опция когда вы применяете для OU в которой находятся компьютеры, например терминальные сервера, политики для пользователя. Делается это для того, чтобы политики применяемые к пользователю на его рабочей станции или другом сервере от тех, что в данной OU. Можете подробно почитать, что такое замыкание групповой политики.
- Выбор сайта.

Указываем в какой группе находится наш объект, к которому будет применяться политика.

далее вы можете применить любой из фильтров WMI, который вы хотите тестировать.


В итоге мы получаем результат моделирования групповой политики, тут можно посмотреть, что применилось, что нет.

На этом у меня все. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org. Надеюсь, что статья оказалась полезной.
Диагностика GPO через gpresult
Gpresult первое средство, которое позволит системному администратору определить на каком этапе есть проблемы с выполнением GPO. Откройте на клиентском компьютере или ноутбуке командную строку от имени администратора и введите команду:
В моем примере у меня есть политика для компьютера “Управление UIPI”, поэтому я воспользуюсь gpresult для компьютера. Выполнив gpresult /r /scope:computer я вижу, что моя политика не применилась и числится в списке “Следующие политики GPO не были применены, так как они отфильтрованы”. Фильтрация отказано в доступе (Безопасность). Из этого видно, что у компьютера просто нет прав на чтение политики.

Так же в логах Windows вы можете обнаружить событие с кодом ID 5313:
Код 5313: Следующие объекты групповой политики не были применены, так как они были отфильтрованы:
Local Group Policy Не применяется (пусто) Управление UIPI Отказано (безопасность)

А вот пример 5313, но с уже WMI фильтром:
Local Group Policy Не применяется (пусто) Управление UIPI Отказано (фильтр WMI)

Я для исключаю его из запрета применения и пробую новую попытку применения политики. Я делаю для начала обновление групповой политики через gpupdate /force и затем снова выполняю команду gpresult /r /scope:computer, где теперь вижу, что политика не применилась из-за WMI фильтра. Теперь уже понятно куда копать.

Получение данных GPResult с удаленного компьютера GPResult /s server01 /r, поможет администратору или технической поддержке собрать диагностические данные. Аналогичные действия вы можете выполнять и для пользователя, тут все аналогично. Теперь воспользуемся утилитой RSOP. Откройте окно выполнить и введите rsop.msc.

Начнется сбор применяемых политик.

По результатам, у вас откроется окно результирующей политики. Похожее на то, где вы редактируете политику GPO. Тут вы можете перемещаться по веткам и смотреть текущие значения.
Но это не удобно и мы можем совместить две утилиты gpresult и Resultant Set of Policies (RSoP), получив выгодный симбиоз. В командной строке введите:
GPResult /h c:
eport.html /f
На выходе вы получите удобный html отчет, о всех примененных или отфильтрованных политиках. Открыв отчет, вы легко поймете ,какие политики были применены, а какие нет и можете сразу посмотреть значения настроек.





