Книга: Системное программирование в среде 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.

Оглавление книги


Генерация: 1.945. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз