Когда я копирую файл из одного места в другое, будет ли место назначения сохранять исходные разрешения или оно будет иметь разрешения на копирование файлов?
2 ответа
Если вы делаете новую копию, она наследует списки ACL целевой папки. Существует скрытый параметр Explorer, ForceCopyAclwithFile
, который указывает ему также копировать ACL.
Некоторые смутно связанные статьи:
- http://blogs.msdn.com/b/oldnewthing/archive/2006/08/24/717181.aspx
- http://blogs.msdn.com/b/oldnewthing/archive/2013/09/24/10451467.aspx
- http://blogs.msdn.com/b/oldnewthing/archive/2015/10/14/10647632.aspx
С одной стороны, заголовок вашего вопроса - «Есть ли настройки безопасности windows в файле или на месте?"- не имеет никакого значения.
Если настройки были в файле, это не значит, что они будут скопированы автоматически. И если настройки были на месте, это не значит, что они не могут быть скопированы. На практике функция копирования сначала дублирует содержимое, затем корректирует временные метки, а затем дублирует ACL ...
С другой стороны, это было бы важно для других механизмов безопасности, помимо ACL, например, для обязательного контроля доступа, такого как SELinux или AppArmor (оба в Linux). То есть SELinux присоединяет информацию MAC к файлам и сохраняется при переименовании файла; Между тем, правила AppArmor написаны на основе буквальных путей, независимо от того, какой файл там находится.
По умолчанию в Windows скопированные файлы не сохраняют явно установленные им разрешения. Например, файл C:\Temp\temp.txt с явным разрешением записи, установленным для определенного пользователя, не будет иметь этого разрешения на своем скопированном экземпляре.
Скопированный экземпляр получит все унаследованные разрешения, применимые для его нового пути. Например, любые унаследованные разрешения для C:\Temp будут по-прежнему применяться, когда temp.txt копируется как temp2.txt.
Таким образом, наиболее близким приближением к ответу на ваш вопрос будет то, что файл будет иметь «разрешения для скопированного файла».