Question Supprimer les SID orphelins des droits des dossiers

Plus d'informations
il y a 2 ans 9 mois - il y a 2 ans 9 mois #31777 par SaMmMy
Iaroana à tou(te)s,

J'essaie d'enlever les comptes orphelins des droits sur un (ou des) dossier(s) via une console PowerShell lancée en Admin.

Lorsque je fais :
dir -Recurse -Path E:\Datas\GAZ\ | Get-NTFSOrphanedAccess | Select-Object {($_.Account,$_.FullName,$_.InheritanceEnabled)}
J'obtiens :
($_.Account,$_.FullName,$_.InheritanceEnabled)
----------------------------------------------
{S-1-5-21-912009189-124610182-620655208-5332, E:\Datas\GAZ\Suivi Bouteilles Gaz SAV.xlsx, True}

Mais lorsque je fais :
dir -Recurse -Path E:\Datas\Gse\ | Get-NTFSOrphanedAccess | Remove-NTFSAccess -Account {($_.Account)} -Path {($_.FullName)} -AccessRights Modify
Le compte SID est toujours présent,
dir -Recurse -Path E:\Datas\GAZ\ | Get-NTFSOrphanedAccess | Select-Object {($_.Account,$_.FullName,$_.InheritanceEnabled)}
J'obtiens toujours :
($_.Account,$_.FullName,$_.InheritanceEnabled)
----------------------------------------------
{S-1-5-21-912009189-124610182-620655208-5332, E:\Datas\GAZ\Suivi Bouteilles Gaz SAV.xlsx, True}

Ma question est : qu'ai-je loupé pour que les droits ne soient pas modifiés ?

Merci à vous…
Dernière édition: il y a 2 ans 9 mois par SaMmMy.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 ans 9 mois #31778 par SaMmMy
Comme il y a plusieurs façons de procéder en informatique, en fouinant sur la toile, j'ai trouvé ces commandes pour faire des tests à la main :
$acl = Get-Acl "E:\Datas\GAZ\Suivi Bouteilles Gaz SAV.xlsx"
$usersid = New-Object System.Security.Principal.SecurityIdentifier ("S-1-5-21-912009189-124610182-620655208-5332")
$acl.PurgeAccessRules($usersid)
$acl | Set-Acl "E:\Datas\GAZ\Suivi Bouteilles Gaz SAV.xlsx"
Elles ne génèrent aucune erreur mais les droits restent inchangés.
Ça me semblait pourtant simple à faire.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 ans 3 mois #32534 par Bruce
Bonjour,

Je voulais faire la meme chose depuis longtemps et j'ai trouvé la solution en m'inspirant de votre post et des recherches sur le web.
Voici mon code, il permet de sélectionner quels SID vous voulez supprimer.

Clear-Host
# Création d'un tableau 
$SID_Orph = @()
# Dossier a scanner
$Path = "\\monserveur\data\public"

$PathFolders = Get-ChildItem -Path $Path -Directory

try
{
    foreach ($folder in $PathFolders) 
    {
        $FullPath = $Path + "\" + $folder.Name
        $acl = Get-Acl -Path $FullPath
        foreach($acc in $acl.access ) 
        { 
            $value = $acc.IdentityReference.Value 
            if($value -match "S-1-5-*") 
            { 
            
                $SID_Orph += New-Object PSObject -Property @{ 
                Chemin = $FullPath
                Valeur = $value}
                Write-Host -ForegroundColor Red -BackgroundColor Yellow "SID orphelin:  $value  - Dossier: $FullPath"
            }
        }
    }
    $selection = $SID_Orph | Out-GridView -Title "Dossiers avec SID oprphelins" -OutputMode Multiple |sort -Property Chemin
    foreach ($sel in $selection) 
    {
        $seldir = $sel.chemin
        $acl = Get-Acl -Path $sel.chemin
        foreach($acc in $acl.access ) 
        { 
            $value = $acc.IdentityReference.Value 
            if($value -match $sel.Valeur) 
            { 
                $ACL.RemoveAccessRule($acc) | Out-Null
                Set-Acl -Path  $sel.chemin -AclObject $acl -ErrorAction Stop
                Write-Host "Suppression SID orphelin:  $value  - Dossier: $seldir"
            }
        }
    }
}
catch
{
    Write-Error $Error
}
Write-Host -ForegroundColor Green -BackgroundColor Black "FIN"

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.103 secondes
Propulsé par Kunena