Пример: изменение разрешений на доступ к файлу

Пример: изменение разрешений на доступ к файлу

Программа 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.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

7.4. Путь к файлу

Из книги Самоучитель работы на компьютере автора Колисниченко Денис Николаевич

7.4. Путь к файлу Путь задает «маршрут» к файлу. Предположим, что у нас есть простенькое дерево каталогов: корневой каталог, каталог А, подкаталог Б, в котором находится файл foto.jpg. Путь к этому файлу будет выглядеть так:АБИногда нужно указать полное имя файла. Оно состоит из


Пример: чтение разрешений на доступ к файлу

Из книги TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security) автора Фейт Сидни М

Пример: чтение разрешений на доступ к файлу Программа 15.4 представляет собой функцию ReadFilePermissions, которая используется программами 15.1 и 15.2. Эта программа методично использует описанные выше функции для извлечения нужной информации. Правильная работа этой программы


2.4.12 Диалог для доступа к файлу

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл

2.4.12 Диалог для доступа к файлу Рассмотрим последний диалог с пользователем. В этом примере используется компьютер с дисковой операционной системой (Disk Operating System — DOS), подключенный к сети TCP/IP. Мы переключимся на устройство d: локального хоста и просмотрим содержимое


10.1.4. Прямой доступ к файлу

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

10.1.4. Прямой доступ к файлу Для чтения из файла в произвольном порядке, а не последовательно, можно воспользоваться методом seek, который класс File наследует от IO. Проще всего перейти на байт в указанной позиции. Номер позиции отсчитывается от начала файла, причем самый первый


10.1.9. Манипулирование правами владения и разрешениями на доступ к файлу

Из книги Windows Vista. Для профессионалов автора Клименко Роман Александрович

10.1.9. Манипулирование правами владения и разрешениями на доступ к файлу Вопрос о владении файлами и разрешениях сильно зависит от платформы. Как правило, в системе UNIX функций больше, чем предоставляет Ruby, а на других платформах многие возможности не реализованы.Для


11.3.4. Изменение прав доступа к файлу

Из книги Искусство программирования на языке сценариев командной оболочки автора Купер Мендель

11.3.4. Изменение прав доступа к файлу Права доступа и модификаторы прав доступа к файлу изменяются с помощью системного вызова chmod().#include <sys/stat.h>int chmod(const char *pathname, mode_t mode);int fchmod(int fd, mode_t mode);Хотя chmod() позволяет указать путь, помните, что права доступа к файлу определяет inode, а


11.5.1. Изменение режима доступа к открытому файлу

Из книги Программирование для Linux. Профессиональный подход автора Митчелл Марк

11.5.1. Изменение режима доступа к открытому файлу Режим добавления (указываемый флагом O_APPEND при открытии файла) и неблокирующий режим (флаг O_NONBLOCK), могут быть включены и отключены уже после того, как файл был открыт, с помощью команды F_SETFL в fcntl(). Параметр arg при этом должен


7.1. Настройка разрешений и аудит доступа

Из книги Операционная система UNIX автора Робачевский Андрей М.

7.1. Настройка разрешений и аудит доступа По сравнению с предыдущими версиями операционных систем семейства Windows, настройка разрешений на доступ к файлам и ветвям реестра в Windows Vista совершенно не изменилась: окна операционной системы и механизмы изменения остались те же,


Пример 9-17. Изменение расширений в именах файлов:

Из книги Linux и UNIX: программирование в shell. Руководство разработчика. автора Тейнсли Дэвид

Пример 9-17. Изменение расширений в именах файлов: #!/bin/bash# rfe# ---# Изменение расширений в именах файлов.## rfe old_extension new_extension## Пример:# Изменить все расширения *.gif в именах файлов на *.jpg, в текущем каталоге# rfe gif jpgARGS=2E_BADARGS=65if [ $# -ne "$ARGS" ]then echo "Порядок


Пример 11-14. Изменение значений позиционных параметров (аргументов)

Из книги автора

Пример 11-14. Изменение значений позиционных параметров (аргументов) #!/bin/bashvariable="one two three four five"set -- $variable# Значения позиционных параметров берутся из "$variable".first_param=$1second_param=$2shift; shift # сдвиг двух первых параметров.remaining_params="$*"echoecho "первый параметр = $first_param" # oneecho "второй


5.3.3. Совместный доступ к файлу

Из книги автора

5.3.3. Совместный доступ к файлу Процессы могут взаимодействовать друг с другом через области отображаемой памяти, связанные с одним и тем же файлом. Если в функции mmap() указать флаг MAP_SHARED, все данные, заносимые в отображаемую память, будут немедленно записываться в файл, т.е.


Б.1.5. Перемещение по файлу

Из книги автора

Б.1.5. Перемещение по файлу В файловом дескрипторе запоминается текущая позиция в файле. При чтении или записи данных указатель текущей позиции перемещается на то количество байтов, которое было прочитано или записано. Но иногда нужно осуществлять простое перемещение по


Блокирование доступа к файлу

Из книги автора

Блокирование доступа к файлу Традиционно архитектура файловой подсистемы UNIX разрешает нескольким процессам одновременный доступ к файлу для чтения и записи. Хотя операции записи и чтения, осуществляемые с помощью системных вызовов read(2) или write(2), являются атомарными, в


1.4. Изменение прав доступа к файлу

Из книги автора

1.4. Изменение прав доступа к файлу Вы можете изменять режим доступа к файлам, которыми владеете, с помощью команды chmod. Аргументы этой команды могут быть заданы либо в числовом виде (абсолютный режим), либо в символьном (символьный режим). Сначала рассмотрим символьный