Pastebin
Retrouvez, créez et partagez vos snippets en temps réel.
Rechercher un Pastebin
Aucun paste trouvé.
Créer un paste
Pastebin
Blog
J
# lock_peda_admin_vs_reste.ps1 # A lancer en tant qu'ADMINISTRATEUR sur le PC # 1. Vérifier qu'on est admin $principal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent()) if (-not $principal.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)) { Write-Error "Merci de lancer ce script en tant qu'administrateur." exit 1 } Write-Host "=== Création des groupes Eleves / Profs / AdminPedago ===`n" function Ensure-LocalGroup { param([string]$Name) if (-not (Get-LocalGroup -Name $Name -ErrorAction SilentlyContinue)) { net localgroup "$Name" /add | Out-Null Write-Host "Groupe créé : $Name" } else { Write-Host "Groupe déjà existant : $Name" } } Ensure-LocalGroup "Eleves" Ensure-LocalGroup "Profs" Ensure-LocalGroup "AdminPedago" Write-Host "`n=== Création des comptes eleve / prof ===`n" function Ensure-LocalUser { param( [string]$UserName, [string]$Password, [string]$FullName, [string]$GroupName ) if (-not (Get-LocalUser -Name $UserName -ErrorAction SilentlyContinue)) { Write-Host "Création du compte $UserName ..." net user "$UserName" "$Password" /add /y /fullname:"$FullName" /passwordchg:no /passwordreq:yes | Out-Null } else { Write-Host "Compte déjà existant : $UserName" } Write-Host " - Ajout de $UserName dans $GroupName" net localgroup "$GroupName" "$UserName" /add | Out-Null Write-Host " - Ajout de $UserName dans Users" net localgroup "Users" "$UserName" /add | Out-Null } Ensure-LocalUser -UserName "eleve" -Password "eleve" -FullName "Compte eleve" -GroupName "Eleves" Ensure-LocalUser -UserName "prof" -Password "prof" -FullName "Compte prof" -GroupName "Profs" Write-Host "`n=== Durcissement des exécutables système (admins ONLY) ===`n" # Liste des exécutables à bloquer pour tous les non-admins $targets = @( "$env:WINDIR\System32\cmd.exe", "$env:WINDIR\System32\WindowsPowerShell\v1.0\powershell.exe", "$env:WINDIR\System32\WindowsPowerShell\v1.0\powershell_ise.exe", "$env:WINDIR\System32\control.exe", "$env:WINDIR\regedit.exe", "$env:WINDIR\System32\mmc.exe", "$env:WINDIR\System32\taskmgr.exe", "$env:WINDIR\ImmersiveControlPanel\SystemSettings.exe" ) foreach ($t in $targets) { if (Test-Path $t) { Write-Host "Traitement de : $t" # 1) Prendre la propriété (TrustedInstaller -> Administrateurs) takeown /F "$t" /A > $null 2>&1 # 2) Donner contrôle total à Administrators pour pouvoir modifier les ACL proprement icacls "$t" /grant:r "*S-1-5-32-544:(F)" > $null 2>&1 # *S-1-5-32-544 = groupe Administrators, peu importe la langue # 3) Couper l'héritage et ne laisser que SYSTEM + Administrators # Résultat : SEULS les admins peuvent exécuter ces .exe icacls "$t" /inheritance:r /grant:r "SYSTEM:(F)" "*S-1-5-32-544:(RX)" > $null 2>&1 } else { Write-Host "Introuvable, je passe : $t" } } Write-Host "`n=== FINI ===" Write-Host "-> Comptes locaux créés : eleve (Eleves), prof (Profs)." Write-Host "-> Tous les comptes NON admin ne peuvent plus lancer : CMD, PowerShell, Regedit, MMC, Taskmgr, Paramètres, Panneau de config." Write-Host "-> Les comptes du groupe Administrators gardent l'accès complet."
Créé il y a 2 mois.