Page 1 sur 1

Ajouter des droits sur un dossier

Posté : 25 juin 2020 - 16:46
par Gaetan
Bonjour à tous,
lors de l'installation de certains logiciels, l'utilisateur final aura besoin des droits sur le dossier.
Hors dans un contexte où l'utilisateur n'est pas administrateur, cela pose soucis.

La solution que j'utilise est la suivante :
- un paquet qui installe un module Powershell (qui est mit donc en dépendance du logiciel)
- un script pour changer les droits.

Les droits sont donnés sur 1 dossier précis, pour les utilisateurs authentifiés (peut être changé par n'importe quel autres groupes).

Le module powershell est NTFSSecurity, dispo ici : https://gallery.technet.microsoft.com/s ... dbb2b84e85

Le paquet qui permet de l'installer contient ce code :

Code : Tout sélectionner

# -*- coding: utf-8 -*-
from setuphelpers import * 

uninstallkey = []

targetPWSH = makepath(programfiles,'WindowsPowerShell\Modules\NTFSSecurity')
folderPWSH = 'NTFSSecurity'

def install():

    #copie du module Powershell
    if (isdir(targetPWSH) != True) :
        mkdirs(targetPWSH)
        copytree2(folderPWSH,targetPWSH)
Le script Powershell utilisé est le suivant :

Code : Tout sélectionner

#Autorisation d'accès au dossier pour les utilisateurs loggés
Install-Module NTFSSecurity
$Path = "CHEMIN DU DOSSIER POUR LES DROITS"

#Désactivation de l'héritage
Get-Item $Path | Disable-NTFSAccessInheritance
Add-NTFSAccess –Path $Path -Account "Utilisateurs authentifiés" -AccessRights FullControl
Dans le paquet WAPT il suffit :
- De mettre en dépendance votre paquet d'installation de NTFSSecurity,
- Mettre un fichier .ps1 avec le code powershell au dessus,
- Lancer le script dans votre def install() avec la commande :

Code : Tout sélectionner

run('powershell.exe -NoProfile -NonInteractive -executionpolicy bypass -File FICHIER.ps1')
En espérant que cela vous aide.

Re: Ajouter des droits sur un dossier

Posté : 25 juin 2020 - 17:05
par nliaudat
Ou alors la bonne vieille méthode icalcs :

#https://support.microsoft.com/fr-fr/hel ... ng-systems

Code : Tout sélectionner

    print('Restricting permissions')
    run(r'icacls.exe "%s" /inheritance:d' % install_dir)
    run(r'icacls.exe "%s" /remove:g "*S-1-5-32-545" /t /c /q' % install_dir) #user
    run(r'icacls.exe "%s" /remove:g "*S-1-5-11" /t /c /q' %  install_dir) #authenticated user
    run(r'icacls.exe "%s" /remove:g "*S-1-5-1" /t /c /q' %  install_dir) #remote
    run(r'icacls.exe "%s" /remove:g "*S-1-1-0" /t /c /q' %  install_dir) #everybody

Re: Ajouter des droits sur un dossier

Posté : 26 juin 2020 - 09:18
par Gaetan
Merci de l'info =)
Cela fonctionne bien quand un héritage est présent ?

Re: Ajouter des droits sur un dossier

Posté : 26 juin 2020 - 09:42
par nliaudat
Parfaitement :

Code : Tout sélectionner

  iCACLS.exe /inheritance:e|d|r
          e - Enable inheritance
          d - Disable inheritance and copy the ACEs 
          r - Remove all inherited ACEs

Re: Ajouter des droits sur un dossier

Posté : 26 juin 2020 - 09:53
par Gaetan
Super merci.
Je teste ça, cela sera plus simple ;)

Re: Ajouter des droits sur un dossier

Posté : 01 juil. 2020 - 10:57
par Gaetan
C'est fonctionnel pour moi merci de l'astuce ;)

J'ai utiliser comme ceci :

Code : Tout sélectionner

run(r'icacls.exe "%s" /inheritancelevel:d /grant *S-1-5-11:(M) /t /C /q' %  TargetLogiciel)