Перечислите права доступа папки пользователя

Должны повторить то, что сказал Lee: nagios и кактусы являются, по моему скромному мнению, двумя самыми известными решениями по контролю с открытым исходным кодом, которые могут масштабироваться от основных проверок ping некоторых к контролю полного ресурса тысяч хостов. Оба - легкое к носителю усилие настроить (в зависимости от среды и/или соответствующего опыта), хотя что-то для учета - то, что nagios легко не реализует симпатичное построение графика, в то время как кактусы - все о графиках.

Тем не менее Ваше требование для работы поля Windows AFAIK устраняет nagios из выполнения. кактусы являются относительно простым в использовании инструментом с некоторыми просто развертываемыми основными проверками, уже предоставленными, поскольку часть стандартной установки обрабатывает по шаблону, таким образом, единственная кривая обучения будет конкретным расположением, синтаксисом и зависимостями объекта - как имеет место с любым новым инструментом этого вида.

Удачи:

http://www.cacti.net/download_cacti.php

13
задан 17 August 2010 в 12:21
3 ответа

Я нашел решение своего собственного вопроса. Это, я верю, очень простой и чистый. Только необходимо установить subinacl и выполнить одну строку от командной строки.

Можно загрузить subinacl здесь. Хотя это официально поддерживается только на Windows 2000, Windows XP и Windows Server 2003, это должно работать над Windows Vista, Windows Server 2008 и Windows 7 также.

Затем, Вы выполняете следование из командной строки:

subinacl /testmode /noverbose /outputlog=c:\TEXTFILENAME.TXT /subdirectories=directoriesonly X:\*.* /findsid=DOMAIN\username

Где X: диск, который Вы сканируете, и имя пользователя является пользователем, полномочия которого требуется перечислить. Сканирование может занять время, и Вы получаете результаты в TEXTFILENAME.TXT.

При использовании переключателя/noverbose, Вы получаете компактный список прав доступа - в основном Вы видите, к каким каталогам у пользователя есть доступ (с масками доступа и некоторым другим материалом, который мог бы иногда пригождаться).

Я использовал OpenOffice Calc для импорта списка и затем применил Пользовательский Фильтр и фильтровал только для тех строк, запускающихся с +FILE. Эти строки содержат каталоги, к которым у пользователя есть доступ. Это - то, как с помощью простых инструментов Вы заканчиваете только с релевантной информацией.

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

3
ответ дан 2 December 2019 в 21:23

Вы можете использовать PowerShell без необходимости загружать что-либо еще. Это будет работать с v2.0 и более поздними версиями:

$ReferenceAccountName = 'DOMAIN\Username'
[string[]]$SearchDirectories = @('X:\SomeDirectory', 'F:\AnotherDirectory')

foreach ($RootDir in $SearchDirectories) {
    $DirACL = Get-Acl -Path $RootDir
    foreach ($ACL in $DirACL.Access){
        if ($ACL.IdentityReference -like $ReferenceAccountName){
            Write-Output $RootDir
        }
    }
    foreach ($Directory in (Get-ChildItem -Path $RootDir -Recurse | `
                            Where-Object -FilterScript {$_.Attributes `
                            -contains 'Directory'})){
        $DirACL = Get-Acl -Path $Directory.FullName
        foreach ($ACL in $DirACL.Access){
            if ($ACL.IdentityReference -like $ReferenceAccountName){
                Write-Output $Directory.FullName
            }
        }
    }
}

Это не так чисто, как то, что доступно в PowerShell v3 и более поздних версиях, но это будет работать. Будет выведен список найденных каталогов в строковом формате.

Вы можете легко вывести их как объекты и продолжить работу с ними (экспортировать их в файл CSV, удалять записи по мере их нахождения, обновлять заявку с помощью информация ... и т. д.), манипулируя входным объектом вызовов Write-Output.

6
ответ дан 2 December 2019 в 21:23

Похоже, это помогает (возможно, с оговоркой) найти все папки, к которым у пользователя someuser есть доступ, в этом примере на диске C, с помощью встроенной команды Windows icacls:

icacls c:\*. /findsid someuser /t /c /l

/ t необходим, чтобы указать ему рекурсивные каталоги. Параметр / c необходим, чтобы он продолжал работать, даже если обнаружил ошибки. / L заставляет его работать с символическими ссылками (если есть). (Последняя буква L, и эти флаги могут быть в верхнем или нижнем регистре.)

*. будет распознаваться старожилами DOS как способ сказать «ищите каталоги, а не файлы». Конечно, если вы хотите найти файлы, а не папки,измените его на *. * , и, конечно, вы можете указать его на любой диск или запустить его из любой папки, не указав путь к диску / папке и разрешив поиск только относительно этой папки.

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

И я подтвердил, что он работает в Windows Server 2012, 2008 и Windows 7, поэтому я подозреваю, что он также будет работать в Server 2003, Windows 8 и т. д.

В результирующем списке будут папки, указанные строка за строкой, например:

SID Found: c: \ somedir \ somesubdir.

Обратите внимание, что если вы запустите это как пользователь, который сам не имеет прав доступа к некоторым просматриваемым каталогам, вы будете получать ошибки, чередующиеся в результатах, например:

c: \ Информация о системном томе: Доступ запрещен.

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

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

Теперь, если вы хотели скрыть эти ошибки, вы не сможете использовать команду find для передачи по конвейеру только тех результатов, которые ДЕЙСТВИТЕЛЬНО успешны (те, которые ДЕЙСТВИТЕЛЬНО относятся к «SID found»), потому что ошибки НЕ будут быть отфильтрованы конвейером к команде find. Вместо этого, если вы хотите удалить все ошибки, вам нужно использовать довольно непонятный прием перенаправления потока ошибок (stderr) в «битовое ведро» с помощью 2> nul: . Таким образом, приведенный выше пример будет выглядеть следующим образом:

icacls c:\*. /findsid someuser /t /c /l 2>nul:

Просто будьте осторожны, что некоторые из папок, которые генерируют такие ошибки, ошибки которых теперь скрыты, вполне могут быть папками, к которым "someuser" ДЕЙСТВИТЕЛЬНО имеет доступ, но к которым у ВАС нет. Так что вы можете дважды подумать, чтобы просто игнорировать эти ошибки. но если вы хотите, вы можете это сделать.

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

13
ответ дан 2 December 2019 в 21:23

Теги

Похожие вопросы