Кто-то изменил разрешения на куче машин, используя cacls, которые исправили одну проблему, но создали большую. Я ищу способы исправить это, но, похоже, не могу вернуть его к тому, что было.

Я скопировал с помощью тестовой машины, и результат ниже. Я использовал subinacl, чтобы получить вывод.

Изменение сделано с помощью:

ECHO Y|CACLS C:\APPSYS      /t /e /p User1:F

Причина, по которой были изменены разрешения, заключалась в том, что некоторые файлы были добавлены кем-то, вошедшим в систему как администратор, и пользователям также требовался полный доступ. Я все еще хотел бы знать безопасный способ добавить usergroup1 к этим файлам, не мешая другим, которые не нуждаются в изменении. Это не статический список файлов, некоторые машины имеют только 1 или 2 файла, другие имеют 20-50 файлов, для которых user1 требует полного контроля, но не имеет разрешений.

Перед запуском ECHO "Y | CACLS C:\APPSYS /t /e /p User1:F"

====================
+File C:\APPSYS\BIN
====================
/control=0x400
/owner             =PC1125230\ORGUSER
/primary group     =PC1125230\none
/audit ace count   =0
/perm. ace count   =8
/pace =PC1125230\USERGROUP1  Type=0x0 Flags=0x13 AccessMask=0x1f01ff
/pace =builtin\administrators  Type=0x0 Flags=0x13 AccessMask=0x1f01ff
/pace =system  Type=0x0 Flags=0x13 AccessMask=0x1f01ff
/pace =PC1125230\ORGUSER  Type=0x0 Flags=0x10 AccessMask=0x1f01ff
/pace =creator owner  Type=0x0 Flags=0x1b AccessMask=0x10000000
/pace =builtin\users  Type=0x0 Flags=0x13 AccessMask=0x1200a9
/pace =builtin\users  Type=0x0 Flags=0x12 AccessMask=0x4
/pace =builtin\users  Type=0x0 Flags=0x12 AccessMask=0x2


=============================
+File C:\APPSYS\ERROR.LOG
=============================
/control=0x0
/owner             =PC1125230\ORGUSER
/primary group     =PC1125230\none
/audit ace count   =0
/perm. ace count   =0

После запуска ECHO "Y | CACLS C:\APPSYS /t /e /p User1:F"

====================
+File C:\APPSYS\BIN
====================
/control=0x0
/owner             =PC1125230\ORGUSER
/primary group     =PC1125230\none
/audit ace count   =0
/perm. ace count   =9
/pace =PC1125230\User1  Type=0x0 Flags=0x3 AccessMask=0x1f01ff
/pace =PC1125230\USERGROUP1  Type=0x0 Flags=0x13 AccessMask=0x1f01ff
/pace =builtin\administrators  Type=0x0 Flags=0x13 AccessMask=0x1f01ff
/pace =system  Type=0x0 Flags=0x13 AccessMask=0x1f01ff
/pace =PC1125230\ORGUSER  Type=0x0 Flags=0x10 AccessMask=0x1f01ff
/pace =creator owner  Type=0x0 Flags=0x1b AccessMask=0x10000000
/pace =builtin\users  Type=0x0 Flags=0x13 AccessMask=0x1200a9
/pace =builtin\users  Type=0x0 Flags=0x12 AccessMask=0x4
/pace =builtin\users  Type=0x0 Flags=0x12 AccessMask=0x2


=============================
+File C:\APPSYS\ERROR.LOG
=============================
/control=0x0
/owner             =PC1125230\ORGUSER
/primary group     =PC1125230\none
/audit ace count   =0
/perm. ace count   =1
/pace =PC1125230\User1  Type=0x0 Flags=0x0 AccessMask=0x1f01ff

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

Я использовал subinacl для предоставления группам пользователей, которым, например, запрещен доступ к файлу ERROR.LOG, и ко всем файлам и папкам в папке APPSYS, потому что было много проблем с сбоями приложений. Это решило эту проблему, но я беспокоюсь о продолжительном эффекте изменений, сделанных по сравнению с исходными настройками.

Прежде чем использовать метод subinacl для предоставления разрешений, я попытался удалить разрешение User1, но снова ERROR.LOG не возвращается к тому, что было разрешением. Я пробовал подавлять также с тем же результатом без разницы. Я попытался с помощью тестового устройства сделать резервную копию перед запуском команды cacls, а затем восстановить резервную копию с помощью subinacl, но она не восстановилась должным образом из того, что я вижу, "/pace = builtin\users Type = 0x0 Flags = 0x12 AccessMask = 0x4 "был удален из ACL.

У меня нет опыта работы с дескрипторами безопасности, так что извините, если это до боли очевидно или я оставил детали. Я провел последние 5 дней и ночей, читая, что я могу выяснить, что пошло не так и как исправить это с помощью пакетного процесса.

Я ограничен базовыми сценариями (windows xp pro) vb, я могу использовать инструменты из набора ресурсов и, в некоторой степени, сторонние утилиты, но опять-таки придется использовать пакетные сценарии.

1 ответ1

0

Мне удалось найти решение (забыл опубликовать его здесь).

Использование xcacls.vbs со следующими используемыми аргументами:

Filename = "c:\APPSYS\"
/F (All Files under current directory)
/S (All Sub Directories under current directory)
/T (Traverse Directories)
/E (Edit ACL leaving other users intact)
/I (Inheritance)
    ENABLE

Это восстановило наследование файлов в папке обратно к тому, что они были, и для файла, который не имел ACE (установленный, чтобы позволить всем), они унаследовали требуемые группы пользователей.

Надеюсь, что это поможет любому, кто попал в ту же позицию.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .