Почему приложения не работают для обычных пользователей
Введение
Мы все это видели. Если вы понимаете, о чем я! У вас есть компьютер, на котором вы настроили пользователя как обычного пользователя, а не как локального администратора. Затем вы устанавливаете приложение, чтобы все пользователи могли запускать приложение, только чтобы обнаружить, что приложение не работает для обычного пользователя, а только для пользователей, настроенных как локальный администратор. Вы не одиноки в этом сценарии! Домашние пользователи, малый бизнес, организации среднего размера и огромные корпорации борются с этой дилеммой. Мы все хотим, чтобы наши пользователи работали как обычные пользователи для защиты рабочего стола, сети и серверов, но некоторые приложения просто не работают. Почему дело? Что заставляет приложение вынуждать пользователя работать в качестве локального администратора? Здесь мы ответим на это!
Токен входа
Проблема с тем, что приложение не запускается для пользователей, не являющихся локальными администраторами, начинается с входа пользователя в систему. Когда пользователь входит в систему на компьютере, пользователь должен пройти аутентификацию. В нашем обсуждении здесь мы обсудим типичную корпоративную среду, в которой пользователь входит на рабочий стол в среде Active Directory. В этом сценарии пользователь проходит проверку подлинности контроллером домена для домена Active Directory.
Пользователь вводит учетные данные: имя пользователя и пароль. В раскрывающемся списке пользователь должен выбрать правильный домен, в котором находится его соответствующая учетная запись. После выбора домена учетные данные отправляются на контроллер домена для проверки подлинности. Как только контроллер домена подтвердит правильность имени пользователя и пароля, контроллер домена вернет на рабочий стол маркер проверки подлинности. На этом токене находится ключевая информация о пользователе для будущего доступа к файлам и запуска приложений.
Используя такой инструмент, как Process Explorer, вы можете четко видеть, что находится в токене аутентификации. На рис. 1 показан пример токена аутентификации.
Рисунок 1: Токен аутентификации.
Вы можете четко видеть на токене аутентификации следующую информацию:
- Имя пользователя и SID пользователя (идентификатор безопасности)
- Имена групп
- Связанные с пользователем права пользователя (привилегии)
Права доступа к системной папке/файлу
На каждом компьютере используются разные файлы и папки. Большинство пользователей хранят файлы либо в своей папке «Документы», либо в «созданных пользователем» папках, обычно на диске C:. Лично я предпочитаю создавать папку на диске C:, что позволяет мне лучше контролировать документы независимо от того, под каким пользователем я вхожу в систему.
С другой стороны, компьютер и операционная система используют свой собственный набор файлов. Стандартный компьютер имеет набор папок и файлов, которые используются операционной системой для большинства выполняемых ею функций. Ниже приведен список общих папок, используемых операционной системой:
- С:
- C:виндовс
- C:Программные файлы
- C:WindowsСистема
- C:WindowsSystem32
Есть, конечно, много других папок, используемых системой. Это лишь самые распространенные папки, которые есть почти на каждом компьютере с Windows.
Если вы посмотрите на безопасность этих папок, вы увидите общую конфигурацию. Например, разрешения безопасности для папки C:WindowsSystem показаны на рисунке 2.
Рисунок 2: Разрешения для папки C:WindowsSystem.
Обратите внимание, что пользователи имеют доступ, но не для обновления (изменения) содержимого. Пользователи могут запускать (выполнять) только содержимое этой папки. Если вы посмотрите на другие папки, используемые системой, вы найдете аналогичную картину. Если бы вы посмотрели на разрешения для администратора или группы администраторов, вы бы увидели, что именно этому уровню привилегий предоставляется разрешение на изменение.
Разрешения реестра
Подобно тому, как папки и файлы защищены для использования операционной системой, реестр также защищен. Существует множество различных областей, которые используются исключительно операционной системой. Есть одна ключевая часть реестра, посвященная операционной системе и ее использованию.
- HKEY_Local_Machine
Вы можете увидеть HKEY_Local_Machine и подразделы, которые включены в ключ на рисунке 3.
Рисунок 3: HKEY_Local_Machine и подразделы
Каждый ключ в реестре имеет список разрешений, связанных с ним, подобно папкам в файловой системе. Эти разрешения контролируют, какие пользователи и группы имеют доступ, а также определяют доступ. В корне ключа HKEY_Local_Machine разрешения такие, как показано на рисунке 4.
Рисунок 4: Разрешения HKEY_Local_Machine.
Сразу видно, что Реестр защищен от пользователей. Пользователи имеют только разрешение на чтение, тогда как администратор и администраторы имеют полный доступ, чтобы можно было вносить изменения в эти места в реестре. Пользователи имеют полный доступ к своей части реестра, которая обычно ограничена HKEY_Current_User.
Права пользователя
Защищены не только файлы, папки и ключи реестра, но и весь компьютер. Эта защита компьютера обеспечивается правами пользователя. Права пользователя — это конфигурации, которые ограничивают действия пользователя на компьютере. Примеры прав пользователя показаны на рисунке 5.
Рисунок 5: Права пользователя, указанные в групповой политике.
Большинство прав пользователей, которые изменяют состояние компьютера, ограничены только администраторами. Это может быть изменение часов, резервное копирование файлов, установка драйверов и т. д. Единственный способ, которым пользователь может выполнять многие задачи, связанные с правами пользователя, — это включить свое имя или группу, в которую они назначены. в списке прав пользователя. Без них пользователь не сможет выполнить эту задачу.
В чем тогда проблема?
Что ж, когда пользователь входит в систему с ограниченными привилегиями, которые подробно описаны в его токене аутентификации, этот токен ограничивает их оставшееся время, когда они входят в систему на компьютере. Маркер и записи в маркере сравниваются с разрешениями для файла, папки и реестра в момент, когда пользователь или приложение пытается получить доступ к этому ресурсу. Если уровень доступа, необходимый для выполнения действия, не предоставлен для разрешений, пользователю будет отказано в доступе.
Например, многие приложения требуют, чтобы пользователь создавал временные файлы для запуска приложения. Если приложению необходимо создать этот файл в папке C:windowssystem, пользователь не имеет правильных разрешений и, следовательно, получит сообщение об ошибке «Отказано в доступе» или сообщение об ошибке, указывающее, что пользователь должен быть локальным администратором. для запуска приложения.
То же самое и с действиями, требующими прав пользователя. Поскольку права пользователя указаны в токене аутентификации, любое действие, для которого приложению требуется право пользователя, а вошедший в систему пользователь не обладает этими правами пользователя, действие будет отклонено.
Резюме
Вы можете ясно видеть, что разрешения и привилегии являются ключевыми для пользователей для выполнения определенных задач на компьютере. Когда приложение запускается, ему необходимо получить доступ к определенным файлам, папкам и разделам реестра. Приложению также может потребоваться выполнить действие на компьютере, например установить драйвер, для чего требуются повышенные права пользователя. Если у пользователя нет нужного уровня доступа, он должен: быть включен в локальную группу администраторов, быть добавленным к разрешениям или иметь инструмент, который может автоматически повышать их. Без такого решения приложения просто не будут работать для обычных пользователей!