Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Улучшение безопасности: программная настройка прав доступа пользователей IIS_IUSRS в Delphi 10.2 Tokyo

Delphi , Синтаксис , Справочник по API-функциям

Улучшение безопасности: программная настройка прав доступа пользователей IIS_IUSRS в Delphi 10.2 Tokyo

Разработчики, использующие среду Delphi 10.2 Tokyo для создания приложений на языке Object Pascal, часто сталкиваются с необходимостью настройки прав доступа к файлам и каталогам. Одной из распространенных задач является предоставление прав на запись для пользователя IIS_IUSRS, что необходимо для корректной работы веб-приложений, размещенных на сервере, использующем IIS (Internet Information Services).

Описание проблемы

Задача состоит в том, чтобы программно добавить права на запись для пользователя IIS_IUSRS в определенную директорию. Встроенных функций в Delphi для решения этой задачи нет, поэтому разработчикам приходится использовать Win32 API.

Подтвержденный ответ

Для выполнения поставленной задачи можно использовать функцию SetNamedSecurityInfo(), которая позволяет обновить дескриптор безопасности директории, добавив в него желаемые разрешения для пользователя.

Пример кода на Object Pascal для использования SetNamedSecurityInfo():

uses
  SysUtils,
  Secur32;

procedure SetDirectoryPermissions(const DirectoryPath: string; const User: string; const AccessMask: DWORD);
var
  SD: PSecuritityDescriptor;
  DACL: PACE;
  Access: PACCESS_ALLOWED_ACE;
  SID: PSID;
  ACECount: Integer;
  ErrorCode: DWORD;
begin
  // Получение SID пользователя
  if not OpenProcessToken(Handle(CurrentThread), TOKEN_READ, SID) then
    Exit;

  // Проверка и создание дескриптора безопасности
  if not InitializeSecurityDescriptor(SD, SECURITY_DESCRIPTOR_REVISION) then
    Exit;

  // Создание списка доступа
  if not AllocateAndInitializeSid(S-1-1-0, SD) then
    Exit;

  // Подготовка дескриптора доступа к доступу
  ACECount := SizeOf(TACE) + SizeOf(DWORD) * (Length(AccessMask) div SizeOf(DWORD));
  SetLength(Access, ACECount);
  FillChar(Access[0], SizeOf(TACE) + SizeOf(DWORD) * (Length(AccessMask) div SizeOf(DWORD)), #0);
  Access[].Header := ACE_HEADER(AccessMask, AceTypeAllow);
  Access[].Mask := AccessMask;
  Access[].SidStart := SizeOf(TACEHeader);

  // Открытие списка дескрипторов управления
  if not InitializeAcl(DACL, SizeOf(TACL) + ACECount, ACL_REVISION) then
    Exit;

  // Добавление ACES в список ACL
  if not AddAce(DACL, FALSE, Access, Length(Access), @ACECount) then
    Exit;

  // Установка списка дескрипторов управления в дескриптор безопасности
  if not SetSecurityDescriptorDacl(SD, TRUE, DACL, FALSE) then
    Exit;

  // Установка дескриптора безопасности для указанного объекта
  ErrorCode := SetNamedSecurityInfo(PChar(DirectoryPath), SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, nil, nil, SD, nil);
end;

Альтернативный ответ

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

icacls "C:\path\to\your\folder" /grant "IIS_IUSRS:(OI)(CI)F" /t /q

Эта команда предоставляет полный доступ к указанной директории и всем вложенным объектам для пользователя IIS_IUSRS. Вы можете проверить результаты выполнения команды через вкладку "Безопасность" в свойствах папки в Проводнике Windows.

Для выполнения этой команды из Delphi, вы можете использовать компоненты, такие как TProcess из пакета Indy, для запуска внешних процессов.

Заключение

В статье было рассмотрено две методики для предоставления прав доступа пользователю IIS_IUSRS в Delphi 10.2 Tokyo: использование функции SetNamedSecurityInfo() из Win32 API и использование утилиты командной строки icacls. Выбор метода зависит от конкретных требований проекта и удобства интеграции с вашим кодом.

Создано по материалам из источника по ссылке.

Разработчики в среде Delphi 10.2 Tokyo настраивают права доступа пользователя `IIS_IUSRS` для корректной работы веб-приложений на сервере с IIS, используя программные средства или утилиты командной строки.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Справочник по API-функциям ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2024-12-26 14:00:31/0.0032908916473389/0