none
Droits d'accès coupés même pour admin sur FileServer

    Question

  • Bonjour à tous !


    J'ai effectué une belle boulette sur notre serveur de fichiers. J'ai supprimé un peu vite sur le dossier racine d'un partage tous les accès (même "machinelocale\administrateurs" et "domaine\administrateurs" ) puis j'ai cliqué sur "appliquer" machinalement ! :)

    => Résultat : même administrateur du domaine ou administrateur local serveur ne peut plus accéder à l'arborescence.


    Alors oui bien sûr en admin du domaine je peux toujours aller dans les propriété de sécurité => avancé => désigner administrateur en tant que propriétaire et avoir accès au premier dossier.

    Sauf que quand je balance l'ACL à tous les sous dossiers, j'ai une erreur de type "accès refusé".

    Il faudrait que je recrée la sécurité manuellement sur tous les sous dossiers sauf que j'en ai un bon millier ;)


    Bref je me suis dit que si l'opération était possible à la main alors je pouvais l'automatiser avec powershell. Mais non ! ça me refuse l'application des ACLs, même avec le powershell lancé en tant qu'admin !

    Pour info voici le script :

    $FolderToScan = "D:\partage\1er-sousdossier"
    $Owner = New-Object System.Security.Principal.NTAccount("domaine\Administrateur")
    $WriteACE = new-object System.Security.AccessControl.FileSystemAccessRule("domaine\Administrateur","FullControl","ContainerInherit,ObjectInherit","None","Allow")
    $i = 0
    
    $files = Get-ChildItem $FolderToScan -Recurse
    Foreach ($file in $files)
    {
        $i = $i + 1
        write-host $file.FullName
        $acl = Get-Acl $file.FullName
        $acl.SetOwner($Owner)
        $acl.AddAccessRule($WriteACE)
        Set-Acl -path $file.FullName -aclObject $acl
    }
    
    Write-Output "$i Fichiers traités."
    

    Du coup j'ai cette erreur :

    Get-Acl : Tentative d'exécution d'une opération non autorisée.
    Au caractère C:\Batch\RemplacementProprio.ps1:11 : 12
    +     $acl = Get-Acl $file.FullName
    +            ~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [Get-Acl], UnauthorizedAccessException
        + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.GetAclCommand
    
    Exception lors de l'appel de « AddAccessRule » avec « 1 » argument(s) : « Aucun indicateur ne peut être défini.
    Nom du paramètre : inheritanceFlags »
    Au caractère C:\Batch\RemplacementProprio.ps1:17 : 5
    +     $acl.AddAccessRule($WriteACE)
    +     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
        + FullyQualifiedErrorId : ArgumentException
    
    Set-Acl : Tentative d'exécution d'une opération non autorisée.
    Au caractère C:\Batch\RemplacementProprio.ps1:18 : 5
    +     Set-Acl -path $file.FullName -aclObject $acl
    +     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : PermissionDenied: (D:\Donnees\07 -...TILL_EGV14.jpeg:String) [Set-Acl], UnauthorizedAcce
       ssException
        + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.SetAclCommand

    Merci par avance à celle ou celui qui pourra me sortir de cette impasse...

    Bonne journée



    • Modifié shinobitom jeudi 26 octobre 2017 15:21 faute de frappe
    jeudi 26 octobre 2017 15:19

Réponses

  • Utilise TAKEOWN.EXE pour reprendre le contrôle sur le dossier:

    C:\Users\loic>takeown /?
    
    TAKEOWN [/S système] [/U utilisateur [/P mot_de_passe]]]
            /F nom_fichier [/A] [/R [/D invite_de_commandes]]
    
    Description :
        Cet outil permet à un administrateur de récupérer l’accès à un fichier qui
        avait été refusé en réassignant l’appartenance de fichier.
    
    Liste de paramètres :
        /S    système                Spécifie le système distant auquel
                                     se connecter.
    
        /U    [domaine\]utilisateur  Spécifie le contexte utilisateur
                                     sous lequel la commande doit s’exécuter.
    
        /P    [mot_de_passe]         Spécifie le mot de passe du contexte
                                     utilisateur donné.
    
                                     Il est demandé s’il est omis.
    
        /F    nom_fichier            Spécifie le nom de fichier ou le
                                     modèle de nom du répertoire. Un caractère
                                     générique "*" peut être utilisé pour
                                     spécifier le modèle. Autorise
                                     nompartage\nomfichier.
    
        /A                           Donne l’appartenance au groupe
                                     d’administrateurs et non
                                     à l’utilisateur actuel.
    
        /R                           Récursif : force l’outil à traiter tous les
                                     fichiers du répertoire spécifié et tous
                                     ses sous-répertoires.
    
        /D    invite_commandes       Réponse par défaut utilisée
                                     lorsque l’utilisateur actuel ne possède pas
                                     l’autorisation "lister le dossier" sur un
                                     répertoire. Ceci se produit lors du
                                     traitement récursif (/R) sur les
                                     sous-répertoires. Utilisez les valeurs "O"
                                     pour prendre possession ou "N" pour ignorer.
    
        /SKIPSL                      Ne suivez pas les liens symboliques.
                                     Uniquement applicable avec /R.
    
        /?                           Affiche ce message d’aide.
    
        Remarque : 1) Si /A n’est pas spécifié, l’appartenance de fichier
                      sera attribuée à l’utilisateur actuellement connecté.
    
                   2) Les modèles mixtes utilisant « ? » et « * » ne sont
                      pas pris en charge.
    
                   3) /D est utilisé pour supprimer la demande de confirmation.
    
    Exemples :
        TAKEOWN /?
        TAKEOWN /F lostfile
        TAKEOWN /F \\system\share\lostfile /A
        TAKEOWN /F directory /R /D N
        TAKEOWN /F directory /R /A
        TAKEOWN /F *
        TAKEOWN /F C:\Windows\System32\acme.exe
        TAKEOWN /F %windir%\*.txt
        TAKEOWN /S système /F Mon_Partage\Acme*.doc
        TAKEOWN /S système /U utilisateur /F MonPartage\MonBinaire.dll
        TAKEOWN /S système /U domaine\utilisateur /P mot_de_passe
        /F partage\nom_fichier
        TAKEOWN /S système /U utilisateur /P mot_de_passe /F Doc\Report.doc /A
        TAKEOWN /S système /U utilisateur /P mot_de_passe /F Mon_Partage\*
        TAKEOWN /S système /U utilisateur /P mot_de_passe /F Base\Connexion /R
        TAKEOWN /S système /U utilisateur /P mot_de_passe
        /F Mon_Partage\répertoire /R /A


    vendredi 27 octobre 2017 06:06

Toutes les réponses

  • Bonjour Shinobitom,

    Via l'interface graphique, si tu essais de mettre Propriétaire ton compte administrateur domaine, et que tu propage le propriétaire (pas encore les permissions) sur les dossiers enfants, c'est un accès refusé ?

    Sinon, ton outil de sauvegarde ne sait il pas restaurer uniquement les permissions ?

    Cordialement,

    Chris.

    jeudi 26 octobre 2017 21:20
  • Utilise TAKEOWN.EXE pour reprendre le contrôle sur le dossier:

    C:\Users\loic>takeown /?
    
    TAKEOWN [/S système] [/U utilisateur [/P mot_de_passe]]]
            /F nom_fichier [/A] [/R [/D invite_de_commandes]]
    
    Description :
        Cet outil permet à un administrateur de récupérer l’accès à un fichier qui
        avait été refusé en réassignant l’appartenance de fichier.
    
    Liste de paramètres :
        /S    système                Spécifie le système distant auquel
                                     se connecter.
    
        /U    [domaine\]utilisateur  Spécifie le contexte utilisateur
                                     sous lequel la commande doit s’exécuter.
    
        /P    [mot_de_passe]         Spécifie le mot de passe du contexte
                                     utilisateur donné.
    
                                     Il est demandé s’il est omis.
    
        /F    nom_fichier            Spécifie le nom de fichier ou le
                                     modèle de nom du répertoire. Un caractère
                                     générique "*" peut être utilisé pour
                                     spécifier le modèle. Autorise
                                     nompartage\nomfichier.
    
        /A                           Donne l’appartenance au groupe
                                     d’administrateurs et non
                                     à l’utilisateur actuel.
    
        /R                           Récursif : force l’outil à traiter tous les
                                     fichiers du répertoire spécifié et tous
                                     ses sous-répertoires.
    
        /D    invite_commandes       Réponse par défaut utilisée
                                     lorsque l’utilisateur actuel ne possède pas
                                     l’autorisation "lister le dossier" sur un
                                     répertoire. Ceci se produit lors du
                                     traitement récursif (/R) sur les
                                     sous-répertoires. Utilisez les valeurs "O"
                                     pour prendre possession ou "N" pour ignorer.
    
        /SKIPSL                      Ne suivez pas les liens symboliques.
                                     Uniquement applicable avec /R.
    
        /?                           Affiche ce message d’aide.
    
        Remarque : 1) Si /A n’est pas spécifié, l’appartenance de fichier
                      sera attribuée à l’utilisateur actuellement connecté.
    
                   2) Les modèles mixtes utilisant « ? » et « * » ne sont
                      pas pris en charge.
    
                   3) /D est utilisé pour supprimer la demande de confirmation.
    
    Exemples :
        TAKEOWN /?
        TAKEOWN /F lostfile
        TAKEOWN /F \\system\share\lostfile /A
        TAKEOWN /F directory /R /D N
        TAKEOWN /F directory /R /A
        TAKEOWN /F *
        TAKEOWN /F C:\Windows\System32\acme.exe
        TAKEOWN /F %windir%\*.txt
        TAKEOWN /S système /F Mon_Partage\Acme*.doc
        TAKEOWN /S système /U utilisateur /F MonPartage\MonBinaire.dll
        TAKEOWN /S système /U domaine\utilisateur /P mot_de_passe
        /F partage\nom_fichier
        TAKEOWN /S système /U utilisateur /P mot_de_passe /F Doc\Report.doc /A
        TAKEOWN /S système /U utilisateur /P mot_de_passe /F Mon_Partage\*
        TAKEOWN /S système /U utilisateur /P mot_de_passe /F Base\Connexion /R
        TAKEOWN /S système /U utilisateur /P mot_de_passe
        /F Mon_Partage\répertoire /R /A


    vendredi 27 octobre 2017 06:06
  • Bonjour Christophe et Loïc et merci pour vos réponses.

    @Christophe : 

    C'est ça. Via l'interface graphique ça me met un accès refusé.

    Pour l'outil de restauration nous utilions Veeam (environnement VMware). je ne crois pas qu'il va jusque là je vais regarder.

    @Loïc, j'essaye TakeOwn dans la journée je te tiens au jus. Tu peux appliquer une commande sur un répertoire sur lequel tu as aucun accès ? Ce serait magique ;)

    Je tiens au courant.

    vendredi 27 octobre 2017 07:58
  • Takeown permet de reprendre les droits du moment que tu es administrateur local de la ressource qui héberge la donnée. Oui, c'est un bel outils qui a sauvé bien des administrateurs expert en boulettes :)
    samedi 28 octobre 2017 17:24