<div align="center">
  <p align="center">
    <a href="#">
      <img src="https://www.cerfi.ch/Htdocs/Images/Pictures/puid_a6f6619a-71f9-48f2-a424-541d8c7ff960_6620.jpg" height="100px" />
    </a>
  </p>
</div>

<div style="border: 2px solid #d1d5db; padding: 20px; border-radius: 8px; background-color: #f9fafb;">
  <h1 align="center">Gestion des droits d'accès sous Windows</h1>
</div>

# **Gestion des droits via cmd <img src=https://cdn.iconscout.com/icon/premium/png-256-thumb/command-prompt-3477885-2910207.png height="50px" />**
## afficher des droits d’un dossier / fichier
```cmd
icacls <chemin du fishier/dossier>
```
- exemple:
```cmd
icacls F:\Téléchargement
```
---
## ajouter des droits à un dossier / fichier
```cmd
icacls <chemin du fishier/dossier> /grant <nom du compte>: (droits à ajouter)
```
- exemple:
```cmd
icacls F:\Téléchargement /grant Administrator:(D,RX)
```
>liste des droits:
>			N - no access
>           F - full access
>           M - modify access
>           RX - read and execute access
>           R - read-only access
>           W - write-only access
>           D - delete access

---
## ajouter des interdictions à un dossier / fichier
```cmd
icacls <chemin du fishier/dossier> /deny <nom du compte>: (interdiction à ajouter)
```
- exemple:
```cmd
icacls F:\Téléchargement /deny Frederic:(D,RX)
```
### liste des droits utilisables:
| Code | Droits d'accès correspondant |
| ---- | ---------------------------- |
|   N  | no access                    |
|   F  | full access                  |                                                               
|   M  | modify access                |
|   RX | read and execute access      |
|   R  | read-only access             |
|   W  | write-only access            |
|   D  | delete access                |
---

# **Gestion des droits via Powershell <img src=https://upload.wikimedia.org/wikipedia/commons/a/af/PowerShell_Core_6.0_icon.png height="50px" />**

## afficher des droits d’un dossier / fichier 
```powershell
Get-Acl <chemin du fichier/dossier>
```
- exemple
```powershell
Get-Acl m:\2022
```
    
## copier des droits d’un dossier / fichier sur un autre
```powershell
Get-acl -Path <chemin du fichier/dossier source> |Set-Acl -Path <chemin du fichier/dossier cible>
```
- exemple: 
```powershell
Get-Acl -Path "C:\Dog.txt" | Set-Acl -Path "C:\Cat.txt"
```
    
## Gérer les droit (ACL)
- prérequis: installation du module powershell ntfssecurity
```powershell
Install-Module NTFSSecurity
```
### Ajouter des droits
```powershell
Add-NTFSAccess -Path "dossier_cible" -AccessRight "type_de_droits" -Account "groupe_de_domaine_local_souhaité"
```
      
### lister les droits
```powershell
Get-NTFSAccess "dossier_cible" |format-Table -Wrap
```
### liste des droits utilisables:
| Paramètre                         | Effet |
|------------------------------------|---------------------------------------------------------------|
| AppendData                        | Autorise l'ajout de données à un fichier existant.            |
| ChangePermissions                 | Permet de modifier les permissions d'un fichier/dossier.     |
| CreateFiles                       | Autorise la création de nouveaux fichiers.                   |
| Delete                            | Permet la suppression du fichier/dossier.                    |
| DeleteSubdirectoriesAndFiles      | Autorise la suppression des sous-dossiers et fichiers.       |
| FullControl                       | Donne un contrôle total sur le fichier/dossier.              |
| GenericAll                        | Regroupe toutes les autorisations.                           |
| GenericExecute                    | Permet l'exécution d'un fichier ou la traversée d'un dossier.|
| GenericRead                       | Permet de lire un fichier et ses attributs.                  |
| GenericWrite                      | Autorise l'écriture et la modification d'un fichier.         |
| Modify                            | Inclut Read, Write, Execute et Delete.                       |
| None                              | Aucun accès.                                                 |
| Read                              | Permet uniquement la lecture des données.                    |
| ReadAndExecute                    | Combine Read et Execute.                                      |
| ReadAttributes                    | Autorise la lecture des attributs du fichier/dossier.        |
| ReadData                          | Permet la lecture du contenu du fichier.                     |
| ReadExtendedAttributes            | Permet la lecture des attributs étendus.                     |
| ReadPermissions                   | Autorise la lecture des permissions d'un fichier/dossier.    |
| Synchronize                       | Utilisé pour la synchronisation des accès avec d'autres processus. |
| TakeOwnership                     | Permet de prendre possession d'un fichier/dossier.           |
| Traverse                          | Autorise la traversée d'un dossier sans en voir le contenu.  |
| Write                             | Permet d'écrire et de modifier un fichier.                   |
| WriteAttributes                   | Autorise la modification des attributs du fichier/dossier.   |
| WriteExtendedAttributes           | Permet de modifier les attributs étendus.                    |

