Атрибуты безопасности файла портятся при копировании - PullRequest
3 голосов
/ 15 октября 2008

У меня есть служба Windows, которая обновляет наш продукт. Он копирует файлы продукта во временный каталог, обычно «C: \ Windows \ Temp», исправляет двоичные файлы, а затем использует MoveFileEx для копирования файлов обратно в каталог установки при перезагрузке, обычно это «C: \ Program Files \ Product». ». Файлы в каталоге установки наследуют свои атрибуты безопасности из родительской папки. После копирования, исправления и перезагрузки файлам в каталоге установки не хватает некоторых списков ACL. В частности, файлы больше не имеют ACL для группы «Пользователи», поэтому пользователи больше не могут запускать программу после перезагрузки.

Кто-нибудь может объяснить, что здесь происходит? Похоже, что при копировании из каталога установки во временный каталог файлы наследуют списки ACL временного каталога. Однако в MoveFileEx / Reboot файлы наследуют только те ACL, которые имеют общие каталоги install и temp.

Ответы [ 2 ]

4 голосов
/ 15 октября 2008

В Windows, если вы копируете файл, файл получает ACL из каталога назначения. Если вы перемещаете файл, ACL переопределяет все, что он может унаследовать от этого каталога. Я не уверен, как MoveFileEx может работать по-другому на файл.

Временный каталог обычно находится под профилем пользователя (здесь обычно указывают и% TMP%, и% TEMP%), поэтому копирование файлов здесь будет иметь разрешения для этого пользователя. Перемещение этих файлов в каталог программных файлов потребует только того, что пользователи имеют права на них, и, следовательно, только запускается установочным пользователем.

0 голосов
/ 15 октября 2008

Один из возможных обходных путей - это исправление копий файлов в одном каталоге, но с разными именами. После перезагрузки исправленные версии могут быть заменены. В качестве альтернативы сначала выполните перезагрузку, а затем исправьте их на месте и просто создайте резервную копию их во временном каталоге, если требуется откат вручную.

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

...