Несанкционированное изменение разрешений на общий файловый ресурс может заблокировать других пользователей. Узнайте, как автоматизировать отчет, показывающий разрешения на сервере, чтобы быстро находить эти проблемы.
Когда вам нужно найти виновника проблемы с правами доступа к файловому серверу Windows , попробуйте PowerShell, чтобы выступить в роли вашего детектива, чтобы раскрыть дело.
Если многие пользователи внезапно теряют доступ к папкам в общем файловом ресурсе, обычно это проблема с разрешениями файлового сервера Windows. Но может потребоваться некоторая работа, чтобы выяснить, кто внес несанкционированное изменение. Ручная проверка всего файлового сервера с большим количеством файлов и папок может быть утомительной задачей. С помощью PowerShell вы можете использовать автоматизацию для создания отчета об аудите, чтобы отслеживать папки с проблемами прав, которые вы затем можете решить.
Как работают разрешения на файловом сервере Windows
Хотя для систем Windows доступно несколько файловых систем , файловая система новой технологии (NTFS) сегодня используется наиболее широко.
Среди особенностей NTFS — возможность ограничивать доступ с помощью списков управления доступом ( ACL ), которые каталогизируют каждую запись управления доступом (ACE), содержащую информацию об учетной записи пользователя или группы и их правах доступа к объекту, например файлу или файлу. папка. В документации Microsoft часто используются синонимы Windows ACL и разрешений NTFS .
В зависимости от потребностей организации администратор настраивает разрешения NTFS для управления уровнем доступа к папке, от прав полного доступа до отсутствия доступа. Проблемы могут возникнуть, когда пользователь с более высоким уровнем доступа, например руководитель уровня C, изменяет разрешения для папки Windows Server, которые не позволяют пользователям с более низким уровнем доступа получить доступ к своим файлам в этой папке или подпапке под ней.
Прежде чем мы углубимся в то, как создать аудит разрешений файлового сервера Windows, вы должны понять два метода получения информации о доступе из папки. В этой статье основное внимание будет уделено PowerShell 7 ; однако, если не указано иное, команды будут работать так же в Windows PowerShell.
Найдите разрешения файлового сервера Windows с помощью командлета Get-Acl.
Встроенный командлет Get-Acl получает дескриптор безопасности, хранящийся в объекте, которым в данном случае является папка в общем файловом ресурсе Windows. Дескриптор безопасности содержит информацию, такую как владелец объекта и списки управления доступом, которые показывают пользователей и группы, которые могут получить доступ к папке. Следующая команда покажет права доступа к папке:
Get-Acl .\Marketing\
Вывод дает путь к папке, владельца папки и список доступа к папке.
Для получения дополнительных сведений, таких как весь список доступа, добавьте в команду свойство Access :
(Get-Acl .\Marketing\).Access
Найдите разрешения файлового сервера Windows с помощью командлета Get-NTFSAccess.
Другой способ просмотра списков ACL папки — с помощью командлета Get-NTFSAccess в модуле NTFSSecurity. Синтаксис этого командлета аналогичен Get-Acl :
Get-NTFSAccess .\Marketing\
Этот командлет создает выходные данные, которые легче понять при оценке разрешений NTFS.
В таблице показан атрибут IsInherited , определяющий папки с разрешениями, отличными от разрешений родительской папки.
Лучшая функция Get-NTFSAccess заключается в том, что он проверяет весь файловый ресурс с помощью одной строки PowerShell. Вам нужно всего несколько дополнительных строк кода, чтобы преобразовать его в презентабельный отчет.
Для начала давайте рассмотрим, как рекурсивно получить разрешения для папки с помощью Get-ChildItem, чтобы найти все папки, а затем передать вывод в Get-NTFSAccess :
Get-ChildItem-Directory-Recurse | Get-NTFSAccess
На большом файловом ресурсе создание вывода консоли может занять довольно много времени. Будьте готовы отменить его, нажав CTRL+C, или сначала протестируйте его в папке меньшего размера, чтобы убедиться, что он работает должным образом.
На снимке экрана показаны первые несколько строк из тестовой среды. Все разрешения вложенной папки Events наследуются, а атрибут InheritedFrom ссылается на корневую папку Marketing . Однако это не находит разрешения, которые не унаследованы. Для этого используйте командлет Where-Object и ищите разрешения, которые не унаследованы, с помощью восклицательного знака, который является оператором Not:
Get-ChildItem-Directory-Recurse | Get-NTFSAccess | Где-Объект {!($_.IsInherited)}
Это также может занять много времени, поэтому будьте готовы подождать, если вы запустите его в папке с большим количеством файлов. В тестовой среде только одна папка имеет права, отличные от корневой папки.
Вывод показывает, что у пользователя по имени John Doe есть разрешения на доступ к папке «Файлы» , а другие унаследованные разрешения по-прежнему включены. Если бы пользователь отключил наследование для этой папки, отчет показал бы что-то другое.
Как отформатировать вывод разрешений общего доступа к файлам Windows в отчет
Теперь, когда мы смогли подготовить данные, мы можем перейти к представлению отчета, чтобы получить выходные данные в удобочитаемой форме , чтобы поделиться с лицом, принимающим решения в отделе. По моему опыту, отчет обычно направляется владельцам каждой общей папки и менеджеру по ИТ. Для простоты мы экспортируем отчет в виде электронной таблицы Excel.
Есть два варианта: либо запустить команду PowerShell из одной строки, которая будет большой, либо присвоить предыдущий вывод переменной, а затем вывести переменную в электронную таблицу. Поскольку сбор всех разрешений для большого или сложного общего файлового ресурса может занять много времени, наилучшим способом является маршрут назначения переменных. Еще одно преимущество заключается в том, что вы можете проверить данные перед форматированием отчета о разрешениях файлового сервера Windows.
Как использовать модуль ImportExcel
Вы будете использовать командлет Export-Excel в модуле ImportExcel для создания файла Excel. Он работает как в Windows PowerShell, так и в PowerShell 7 . Если в вашей системе его нет, установите его с помощью следующей команды:
Install-Module ImportExcel
Следующий код PowerShell указывает предпочтительные параметры для Export-Excel , чтобы поместить данные в таблицу и автоматически изменить размер столбцов:
$notInherited = Get-ChildItem -Directory -Recurse | Get-NTFSAccess | Где-Объект {!($_.IsInherited)}
$ не унаследовано | Export-Excel C:\Path\To\Report.xlsx -TableName Permissions -AutoSize
На этом снимке экрана показан образец электронной таблицы, автоматически сгенерированной PowerShell.
Как настроить отчет о разрешениях общего доступа к файлам Windows
Чтобы исключить свойства, вы используете Select-Object для внесения изменений в отчет. Замените предыдущую команду Export-Excel приведенной ниже:
$ не унаследовано | Select-Object-ExcludeProperty
AccountType, InheritanceEnabled, InheritedFrom, IsInherited | Экспорт-
Excel C:\temp\Report.xlsx -TableName Permissions -AutoSize
Когда вы отправляете отчет, напомните своей аудитории о необходимости фильтрации по столбцу FullName . Часто файловый сервер будет иметь несколько папок с вариациями общего термина, такого как Files , поэтому эта фильтрация будет поддерживать более упорядоченную сортировку папок.