diff --git a/Windows/Gestion des postes/Gestion des partages.md b/Windows/Gestion des postes/Gestion des partages.md index 9a65978..1664567 100644 --- a/Windows/Gestion des postes/Gestion des partages.md +++ b/Windows/Gestion des postes/Gestion des partages.md @@ -43,201 +43,59 @@ net share MonPartage=c:\share /GRANT:Ichbine,Full --- # **Gestion des partage avec PowerShell ** +## Mise en place du partage +### créer un partage +```powershell +New-SmbShare -Name "nom du partage" -Path "chemin vers le dossier de partage" -FullAccess "groupe d'utilisateur" -ReadAccess "groupe d'utilisateur" +``` +- exemple +```powershell +New-SmbShare -Name Partage -Path "C:\Partage\" -FullAccess "Administrateurs" -ReadAccess "Utilisateurs" +``` +--- +### lister les partages +```powershell +Get-SmbShare +``` +--- +## Gérer les droits NTFS sur le partage +### ajouter des droits sur le partage +```powershell +Grant-SmbShareAccess -Name "chemin vers le dossier de partage" -AccountName "compte dont on veut vérifier les droits" -AccessRight "type de droit" -Force +``` +> 💡 Le paramètre -Force permet de zapper la confirmation. +- exemple: +```powershell +Grant-SmbShareAccess -Name "Partage" -AccountName "Ichbine" -AccessRight Full -Force +``` +--- +### ajouter des droits d'accès sur le partage +```powershell +Grant-SmbShareAccess -Name "chemin vers le dossier de partage" -AccountName "compte dont on veut vérifier les droits" -AccessRight "type de droit" -Force +``` +- exemple: +```powershell +Grant-SmbShareAccess -Name "Partage" -AccountName "florian@it-connect.local" -AccessRight Read -Force +``` +--- +### supprimer des droits d'accès sur le partage +```powershell +Revoke-SmbShareAccess -Name "chemin vers le dossier de partage" -AccountName "compte dont on veut vérifier les droits" -Force +``` +> 💡 Le paramètre -Force permet de zapper la confirmation. +- exemple: +```powershell +Revoke-SmbShareAccess -Name "Partage" -AccountName "florian@it-connect.local" -Force +``` +### Refuser des droits d'accès sur le partage +```powershell +Bloke-SmbShareAccess -Name "chemin vers le dossier de partage" -AccountName "compte dont on veut vérifier les droits" -Force +``` +- exemple: +```powershell +Bloke-SmbShareAccess -Name "Partage" -AccountName "florian@it-connect.local" -Force +``` +> 💡 Le paramètre -Force permet de zapper la confirmation. -- Déclarer un partage - - ```powershell - New-SmbShare -Name "nom du partage" -Path "chemin vers le dossier de partage" -FullAccess "groupe d'utilisateur" -ReadAccess "groupe d'utilisateur" - #exemple - New-SmbShare -Name Partage -Path "C:\Partage\" -FullAccess "Administrateurs" -ReadAccess "Utilisateurs" - ``` - -- consulter les droits d’un partage - - ```powershell - Get-SmbShareAccess -Name "nom du partage" - #exemple - Get-SmbShareAccess -Name "Partage" - ``` - -- Gérer les droits NTFS sur le partage - - - - - consulter les droits NTFS du partage - - ```powershell - Get-NTFSAccess -Path "chemin vers le dossier de partage" - #exemple - Get-NTFSAccess -Path "C:\Partage" - ``` - - - - - Ajouter des droits NTFS - - ```powershell - Add-NTFSAccess -Path "chemin vers le dossier de partage" -Account "compte dont on veut vérifier les droits" -AccessRights "type de droits" - #exemple - Add-NTFSAccess -Path "C:\Partage\" -Account "florian@it-connect.local" -AccessRights Modify - ``` - - - Enlever des droits NTFS - - ```powershell - Remove-NTFSAccess -Path "chemin vers le dossier de partage" -Account "compte dont on veut vérifier les droits" -AccessRights "type de droits" - #exemple - Remove-NTFSAccess -Path "C:\Partage\" -Account "florian@it-connect.local" -AccessRights Modify - ``` - -- Configurer le partage - - - - - consulter les droits de Partage - - ```powershell - Get-SmbShareAccess -Name "chemin vers le dossier de partage" -AccountName "compte dont on veut vérifier les droits" - #exemple - Get-SmbShareAccess -Name "C:\Partage\" -AccountName "florian@it-connect.local" - ``` - - - ajouter des droits sur le partage - - ```powershell - Grant-SmbShareAccess -Name "chemin vers le dossier de partage" -AccountName "compte dont on veut vérifier les droits" -AccessRight "type de droit" -Force #permet de ne pas demander de confirmation - #exemple - Grant-SmbShareAccess -Name "Partage" -AccountName "florian@it-connect.local" -AccessRight Read -Force - ``` - - - supprimer des droits sur le partage - - ```powershell - Revoke-SmbShareAccess -Name "chemin vers le dossier de partage" -AccountName "compte dont on veut vérifier les droits" -Force #permet de ne pas demander de confirmation - #exemple - Revoke-SmbShareAccess -Name "Partage" -AccountName "florian@it-connect.local" -Force - ``` - - - Bloquer l’accès à un partage - - ```powershell - Bloke-SmbShareAccess -Name "chemin vers le dossier de partage" -AccountName "compte dont on veut vérifier les droits" -Force #permet de ne pas demander de confirmation - #exemple - Bloke-SmbShareAccess -Name "Partage" -AccountName "florian@it-connect.local" -Force - - #N.B: on peut débloquer en changeant Bloke par Unbloke - ``` - -- Script complet - - ```powershell - param ( - [string]$FolderPath, - [string]$FolderName, - [string]$share - ) - - # Importer le module Active Directory - Import-Module ActiveDirectory - #Install-Module NTFSSecurity - Import-Module NTFSSecurity - - # Définir les noms des groupes - $domain = (Get-ADDomain).DNSRoot - $groupPrefix = "DL-$FolderName" - - $groups = @{ - "Refus" = "$groupPrefix-R" - "ControleTotal" = "$groupPrefix-CT" - "Ecriture" = "$groupPrefix-E" - "Lecture" = "$groupPrefix-L" - } - - # Créer les groupes dans Active Directory - foreach ($key in $groups.Keys) { - $groupName = $groups[$key] - $PathDL = "OU=03-Ressources,OU=22-Services,OU=MT,DC=mt,DC=msprsx,DC=eni" - if (-Not (Get-ADGroup -Filter { Name -eq $groupName })) { - New-ADGroup -Name $groupName -SamAccountName $groupName -GroupScope DomainLocal -Path $PathDL - Write-Host "Created AD Group: $groupName" - } else { - Write-Host "AD Group already exists: $groupName" - } - } - - # Fonction pour partager un dossier - function Share-Folder { - if (-Not (Get-SmbShare -Name $share -ErrorAction SilentlyContinue)) { - New-SmbShare -Name $share -Path $folderPath - $droits_partage = Get-SmbShareAccess -Name $share - foreach ($compte in $droits_partage){ - $compte_list = $compte.AccountName - if($compte_list -notlike "Utilisateurs du domaine"){ - Revoke-SmbShareAccess -AccountName $compte_list -Name $share -Force - Grant-SmbShareAccess -Name $share -AccountName "$domain\Utilisateurs du domaine" -AccessRight Full -Force - } - } - Write-Host "Created share: $share" - } else { - Write-Host "Share already exists: $share" - } - } - - # Fonction gestion des droits NTFS dossier partagé - function Permission-Dossier { - # Ajout des groupes DL au permission du dossier - foreach ($key in $groups.Keys) { - $groupName = $groups[$key] - if ($groupName -like "*-CT"){ - Add-NTFSAccess -Path $folderPath -Account "$groupName@$domain" -AccessRights FullControl - } elseif ($groupName -like "*-E"){ - Add-NTFSAccess -Path $folderPath -Account "$groupName@$domain" -AccessRights ReadAndExecute - } elseif ($groupName -like "*-L"){ - Add-NTFSAccess -Path $folderPath -Account "$groupName@$domain" -AccessRights Read - } - } - # Obtenir la liste des comptes autorisés et leurs permissions sur le chemin spécifié - $compt_autor = Get-NTFSAccess -Path $folderPath - - # Itérer à travers chaque compte autorisé - foreach ($compt in $compt_autor) { - $Account = $compt.Account - $AccessRights = $compt.AccessRights - - # Afficher le nom du compte - Write-Output "Traitement du compte : $Account" - - # Condition pour vérifier si le compte ne contient pas "$share" - if ($Account -notlike "*$share*") { - # Retirer les permissions pour le compte - Write-Output "Retrait des permissions pour le compte : $Account" - Remove-NTFSAccess -Path $folderPath -Account $Account -AccessRights $AccessRights - } else { - Write-Output "Le compte $Account contient 'DATA' et ne sera pas modifié." - } - } - } - - Share-Folder - Permission-Dossier - - Write-Host "Script execution completed." - - ``` \ No newline at end of file +> 💡 on peut débloquer en changeant Bloke par Unbloke +--- \ No newline at end of file diff --git a/Windows/Gestion des postes/Scripts prèt à porter/Créations des partages.ps1 b/Windows/Gestion des postes/Scripts prèt à porter/Créations des partages.ps1 new file mode 100644 index 0000000..6669979 --- /dev/null +++ b/Windows/Gestion des postes/Scripts prèt à porter/Créations des partages.ps1 @@ -0,0 +1,94 @@ +```powershell + param ( + [string]$FolderPath, + [string]$FolderName, + [string]$share + ) + + # Importer le module Active Directory + Import-Module ActiveDirectory + #Install-Module NTFSSecurity + Import-Module NTFSSecurity + + # Définir les noms des groupes + $domain = (Get-ADDomain).DNSRoot + $groupPrefix = "DL-$FolderName" + + $groups = @{ + "Refus" = "$groupPrefix-R" + "ControleTotal" = "$groupPrefix-CT" + "Ecriture" = "$groupPrefix-E" + "Lecture" = "$groupPrefix-L" + } + + # Créer les groupes dans Active Directory + foreach ($key in $groups.Keys) { + $groupName = $groups[$key] + $PathDL = "OU=03-Ressources,OU=22-Services,OU=MT,DC=mt,DC=msprsx,DC=eni" + if (-Not (Get-ADGroup -Filter { Name -eq $groupName })) { + New-ADGroup -Name $groupName -SamAccountName $groupName -GroupScope DomainLocal -Path $PathDL + Write-Host "Created AD Group: $groupName" + } else { + Write-Host "AD Group already exists: $groupName" + } + } + + # Fonction pour partager un dossier + function Share-Folder { + if (-Not (Get-SmbShare -Name $share -ErrorAction SilentlyContinue)) { + New-SmbShare -Name $share -Path $folderPath + $droits_partage = Get-SmbShareAccess -Name $share + foreach ($compte in $droits_partage){ + $compte_list = $compte.AccountName + if($compte_list -notlike "Utilisateurs du domaine"){ + Revoke-SmbShareAccess -AccountName $compte_list -Name $share -Force + Grant-SmbShareAccess -Name $share -AccountName "$domain\Utilisateurs du domaine" -AccessRight Full -Force + } + } + Write-Host "Created share: $share" + } else { + Write-Host "Share already exists: $share" + } + } + + # Fonction gestion des droits NTFS dossier partagé + function Permission-Dossier { + # Ajout des groupes DL au permission du dossier + foreach ($key in $groups.Keys) { + $groupName = $groups[$key] + if ($groupName -like "*-CT"){ + Add-NTFSAccess -Path $folderPath -Account "$groupName@$domain" -AccessRights FullControl + } elseif ($groupName -like "*-E"){ + Add-NTFSAccess -Path $folderPath -Account "$groupName@$domain" -AccessRights ReadAndExecute + } elseif ($groupName -like "*-L"){ + Add-NTFSAccess -Path $folderPath -Account "$groupName@$domain" -AccessRights Read + } + } + # Obtenir la liste des comptes autorisés et leurs permissions sur le chemin spécifié + $compt_autor = Get-NTFSAccess -Path $folderPath + + # Itérer à travers chaque compte autorisé + foreach ($compt in $compt_autor) { + $Account = $compt.Account + $AccessRights = $compt.AccessRights + + # Afficher le nom du compte + Write-Output "Traitement du compte : $Account" + + # Condition pour vérifier si le compte ne contient pas "$share" + if ($Account -notlike "*$share*") { + # Retirer les permissions pour le compte + Write-Output "Retrait des permissions pour le compte : $Account" + Remove-NTFSAccess -Path $folderPath -Account $Account -AccessRights $AccessRights + } else { + Write-Output "Le compte $Account contient 'DATA' et ne sera pas modifié." + } + } + } + + Share-Folder + Permission-Dossier + + Write-Host "Script execution completed." + + ``` \ No newline at end of file