Перейти к содержимому

Обслуживание папки обмена

17.04.2019

Эта заметка, по-видимому, завершающая о работе с папкой обмена на файловом сервере. Ранее был рассмотрен способ повысить ее безопасность (см. здесь и здесь). Следует отметить, что наличие папки обмена в инфраструктуре — зло, хотя и не абсолютное, и лучший выход — обойтись без нее вообще. Доступ ко всем сетевым папкам должен быть разграничен, и в сети не должно существовать папок с  разрешением на запись для всех.

Однако независимо от того, применяются ли для папки обмена какие-либо средства обеспечения безопасности или, по-простому, создана обыкновенная папка, следует предусмотреть очистку папки обмена на регулярной основе. В противном случае папка будет неограниченно разрастаться, не говоря уже о том, что любой желающий сможет поискать в ней конфиденциальную информацию. Простейший вариант, и он был рассмотрен ранее — полностью очищать папку в конце рабочего дня. Сценарий, представленный ниже, позволяет сохранять информацию в течение заданного времени (в примере — 24 часа) независимо от того, в начале или в конце рабочего дня информация была размещена в папке обмена. Путь к папке обмена следует указать в переменной $SrcRoot. Он может быть локальным или сетевым в зависимости от того, будет ли запускаться сценарий на самом файловом сервере или на другом, например, на управляющем сервере. При желании сценарий можно дополнить, передавая путь к папке и срок хранения в ней информации в качестве параметров.

Function Remove-EmptyFolder {

    Param([string]$Path)

    $colDirs = Get-ChildItem -Path $Path -Directory

    If ($colDirs.count -gt 0) {
        foreach ($oDir in $colDirs) {
           $SubfolderPath = $Path + "\" + $oDir.Name
           Remove-EmptyFolder -Path $SubfolderPath
        }
    }
    If ($Path -ne $SrcRoot) {
        Get-Item -Path $Path | Where-Object {$_.GetFiles().Count -eq 0} | Remove-Item
    }
}

$SrcRoot = "\\cloudlab.com\org\tmp\tmp"

$dt = (Get-Date).AddDays(-1)

# Удаляем файлы, созданые/скопированные более 1 дня назад
Get-ChildItem -Path $SrcRoot -Recurse -File | where-object {$_.CreationTime -lt $dt} | Remove-Item

# Рекурсивно удаляем пустые папки
Remove-EmptyFolder -Path $SrcRoot

Выборка файлов, подлежащих удалению, происходит по дате их создания. Дата создания — атрибут, который всегда изменяется при копировании (но не перемещении) файлов средствами Проводника. Вообще, выборка по условию с последующим удалением — дело нехитрое, и на PowerShell выполняется в одной строке. Более сложным является удаление пустых папок, которые могут быть вложенными. Здесь требуется применить рекурсивный вызов процедуры.

Сценарий следует запускать по расписанию, причем интервал между запусками должен быть существенно короче, чем время хранения файлов в папке обмена. Для срока в 1 день разумно запускать сценарий с периодичностью 1 час. На томе, содержащем папку обмена, не должны быть включены теневые копии. Это как раз тот случай, когда средства обеспечения сохранности информации не повышают, а как раз снижают общий уровень информационной безопасности. Впрочем, он и так снижается, если у вас существует папка обмена.

 

Реклама
Добавить комментарий

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s

%d такие блоггеры, как: