PDA

Показать полную графическую версию : как запретить удаление папки


megabyte1
24-03-2023, 23:02
как запретить удаление папки? но внутри папки оставить разрешённым удаление подпапок.
почему я ставлю на папку разрешения в "безопасности" - запретить удаление, "всем", "только для этой папки" (а не для подпапок и файлов), а от администратора - удалить могу?
у "система" и "администраторы" - полный доступ ("для этой папки, подпапок и файлов"), но "элементы запрета имеют более высокий приоритет, чем элементы разрешения".

Avatar-Lion
24-03-2023, 23:11
Владельца смените на соответствующей вкладке. Не уверен, правда, что тогда останется доступ к содержимому папки.

megabyte1
24-03-2023, 23:22
владельца менял на администраторы, система, и обратно на пользователя.

http://i.imgur.com/2ddi9qLl.png (https://imgur.com/2ddi9qL)

Avatar-Lion
24-03-2023, 23:57
Глянул сейчас у себя... На пустых папках запрет на удаление не работает, положите внутрь что-нибудь, тогда система будет блокировать удаление папки.

bredych
25-03-2023, 01:05
владельца менял на администраторы, система, и обратно на пользователя. »
на другого пользователя. НЕ себя.

megabyte1
25-03-2023, 01:44
непустая папка - тоже не работает.
и на другом ПК - тоже.

Avatar-Lion
25-03-2023, 15:23
Пощупал сейчас всю эту тему более детально... Короче, неудобный это вариант, забейте на него. Сделать папку неудаляемой можно только при условии, что и объекты внутри нее будут неудаляемыми. В итоге вам придется либо вручную каждые N месяцев снимать запрет и чистить мусор, либо смириться с бесконечным ростом папки.

Если так интересно, то все упирается в галочку "Содержание папки / чтение данных". Если ее снять, то удалить папку нельзя будет. Но и доступа внутрь тогда не будет. Как только мы эту галочку обратно ставим, доступ внутрь папки снова появляется - и вместе с доступом появляется возможность удалить папку. Что очень странно, поскольку разрешение на чтение содержимого объекта не должно приводить к возможности удаления этого самого объекта. А оно приводит. Вывод: баг.

megabyte1
26-03-2023, 08:36
спас.
хотя если внутрь положить одну "неудаляемую папку", и запретить ей полный доступ, тогда не удаляется.
но если запретить "чтение/запись разрешений", и "смену владельца", тогда, получается, сам не отменишь.
и он может выдавать ошибки на установку разрешений, но всё равно изменяется.
кто может отменить разрешения, если всем запрещено?

а если сделать не с папкой, а с 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.
но это не работает

DJ Mogarych
26-03-2023, 23:28
https://superuser.com/questions/1696204/how-to-prevent-a-folder-to-be-deleted-in-windows
https://alternativeto.net/software/folder-protect/

Ну и вообще https://www.google.com/search?q=protect+folder+from+deletion

megabyte1
27-03-2023, 01:55
почему тогда сразу не так?
https://www.google.com/search?q=did+not+read+but+i+condemn

megabyte1
27-03-2023, 15:05
на самом деле, не так, а так:
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

а теперь - повторить, только с обычной папкой.

bredych
28-03-2023, 08:35
"но если запретить "чтение/запись разрешений", и "смену владельца", тогда, получается, сам не отменишь."
на юзера, которым не будешь пользоваться, и который для верности дисейблнут, чтоб не мешал.
Будет надо - включишь его.

Avatar-Lion
28-03-2023, 13:13
Вообще, мне видится довольно-таки бессмысленным запрет на удаление папки, если при этом можно будет удалять любые элементы внутри нее. :)

bredych
28-03-2023, 16:40
хм.. а еще вариант - "неудаляемая затычка" внутри..
файл нулевого размера, все права и владение которым на левом юзере - и все, непустую папку не убьет..
а если еще и листинг прав запретить...)))

а еще можно издевательство типа батника с циклом "if not exist, mkdir", повешенного на событие логона. И пусть удаляет хоть до муркиного заговения..




© OSzone.net 2001-2012