Script dos "icacls" ou powershell

Résolu/Fermé
litacan - 12 juil. 2022 à 14:23
 litacan - 13 juil. 2022 à 15:24

je dois faire en sorte que sur un serveur, les gens aient bien accès à leurs répertoires perso avec à l'intérieur un répertoire scan
Ils doivent faire ce qu'ils veulent dedans sauf supprimer le répertorie scan..
J'ai essayé pleins de scripte mais ça ne fonctionne pas...

MD "\\serveur \partage\%USERNAME%\scan"
iCACLS "\\serveur \partage\%USERNAME%\scan" /inheritance:d /C /Q
iCACLS  "\\serveur \partage\%USERNAME%\scan" /remove:g Utilisateurs "domaine\%USERNAME%"
iCACLS "\\serveur \partage\%USERNAME%\scan" /grant "domaine\%USERNAME%":(OI)(CI)M /C /Q
iCACLS "\\serveur \partage\%USERNAME%\scan" /grant "domaine\%USERNAME%":(RX,W,DC)

Le (DC)  fonctionne puisque le droit est décoché mais dans les fait, l'utilisateur peut quand même supprimer le répertoire.
Si quelqu'un sait comment faire.....

merci d'avance

A voir également:

5 réponses

brucine Messages postés 14308 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 24 avril 2024 1 812
12 juil. 2022 à 14:37

Bonjour,

Je ne comprends pas grand-chose à ces histoires de droits sur serveur, voir si l'exemple tout en bas à cet effet fait le job:

https://ss64.com/nt/icacls.html

0

Bonjour
c'est un des site que j'ai pris en référence ( comme le fameux argument /? ) mais ça me dit en retour de résultat que les changements ont été appliqué, mais mes utilisateurs peuvent quand même supprimer le répertorie :'(

0
brucine Messages postés 14308 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 24 avril 2024 1 812 > litacan
12 juil. 2022 à 15:21

Pour autant que je comprenne (je me répète, pas grand-chose), il semble y avoir un bug dans la ligne concernée:

icacls "C:\demo\example" /grant:r ss64Dom\jdoe:(RX,WD,AD)

Dans la liste de droits spécifiques séparés par une virgule, RX n'existe pas (et vérifier la cohérence des autres lignes pendant qu'on y est).

On peut peut-être combiner par:

icacls "C:\demo\example" /grant:r ss64Dom\jdoe:(WD,AD) /grant:r ss64Dom\jdoe:(RX)

ou utiliser d'autres commutateurs

Je ne comprends d'ailleurs pas non plus pourquoi, après avoir donné aux utilisateurs les droits requis sur ce fichier, on ne peut pas explicitement leur refuser sur sa suppression:

icacls "C:\demo\example" /deny ss64Dom\jdoe:(DE)

Mais je te serai d'autant moins d'un grand secours pour tester que je n'ai hors machines virtuelles pas de poste réseau Windows et, à moins d'en créer pour l'occasion, pas d'autres utilisateurs que moi-même.

0

ils ont l'aire de vouloir séparer les types de droits, les droits (OI)(CI)M sont ceux par défaut quand ont crée un utilisateur les droits (RX,W,DC) sont appliqué aux droits spécifiques ((RX,W,DC)
Il y a les droits " simples" et les droits spéciaux dont justement DC DC -supprimer un enfant.

Ont pourrait faire: (OI)(CI)(RX,W,DC)

et le pire est que quand ont fait la commande en lecture après avoir mit les droits par les outils d'administrations classiques ont a le même résultat sous dos que quand ça ne marche pas "(OI)(CI)(RX,W,DC)"

Je cherche justement le scripte pour ne pas avoir à le faire manuellement pour tous les utilisateurs et que l'arborescence se crée au démarrage ( ça c'est bon, mais alors les droits sur le répertoire enfants ....

0
brucine Messages postés 14308 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 24 avril 2024 1 812
12 juil. 2022 à 16:14

Une approche intéressante soutient que malgré les commandes ICACLS sélectives Windows se mélangerait les pinceaux du fait qu'un item est interdit à la racine du dossier elle-même mais autorisée dans la sous-arborescence.

Elle soutient que pour interdire de supprimer ICACLS ne ferait que doter la cible de l'attribut +R (qui concerne tous les utilisateurs, mais ça tombe bien).

Il suffirait alors de commencer par prendre le contrôle total:

icacls "\\serveur \partage\%USERNAME%\scan" /inheritance:r /grant:r administrators:(OI)(CI)(F)

puis d'écrire ATTRIB +R "\\serveur \partage\%USERNAME%\scan"

suivie de la syntaxe autorisant les droits sur les enfants (noter l'astérisque):

icacls "\\serveur \partage\%USERNAME%\scan\*" /grant:r "%USERNAME%":(RX,WD,AD)

Inspiré de https://stackoverflow.com/questions/25746550/icacls-deny-everyone-directory-delete-permission

regarde si tu arrives à adapter ça, je reviens si je trouve mieux. Es-tu sûr que la variable d'environnement est lue dans ces commandes, notamment ICACLS?

0

ça aurait pu etre une bonne idée, mais il met une erreur à "***\scan\*" /grant:r "%USERNAME%":(RX,WD,AD),  il veut appliquer les droits sur fichiers après scan alors que quand le répertoire va se créer il sera vide et le mettre en lecture seul n’empêche pas sa suppression.
Sinon oui le CMD prend bien la variable %USERNAME%, la GPO fonctionne pour les comptes sur laquelle elle s'applique, mais j'ai toujours le pb de suppression du répertoire scan en fait.

0
brucine Messages postés 14308 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 24 avril 2024 1 812
12 juil. 2022 à 17:29

Que se passe-t-il si, au début de ta syntaxe, tu copies un fichier bidon par exemple texte.txt caché et lecture seule à la racine du dossier scan?

Rien n'est plus ch.. que le réseau, tu as vérifié le propriétaire effectif d'un de tes dossiers scan et qu'il est bien en lecture seule?

A défaut de dossier réseau, j'ai créé sur mon bureau un dossier test dans lequel j'ai mis un fichier, et dans les propriétés duquel je me suis refusé toutes les autorisations: je me fais bien jeter quand j'essaie de le supprimer (mais je ne peux plus non plus l'ouvrir, le mode graphique ne différencie pas les objets enfants).

Vérifier si c'est le script qui est en cause, propriétés du dossier avant et après?

0

ah oui ça j'ai eu aussi "mais je ne peux plus non plus l'ouvrir," :)
Mais sinon ça ne change rien, j'ai même voulu voir en retirant l’héritage sur le répertoire utilisateur..

0
brucine Messages postés 14308 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 24 avril 2024 1 812
12 juil. 2022 à 17:57

Après mes considérations précédentes, je donne ma langue au chat...

Il doit y venir quoi, dans ces fichus dossiers scan?

Si un utilisateur l'efface, pas moyen de contrôler avant d'y écrire quelque chose par une syntaxe IF NOT EXIST... MD?

0
litacan > brucine Messages postés 14308 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 24 avril 2024
12 juil. 2022 à 18:20

non c'est une solution d'impression, c'est un serveur qui envoi les fichiers en fonctions des utilisateurs dans les bons répertoires, le serveur justement verra qu'il n'y a pas de répertoire de destination valide, mais il va être incapable de re recréer..
Ont est sur du Netapp donc les utilisateurs peuvent restaurer par eux même le répertorie, mais je voulais éviter que les infogérants aient à le faire eux même, si ont peut tout automatiser c'est pas plus mal

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kelux Messages postés 3065 Date d'inscription vendredi 18 juin 2004 Statut Contributeur Dernière intervention 20 janvier 2023 432
Modifié le 13 juil. 2022 à 11:27

Hello,

En fait le Droit DC (Delete Child) est donné au dossier parent.

Dans le dossier de l'utilisateur (\\serveur \partage\%USERNAME%) le droit DC, donnera le droit de Supprimer les sous dossiers/fichiers (dont 'scan' fait partie).

Si le droit DC est donné au dossier scan, cela permettra de supprimer les sous dossiers/fichiers de 'scan' (ex : ...\scan\folder1 )

Le souci de retirer le droit DC sur le dossier du user, c'est qu'il sera incapable de supprimer un dossier qu'il aurait pu créer dans son répertoire perso - bon ça protège "Scan" mais c'est pas l'idéal.

Il faudrait en fait sécuriser le dossier "scan" en mettant un "Deny" du droit "Delete" sur le dossier "scan" (qui n'est pas un droit  Delete Child)

iCACLS  "\\serveur\partage\%USERNAME%\scan" /deny *S-1-5-11:(DE)

S-1-5-11 : Authenticated Users. // Il faudra ajuster le SID si besoin (infra avec domaine ou non, si un groupe des users est déja créé et mis à jour - on peut toutefois mettre uniquement le User en fait si les users ne peuvent aller browser chez le voisin)

Il faudra retirer cette entrée (si le SID S1-5-11 est utilisé) dans les ACLs, pour qu'un admin puisse supprimer ce dossier si besoin.

Un droit "Deny" est prioritaire sur un "Grant"

-

Il faut bien réfléchir en "ce Dossier - ce fichier" , les "sous dossiers / les sous fichiers " ; et comprendre en parallèle les droits qu'on peut donner : "Supprimer les dossiers/fichiers enfants" Versus "Supprimer ce dossier".

Un droit Delete s'appliquera au dossier/fichier , pas aux enfants...

-

PS : veillez à bien utiliser le FQDN du serveur dans vos scripts/loginscripts : \\SERVEUR.domain.corp

-

EDIT : dans le lien mentionné, on voit que le DC du dossier parent permet quand meme la suppression, meme si DE est positionné sur le dossier. (je prenais pour exemple ce que je faisais avec DSACLS pour le coup, le comportement est différent)

Il faut que les 2 conditions soient remplies pour interdire la suppression du dossier.

Sur les solutions proposées, la technique du fichier caché en lecture seule est à appronfondir, le souci c'est que faire un Deny sur le Delete Child de Scan, les Utilisateurs seront incapables de vider les fichiers dedans.

Faut voir la cinématique de l'usage en fait, est ce que les fichiers sous Scan seront purgés/supprimés à terme par un robot/script ? Ou c'est à l'utilisateur de de le faire ?

Sinon faire une second arbo \\server.domain.corp\scans\%USERNAME%

Leur monter ce second partage dédié aux scans ...


0

Bonjour

En fait je ne peux pas faire de deny *S-1-5-11:(DE)dans le sens où le scripte dit créer les répertoires utilisateurs quand ils ne sont pas déjà créé dans l'arborescence.
c'est au utilisateurs de le faire, ils ont des quotas

mais en essayant ça:

iCACLS  "\\serveur\partage\%USERNAME%\scan" /deny %USERNAME%:(DE)

ça a marché

merci :)

0