Gate NTFS share ensure behind config

This commit is contained in:
Meik
2026-03-29 23:16:56 +02:00
parent ae65f8e758
commit 17bcf9d4fb
2 changed files with 15 additions and 3 deletions

View File

@@ -893,16 +893,24 @@ namespace C4IT.LIAM
IEnumerable<string> ownerSids, IEnumerable<string> ownerSids,
IEnumerable<string> readerSids, IEnumerable<string> readerSids,
IEnumerable<string> writerSids, IEnumerable<string> writerSids,
bool allowSharePathEnsure = false,
bool ensureTraverseGroups = false, bool ensureTraverseGroups = false,
bool whatIf = false) bool whatIf = false)
{ {
var classification = ClassifyPath(folderPath); var classification = ClassifyPath(folderPath);
if (!IsSupportedPermissionManagedPathKind(classification, eNtfsPathKind.Folder, eNtfsPathKind.ClassicShare, eNtfsPathKind.DfsLink)) var allowShareKinds = allowSharePathEnsure;
if (!IsSupportedPermissionManagedPathKind(
classification,
allowShareKinds
? new[] { eNtfsPathKind.Folder, eNtfsPathKind.ClassicShare, eNtfsPathKind.DfsLink }
: new[] { eNtfsPathKind.Folder }))
{ {
return Task.FromResult(new ResultToken(System.Reflection.MethodBase.GetCurrentMethod().ToString()) return Task.FromResult(new ResultToken(System.Reflection.MethodBase.GetCurrentMethod().ToString())
{ {
resultErrorId = 30008, resultErrorId = 30008,
resultMessage = $"NTFS permission ensure is only supported for folder and share paths. DFS namespaces and server roots are skipped: {folderPath}" resultMessage = allowShareKinds
? $"NTFS permission ensure is only supported for folder and share paths. DFS namespaces and server roots are skipped: {folderPath}"
: $"NTFS permission ensure is only supported for folder paths unless share support is explicitly enabled. Shares, DFS namespaces and server roots are skipped: {folderPath}"
}); });
} }

View File

@@ -198,12 +198,14 @@ namespace LiamWorkflowActivities
return result; return result;
} }
var allowSharePathEnsure = IsAdditionalConfigurationEnabled(provider, "EnsureNtfsPermissionGroupsForShares");
var token = await ntfsProvider.EnsureMissingPermissionGroupsAsync( var token = await ntfsProvider.EnsureMissingPermissionGroupsAsync(
folderPath, folderPath,
customTags, customTags,
NormalizeIdentifierList(ownerSids), NormalizeIdentifierList(ownerSids),
NormalizeIdentifierList(readerSids), NormalizeIdentifierList(readerSids),
NormalizeIdentifierList(writerSids), NormalizeIdentifierList(writerSids),
allowSharePathEnsure,
ensureTraverseGroups, ensureTraverseGroups,
IsWorkflowWhatIfEnabled(provider)); IsWorkflowWhatIfEnabled(provider));
if (token == null) if (token == null)
@@ -420,8 +422,9 @@ namespace LiamWorkflowActivities
if (!IsAdditionalConfigurationEnabled(provider, "EnsureNtfsPermissionGroups")) if (!IsAdditionalConfigurationEnabled(provider, "EnsureNtfsPermissionGroups"))
return true; return true;
var allowSharePathEnsure = IsAdditionalConfigurationEnabled(provider, "EnsureNtfsPermissionGroupsForShares");
foreach (var ntfsArea in dataAreas foreach (var ntfsArea in dataAreas
.Where(dataArea => dataArea is cLiamNtfsFolder || dataArea is cLiamNtfsShare) .Where(dataArea => dataArea is cLiamNtfsFolder || allowSharePathEnsure && dataArea is cLiamNtfsShare)
.Cast<cLiamNtfsPermissionDataAreaBase>()) .Cast<cLiamNtfsPermissionDataAreaBase>())
{ {
var folderPath = ntfsArea.TechnicalName; var folderPath = ntfsArea.TechnicalName;
@@ -440,6 +443,7 @@ namespace LiamWorkflowActivities
null, null,
null, null,
null, null,
allowSharePathEnsure,
false, false,
simulateOnly); simulateOnly);
if (ensureResult == null) if (ensureResult == null)