Книга: Системное программирование в среде Windows
Пример: изменение разрешений на доступ к файлу
Разделы на этой странице:
Пример: изменение разрешений на доступ к файлу
Программа 15.5 является последней в нашем собрании функций, предназначенных для работы со средствами защиты файлов. Эта функция, ChangeFilePermissions, заменяет существующий дескриптор безопасности новым, сохраняя идентификаторы SID пользователя и группы, но создавая новый разграничительный список ACL.
Программа 15.5. ChangeFilePermissions: изменение атрибутов безопасности
BOOL ChangeFilePermissions(DWORD fPm, LPCTSTR FNm, LPDWORD AceMsk)
/* Изменить разрешения на доступ к существующему файлу. Разрешения на доступ для группы остаются неизменными. */
{
TCHAR UsrNm[ACCT_NAME_SIZE], GrpNm[ACCT_NAME_SIZE];
LPSECURITY_ATTRIBUTES pSA;
PSECURITY_DESCRIPTOR pSD = NULL;
HANDLE hSecHeap;
if (_taccess(FNm, 0) != 0) return FALSE;
ReadFilePermissions(FNm, UsrNm, GrpNm);
pSA = InitializeUnixSA(fPm, UsrNm, GrpNm, AceMsk, &hSecHeap);
pSD = pSA->lpSecurityDescriptor;
SetFileSecurity(FileName, DACL_SECURITY_INFORMATION, pSD);
HeapDestroy(hSecHeap);
return TRUE;
}
Комментарии по поводу разрешений на доступ к файлам
В процессе выполнения этих программ весьма интересно контролировать файловую систему через проводник Windows. Эта служебная программа не в состоянии интерпретировать АСЕ, разрешающие и запрещающие доступ, и не может отображать соответствующие разрешения. В Windows 4.0 проводник, сталкиваясь с такими АСЕ, будет генерировать исключения.
Вместе с тем, использование ACL, разрешающих и запрещающих доступ, необходимо для эмуляции семантики UNIX. Если этим пренебречь, то проводник Windows сможет обеспечить просмотр разрешений. Тогда, например, при коде защиты 0446 пользователь и члены группы смогут осуществлять запись в файл, поскольку это разрешено всем пользователям категории Everyone. В то же время, UNIX действует иначе; пользователю и членам группы эта операция будет запрещена.
Понаблюдайте также за тем, что происходит, когда вы пытаетесь создать защищенный файл на дискете или в другой FAT-системе, а также когда программа выполняется под управлением Windows 9x.
- Атрибуты безопасности
- Общий обзор средств безопасности: дескриптор безопасности
- Управляющие флаги дескриптора безопасности
- Идентификаторы безопасности
- Работа с ACL
- Пример: использование разрешений на доступ в стиле UNIX к файлам NTFS
- Пример: инициализация атрибутов защиты
- Чтение и изменение дескрипторов безопасности
- Пример: чтение разрешений на доступ к файлу
- Пример: изменение разрешений на доступ к файлу
- Защита объектов ядра и коммуникаций
- Пример: защита процесса и его потоков
- Обзор дополнительных возможностей защиты объектов
- Резюме
- Упражнения
- Пример: использование разрешений на доступ в стиле UNIX к файлам NTFS
- Чтение и изменение дескрипторов безопасности
- Пример: чтение разрешений на доступ к файлу
- Пример: защита процесса и его потоков
- Пример установочного скрипта
- Пример из практики
- ПРИМЕР ПРОСТОЙ ПРОГРАММЫ НА ЯЗЫКЕ СИ
- Что делать, если при установке принтера появляется сообщение Невозможно завершение операции. Подсистема печати недоступн...
- Примеры получения статистики
- Пример применения метода «пять почему»
- 9.4. Права доступа к squid
- Пример 12-8. Частота встречаемости отдельных слов