Доступ - как запретить удаление папки
-
megabyte1
Доступ - как запретить удаление папки
как запретить удаление папки? но внутри папки оставить разрешённым удаление подпапок.
почему я ставлю на папку разрешения в "безопасности" - запретить удаление, "всем", "только для этой папки" (а не для подпапок и файлов), а от администратора - удалить могу?
у "система" и "администраторы" - полный доступ ("для этой папки, подпапок и файлов"), но "элементы запрета имеют более высокий приоритет, чем элементы разрешения".
почему я ставлю на папку разрешения в "безопасности" - запретить удаление, "всем", "только для этой папки" (а не для подпапок и файлов), а от администратора - удалить могу?
у "система" и "администраторы" - полный доступ ("для этой папки, подпапок и файлов"), но "элементы запрета имеют более высокий приоритет, чем элементы разрешения".
-
megabyte1
Re: Доступ - как запретить удаление папки
на самом деле, не так, а так:
Цитата:
Windows NT supports a hidden permission called File Delete Child (FDC) on NTFS volumes. Users who have full control permission on a volume or directory also have the FDC permission. This permission allows a user to delete files at the root level of the directory where they have full control, even if they do not have any permissions on the specific file itself.
Цитата:
I have found another difference.
Symbolic Link - Link's permissions only affect delete/rename operations on the link itself, read/write access (to the target) is governed by the target's permissions
Junction - Junction's permissions affect enumeration, revoking permissions on the junction will deny file listing through that junction, even if the target folder has more permissive ACLs
вместо junction - делаем symlink, запретить доступ, "Все", "Полный доступ", "Для этой папки, её подпапок и файлов", а потом меняем владельца на non-admin, и non-user
а теперь - повторить, только с обычной папкой.
https://mskb.pkisolutions.com/kb/152763
Цитата:
Windows NT supports a hidden permission called File Delete Child (FDC) on NTFS volumes. Users who have full control permission on a volume or directory also have the FDC permission. This permission allows a user to delete files at the root level of the directory where they have full control, even if they do not have any permissions on the specific file itself.
Цитата:
I have found another difference.
Symbolic Link - Link's permissions only affect delete/rename operations on the link itself, read/write access (to the target) is governed by the target's permissions
Junction - Junction's permissions affect enumeration, revoking permissions on the junction will deny file listing through that junction, even if the target folder has more permissive ACLs
вместо junction - делаем symlink, запретить доступ, "Все", "Полный доступ", "Для этой папки, её подпапок и файлов", а потом меняем владельца на non-admin, и non-user
а теперь - повторить, только с обычной папкой.
-
megabyte1
Re: Доступ - как запретить удаление папки
Владельца смените на соответствующей вкладке. Не уверен, правда, что тогда останется доступ к содержимому папки.
-
bredych
Re: Доступ - как запретить удаление папки
Цитата megabyte1:
владельца менял на администраторы, система, и обратно на пользователя.
на другого пользователя. НЕ себя.
владельца менял на администраторы, система, и обратно на пользователя.
Доступ - как запретить удаление папки
на другого пользователя. НЕ себя.
-
bredych
-
megabyte1
-
megabyte1
Re: Доступ - как запретить удаление папки
Пощупал сейчас всю эту тему более детально... Короче, неудобный это вариант, забейте на него. Сделать папку неудаляемой можно только при условии, что и объекты внутри нее будут неудаляемыми. В итоге вам придется либо вручную каждые N месяцев снимать запрет и чистить мусор, либо смириться с бесконечным ростом папки.
Если так интересно, то все упирается в галочку "Содержание папки / чтение данных". Если ее снять, то удалить папку нельзя будет. Но и доступа внутрь тогда не будет. Как только мы эту галочку обратно ставим, доступ внутрь папки снова появляется - и вместе с доступом появляется возможность удалить папку. Что очень странно, поскольку разрешение на чтение содержимого объекта не должно приводить к возможности удаления этого самого объекта. А оно приводит. Вывод: баг.
Если так интересно, то все упирается в галочку "Содержание папки / чтение данных". Если ее снять, то удалить папку нельзя будет. Но и доступа внутрь тогда не будет. Как только мы эту галочку обратно ставим, доступ внутрь папки снова появляется - и вместе с доступом появляется возможность удалить папку. Что очень странно, поскольку разрешение на чтение содержимого объекта не должно приводить к возможности удаления этого самого объекта. А оно приводит. Вывод: баг.
-
megabyte1
Re: Доступ - как запретить удаление папки
спас.
хотя если внутрь положить одну "неудаляемую папку", и запретить ей полный доступ, тогда не удаляется.
но если запретить "чтение/запись разрешений", и "смену владельца", тогда, получается, сам не отменишь.
и он может выдавать ошибки на установку разрешений, но всё равно изменяется.
кто может отменить разрешения, если всем запрещено?
а если сделать не с папкой, а с junction, то не работает.
в принципе, и не важно, но пригодится.
если интересно, то дело было не так, а так:
Цитата:
If you need to reclaim this space, your safest bet is to avoid "deleting" anything, but to instead, move this folder and all it's files.
Once moved, in order to "link" the old mount point/location (in most cases C:\ProgramData\Package Cache\), you simply create a directory junction to it.
Цитата:
Did the trick with moving to another drive and making a junction. Running VS2015 SP3 installer today, the installer caused the junction to devolve to a normal directory (possibly when uninstalling an older version of some component, it recursed through "empty" parent directories removing them -- there are known problems with junctions and naive empty directory tests). So it placed new components in C:\ProgramData\Package Cache and then failed to find items in the new location where the junction formerly pointed. Just a warning to future readers the junction may need to be re-established.
Цитата:
As a more permanent fix, use NTFS permissions and deny "delete" permission on the junction itself.
но это не работает
хотя если внутрь положить одну "неудаляемую папку", и запретить ей полный доступ, тогда не удаляется.
но если запретить "чтение/запись разрешений", и "смену владельца", тогда, получается, сам не отменишь.
и он может выдавать ошибки на установку разрешений, но всё равно изменяется.
кто может отменить разрешения, если всем запрещено?
а если сделать не с папкой, а с junction, то не работает.
в принципе, и не важно, но пригодится.
если интересно, то дело было не так, а так:
Цитата:
If you need to reclaim this space, your safest bet is to avoid "deleting" anything, but to instead, move this folder and all it's files.
Once moved, in order to "link" the old mount point/location (in most cases C:\ProgramData\Package Cache\), you simply create a directory junction to it.
Цитата:
Did the trick with moving to another drive and making a junction. Running VS2015 SP3 installer today, the installer caused the junction to devolve to a normal directory (possibly when uninstalling an older version of some component, it recursed through "empty" parent directories removing them -- there are known problems with junctions and naive empty directory tests). So it placed new components in C:\ProgramData\Package Cache and then failed to find items in the new location where the junction formerly pointed. Just a warning to future readers the junction may need to be re-established.
Цитата:
As a more permanent fix, use NTFS permissions and deny "delete" permission on the junction itself.
но это не работает