20 Apr 2014, 00:00

Boucle pour appliquer un script à tous les utilisateurs d'un domaine

Si l’on souhaite appliquer un script à tous les utilisateurs d’un domaine, il faut commencer par générer la liste de tous ces utilisateurs. Ceci peut se faire via la commande powershell

dsquery user -o samid -limit 250 > C:\path\to\domainUsers.txt

qui va lister tous les utilisateurs du domaine, sous la forme SAM ID (nom raccourci), entourés de guillemets. L’otion -limit est facultative, mais par défaut dsquery ne liste que les 100 premières entrées (soit -limit 100).

Puis on éxecute le script suivant

@echo off

REM on parcourt le fichier domainUsers.txt et on passe chaque ligne en argument
for /f "delims=" %%i in ('type C:\path\to\domainUsers.txt') do (C:\path\to\myScript.bat %%i)

Il faudra penser, dans le script, lorsque l’on souhaite récupérer le paramètre, à utiliser %~1 et non %1, ce qui permet de prendre la valeur sans les guillemets.

20 Apr 2014, 00:00

Création d'un répertoire qui contiendra des dossiers privés d'utilisateurs d'un poste ou domaine

Le but de la manipulation est que des utilisateurs désignés d’un poste ou d’un domaine aient chacun un dossier qui leur est privé (accessible uniquement à eux-seuls, en dehors bien sur des administrateurs). Ces dossiers seront également accessibles par le réseau, avec les mêmes limitations. Ces dossiers seront tous situés dans un même dossier racine, qui ne sera même pas navigable par de simples utilisateurs pour éviter qu’ils ne voient les noms des autres utilisateurs ou encore ceux qui ont un dossier personnel.

Commencer par créer le dossier partagé en question. Dans mon exemple ce sera "C:\Dossiers Perso\". Editer les permissions, désactiver l’héritage et conserver les autorisations en tant qu’autorisations explicites. Puis supprimer toutes les permissions relatives aux Utilisateurs, Utilsateurs authentifiés ou Utilisateurs du domaine (ne laisser que des droits aux Administrateurs, en somme).

Aller dans l’onglet de partage du dossier, aller dans le partage avancé, partager le dossier avec le nom que vous souhaitez, et dans les autorisations, donner le controle total à tout le monde. Le faire dans l’onglet de partage simple donnera les mêmes autorisations ACL sur le dossier (ce que nous ne voulons pas), mais dans l’onglet avancé non. Le partage est donc en lecture/écriture à tout le monde, mais en réalité, les ACL du dossier refuseront l’accès.

Puis exécuter le script suivant, en prenant soin de modifier les chemins : (NOTE : il est conseillé de créer un document vierge, de l’enregistrer au format CP850 (ou OEM850 sous Notepad++) puis d’y coller le contenu ; ceci reglera les problèmes d’accès, notamment pour Invité) @echo off REM on supprime l’affichage des commandes

REM on définit le chemin du dossier racine
REM Ne pas mettre de guillemets meme s'il y'a des espaces
REM ils sont ajoutés dans le suite du script. Ne pas mettre l'antislash final
set privateFolderPath=F:\Dossiers Perso

REM Si il y a un argument à la commande on le récupère (sans guillemets, d'ou le %~1) au lieu de %1, sinon on le demande
if not "%~1"=="" (set user=%~1) else (set /p user="Nom de l'utilisateur dont il faut creer le dossier perso ? ")

REM on zappe l'utilisateur invité
REM le nom bizarre vient de la différence d'encodage : CP850 par défaut pour le batch
if %user% == Invité (
	echo On zappe l'utilisateur Invité
	goto :eof
)

REM on teste l'existence de l'utilisateur avec des espaces autour
REM pour être sûr que ce n'est pas juste un bout du nom qui a été trouvé
REM rajouter le commutateur /domain après Net User pour vérifier sur tout le domaine
net user | findstr /i /C:" %user% "
if errorlevel 1 (
	REM s'il est en début de ligne, il n'y a pas d'espace devant. On vérifie
	net user | findstr /i /B /C:"%user% " > NUL
	if errorlevel 1 (
	    echo Cet utilisateur n'existe pas
	    goto :eof
	)
)

REM S'il n'y a ni dossier ni fichier sur la destination
if not exist "%privateFolderPath%\%user%" (
	REM on crée le dossier
	mkdir "%privateFolderPath%\%user%"
) else (
	REM si il n'y a pas de fichier "." dedans, c'est que c'est un fichier
	if not exist "%privateFolderPath%\%user%\*.*" (
	    echo Attention, "%privateFolderPath%\%user%" est un fichier !
	    pause
	    goto :eof
	)
)

REM On met l'utilisateur en propriétaire et on lui donne le controle total
REM l'utilisation de (OI) et (CI) équivaut à choisir en graphique
REM que les droits s'appliquent à "ce dossier, les sous-dossiers et les fichiers"
icacls "%privateFolderPath%\%user%" /setowner %user% /Q /T
icacls "%privateFolderPath%\%user%" /grant %user%:(OI)F /Q
icacls "%privateFolderPath%\%user%" /grant %user%:(CI)F /Q

Et voilà ! Le dossier de l’utilisateur est créé, il en est propriétaire, et il a (au même titre que les Administrateurs, par l’héritage) le contrôle total dessus. Et aucun utilisateur sans privilège ne peut naviguer son dossier (ni même le dossier "C:\Dossiers Perso" directement). Il peut y accéder en allant directement à "C:\Dossiers Perso\user" ou encore à \\IP_OU_NOM_SERVEUR\Dossiers Perso\user .

Si on souhaite appliquer ce script à tous les utilisateurs d’un domaine, se référer à ce post.

20 Apr 2014, 00:00

Partage réseau propre à chaque utilisateur avec montage automatique sous Server 2012

Le but de la manoeuvre est de monter automatiquement, au démarrage d’une session, un lecteur réseau propre à l’utilisateur actuel. Dans le contexte, cet article fait suite à celui permettant de créer un dossier personnel privé aux utilisateurs d’un domaine.

Je pars du principe que chaque utilisateur a son dossier privé, créé sous le partage \\IP_SERVEUR\Perso$\%username%
Ce post est (très) inspiré de ce post.

Créer, sur un dossier de votre choix, le script suivant avec l’extension .vbs (après l’avoir adapté à vos besoins) : Option Explicit

Dim objNetwork, WshNetworkName
Set objNetwork = CreateObject("WScript.Network")
Set WSHNetworkName = CreateObject("Shell.Application" )

Dim strUser, strHomeFolder, strHomeUserPath, strHomeUserDriveLetter
strHomeUserPath = "\\IP_NOM_SERVEUR\Perso$\"
strHomeUserDriveLetter = "Q:"

'récup du login
strUser = objNetwork.UserName
'chemin réseau complet du répertoire perso de l'utilisateur
strHomeFolder = strHomeUserPath & strUser

Dim CheckDrive, AlreadyConnected, intDrive
Set CheckDrive = objNetwork.EnumNetworkDrives()
On Error Resume Next
AlreadyConnected = False
For intDrive = 0 To CheckDrive.Count - 1

'Si un lecteur réseau est déjà mappé sur la lettre que l'on souhaite utiliser
	If CheckDrive.Item(intDrive) = strHomeUserDriveLetter Then AlreadyConnected = True
	If AlreadyConnected = True then
		objNetwork.RemoveNetworkDrive strHomeUserDriveLetter, True, True
		'objNetwork.RemoveNetworkDrive , True, True
		End if
	Next
	objNetwork.MapNetworkDrive strHomeUserDriveLetter, strHomeFolder
	WshNetworkName.NameSpace(strHomeUserDriveLetter).Self.Name = "Dossier Perso"
	WScript.Quit

Aller dans les stratégies de groupe (gpedit.msc pour le poste local, gpmc.msc pour les stratégies d’un domaine), aller sous Configuration Utilisateur |->Stratégies |->Paramètres Windows |->Scripts Cliquer sur Ajouter. Dans la boite de dialogue, cliquer sur “Afficher les fichiers”, ce qui nous amène directement à l’emplacement partagé prévu pour les scripts d’ouverture de session, qui ressemble à \\domain.com\SYSVOL\Petri.local\Policies\{E4A62379-8423-4654-8DB6-01FB8F58582D}\User\Scripts\Logon

Bien que nous puissions utiliser n’importe quel répertoire partagé, celui-ci est prévu pour, et le chemin réseau sera repris automatiquement par tous les clients. Coller le script ci-dessus sous n’importe quel nom dans ce répertoire, avec l’extension .vbs, par exemple mountPersonalFolder.vbs . Puis dans la boite de dialogue précédente, cliquer sur “Ajouter” et sélectionner le fichier.

Et voilà. Il sera automatiquement transmis chez les clients lorsque ceux-ci actualiseront leurs GPO.

12 Apr 2014, 00:00

Autoriser le Bureau à distance sous Windows Serveur 2012

Avant toute chose, ceci ne traite pas du tout de la configuration du gestionnaire de licence des services Bureau à distance de windows server, ni de leur aspect légal, mais purement de l’aspect technique.

Si l’on souhaite autoriser un utilisateur non-administrateur à se connecter au Bureau à distance sur un Windows Server 2012, il faut procéder à 3 étapes complémentaires :

  • Tout d’abord, vérifier dans les Paramètres système avancés (clic droit sur le Poste de travail, puis Propriétés, puis sélectionner Paramètres système avancés sur le côté), dans l’onglet Utilisation à distance, que les connections à distances sont autorisées sur cet ordinateur. Si ce n’est pas le cas, les activer.

  • Cliquer sur le bouton Sélectionner des utilisateurs, et ajouter le/les utilisateurs/groupes qui auront le droit de se connecter. Ceci a pour effet de placer l’utilisateur/groupe dans le groupe “Utilisateurs du Bureau à distance”. Ceci est visible dans le profil concerné, dans la gestion des utilisateurs et ordinateurs AD. Utiliser le menu “Séléctionnez des utilisateurs” et le composant Utilisateurs et Ordinateurs Active Directory revient exactement au même. Tout ajout/suppression dans l’un sera effectif dans l’autre.

  • Ces personnes désormais ont le droit d’utiliser le protocole RDP, mais n’ont pas le droit d’ouvrir une session sur la machine pour autant. Pour remédier à ceci, il faut aller dans les stratégies locales du serveur, avec la commande gpedit.msc

Puis aller dans : Paramètres ordinateur |-Paramètres Windows |-Paramètres de sécurité |-Stratégies locales |-Attribution de droits utilisateurs

Et remplir la valeur “Autoriser l’ouverture de session par les services Bureau à distance” en conséquence.

Attention. Si on modifie ce paramètres dans les GPO du domaine entier, il sera appliqué à toutes les machines, et surtout le paramètre local par défaut (Administrateurs) sera remplacé par le nouveau paramètre de domaine. Il faut penser à rajouter le groupe Administrateurs si on souhaite qu’ils conservent un accès à distance.

10 Apr 2014, 00:00

Désactiver redirection des imprimantes par défaut du client lors d'une connexion RDP

Sous Windows 7 Pro ou Windows Server 2008 (et probablement Server 2003), lorsqu’un client se connecte en RDP, ses imprimantes locales sont redirigées sur sa session sur le serveur, et celle par défaut est mise par défaut sur la session distante.

Pour désactiver ces 2 comportements qui peuvent être gênants, il faut utiliser l’éditeur de stratégies de groupe (sur le serveur).

Lancer l’éditeur avec la commande

gpedit.msc

Puis aller dans

Modèles d'administration
|-Composants Windows
  |-Services Terminal Server
    |- Redirection de données client/serveur
      |- Ne pas autoriser la redirection de l'imprimante client  -> Activé

10 Apr 2014, 00:00

Elever automatiquement tous les utilisateurs d'un domaine au niveau d'administrateurs de leurs machines

Il peut être souhaitable, pour différentes raisons, comme par exemple satisfaire la demande d’un client, que les utilisateurs simples d’un domaine, soient admins sur leurs machines, pour la gérer comme ils l’entendent, au niveau de l’installation de logiciels et autres. Ceci se paramètre via les Groupes Restreints.

Sous Windows Server 2012, il faut executer (sur le controleur de domaine)

gpmc.msc

puis descendre dans le domaine à gérer, aller dans les paramètres de la Default Domain Policy, faire un clic-droit puis Modifier, pour ouvrir l’Editeur de gestion des stratégies de groupes.

Puis on va dans

Config ordinateur
|-Stratégies
  |-Paramètres Windows
    |-Paramètres de sécurité
      |-Groupes restreints

On fait un clic-droit -> ajouter un groupe, puis on spécifie le Groupe de sécurité dont les utilisateurs seront élevés en tant qu’Admin locaux. Par exemple Utilisateurs du domaine pour tout le monde, ou encore un groupe Admin Locaux que l’on aura pris le soin de créer auparavant.

Puis dans la fenètre des proprietés de ce groupe restreint qui apparaît, dans le cadre “ce groupe est membre de”, on fait Ajouter, puis on sélectionne le groupe Administrateurs.

On force l’application de la GPO sur un client avec la commande

gpupdate /force

puis on déconnect et reconnecte une session sur un utilisateur faisant partie du groupe sus-spécifié, et il sera désormais admin de sa propre machine.

Source : honteusement pompé (une fois de plus) de http://www.frickelsoft.net/blog/?p=13

09 Apr 2014, 00:00

Activer le client NTP sur Windows Server 2012

Il suffit de taper ces 3 commandes en powershell :

w32tm /config /manualpeerlist:pool.ntp.org /syncfromflags:MANUAL
Stop-Service w32time
Start-Service w32time

Source : honteux copier-coller, après vérification, de ce site, qui explique plus en détail : http://www.sysadminlab.net/windows/configuring-ntp-on-windows-server-2012

12 Mar 2014, 00:00

Mémoire insuffisante lors d'un partage réseau sous XP

Sous XP, il peut arriver qu’il soit impossible de rendre accessible des partages réseau, notamment lorsque l’ordinateur essaie d’accéder à ses propres partages réseau ( \127.0.0.1\partage par exemple).

Le message d’erreur est de type : \serveur\partage est inaccessible. […] Mémoire insuffisante sur le serveur pour traiter cette commande.

Ce problème a été rencontré par beaucoup d’utilisateurs lorsque Acronis ou Norton Ghost étaient installés.

Il faut pour corriger ceci modifier une valeur du registre. Aller à la clé HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters

Modifier (ou créer si elle n’existe pas) la valeur IRPStackSize, de type DWORD, et la positionner à une valeur supérieure. Sous XP, les valeurs peuvent aller de 0x1 (1) à 0x32 (50). La valeur par défaut est 0xF (15). Il est recommandé par Microsoft de monter les valeurs 3 par 3.

Il faut redémarrer la machine pour que les changements soient pris en compte.

04 Mar 2014, 00:00

Empecher l'ouverture d'une session locale par des utilisateurs simples sous Windows 7 Pro

Si l’on souhaite que les utilisateurs sans privilèges ne puissent pas se connecter en local sur un poste (par exemple pour en réserver l’accès aux admins), il faut utiliser les stratégies de groupe. Executer :

gpedit.msc

Et aller dans

Config ordi
  |-Paramètres Windows
    |-Paramètres de sécurité
      |-Stratégies locales
        |-Attribution des droits utilisteurs
          |-Permettre l'ouvrture d'une session locale  --> Enlever Utilistaeurs

Et voilà. Ceci n’empêche pas qu’ils ouvrent une session via une connexion RDP.

30 Sep 2013, 00:00

Modifier l'URL ouverte par le raccourci Internet présent dans le menu démarrer (XP)

En cas d’infection par des malwares publicitaires (Yontoo, Delta, Lyricspal, qvo6 etc), les paramètres du navigateur sont souvent modifiés pour remplacer les outils légitimes par ceux de la société derrière l’infection. Cela se manifeste par un moteur de recherche foireux, une page d’accueil du même acabit, et souvent des extensions du navigateur qui visent à ajouter des publicités à des pages n’en contenant pas. Il y a souvent un logiciel/service installé qui surveille les modification effectuées par l’utilisateur pour rétablir les paramètres dès leur modification. Se débarrasser de ces softs est la première étape vers la guérison.

Une fois les logiciels désinstallés, les effets sur le navigateur sont généralement encore visibles. On peut facilement rétablir la page d’accueil, le moteur de recherche par défaut et enlever les extensions, le tout directement au sein du navigateur.

Il peut cependant arriver que la page à l’ouverture du navigateur ne soit toujours pas celle désirée, bien que les paramètres soit corrects. Le procédé est dans ce cas différent : au lieu de paramétrer le navigateur pour changer sa page d’accueil, l’infection va lancer le navigateur en lui donnant une url en paramètre. Ainsi, malgré toutes les configuration possibles, le raccourci du menu donnera l’ordre de lancer le navigateur sur une page précise.

Pour corriger ceci, il faut ouvrir le menu démarre e l’utilisateur (ou de tous les utilisateurs si l’entrée du menu est commune) : par exemple pour Firefox C:\Documents and Settings\All Users\Menu Démarrer\Programmes\Mozilla Firefox
En faisant un clic droit -> Propriétés sur le raccourci Firefox présent dans ce répertoire, on peut voir que la valeur du raccourci est le chemin de l’exécutable, avec un url derrière, en paramètre. Il suffit de supprimer le paramètre pour que l’ouverture du navigateur redevienne normale.

La procédure est légèrement pour l’élément Internet du menu démarrer (tout en haut). Cet élément est un élément défini par le système, et n’est pas accessible directement dans le dossier du menu démarrer. Il faut passer par le registre pour modifier sa valeur. Lancer regedit et aller à la clé : HKLM\SOFTWARE\Clients\StartMenuInternet
Chacun des programmes pouvant être le navigateur par défaut (et donc figurer dans la liste) a sa clé ici. La manipulation suivante est à faire pour chacun des navigateurs (Firefox, Chrome, IE etc…) Aller à la clé HKLM\SOFTWARE\Clients\StartMenuInternet\NAVIGATEUR.EXE\shell\open\command On trouve ici la valeur (par défaut), qui donne le chemin de l’exécutable, ainsi qu’un éventuel paramètre. Il suffit de supprimer l’url en paramètre pour retrouver une ouverture normale du navigateur.