Ajouter des droits sur un dossier

Questions about WAPT Packaging / Requêtes et aides autour des paquets Wapt.
Règles du forum
Règles du forum communautaire
* English support on www.reddit.com/r/wapt
* Le support communautaire en français se fait sur ce forum
* Merci de préfixer le titre du topic par [RESOLU] s'il est résolu.
* Merci de ne pas modifier un topic qui est taggé [RESOLU]. Ouvrez un nouveau topic en référençant l'ancien
* Préciser version de WAPT installée, version complète ET numéro de build (2.2.1.11957 / 2.2.2.12337 / etc.) AINSI QUE l'édition Enterprise / Discovery
* Les versions 1.8.2 et antérieures ne sont plus maintenues. Les seules questions acceptées vis à vis de la version 1.8.2 sont liés à la mise à jour vers une version supportée (2.1, 2.2, etc.)
* Préciser OS du serveur (Linux / Windows) et version (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019)
* Préciser OS de la machine d'administration/création des paquets et de la machine avec l'agent qui pose problème le cas échéant (Windows 7 / 10 / 11 / Debian 11 / etc.)
* Eviter de poser plusieurs questions lors de l'ouverture de topic, sinon il risque d'être ignorer. Si plusieurs sujet, ouvrir plusieurs topic, et de préférence les uns après les autres et pas tous en même temps (ie ne pas spammer le forum).
* Inclure directement les morceaux de code, les captures d'écran et autres images directement dans le post. Les liens vers les pastebin, les bitly et autres sites tierces seront systématiquement supprimés.
* Comme tout forum communautaire, le support est fait bénévolement par les membres. Si vous avez besoin d'un support commercial, vous pouvez contacter le service commercial Tranquil IT au 02.40.97.57.55
Avatar de l’utilisateur
Gaetan
Messages : 158
Inscription : 08 août 2019 - 10:16
Localisation : Toulouse

25 juin 2020 - 16:46

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.
nliaudat
Messages : 29
Inscription : 08 août 2019 - 08:31

25 juin 2020 - 17:05

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
Avatar de l’utilisateur
Gaetan
Messages : 158
Inscription : 08 août 2019 - 10:16
Localisation : Toulouse

26 juin 2020 - 09:18

Merci de l'info =)
Cela fonctionne bien quand un héritage est présent ?
nliaudat
Messages : 29
Inscription : 08 août 2019 - 08:31

26 juin 2020 - 09:42

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
Avatar de l’utilisateur
Gaetan
Messages : 158
Inscription : 08 août 2019 - 10:16
Localisation : Toulouse

26 juin 2020 - 09:53

Super merci.
Je teste ça, cela sera plus simple ;)
Avatar de l’utilisateur
Gaetan
Messages : 158
Inscription : 08 août 2019 - 10:16
Localisation : Toulouse

01 juil. 2020 - 10:57

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)
Verrouillé