12 Aug 2014, 00:00

Booter un système Linux en mode UEFI ou en mode BIOS

Le but de la manipulation est de pouvoir, aisément, booter un système Linux Debian aussi bien en mode UEFI que MBR, sans avoir à faire de reconfiguration particulière en passant de l’un à l’autre, avec un disque dur partitionné en GPT. Ceci me permet de pouvoir, à la volée, grâce au menu de démarrage (sur un HP DM1-4332sf), booter mon OS linux en mode BIOS, permettant un meilleur support du matériel (la mise en veille ne fonctionnant actuellement pas en mode EFI), tout en conservant les systèmes Windows 7, Windows 8 et mon système Debian bootables en mode EFI.

N’ayant actuellement pas réussi à faire cohabiter grub-pc et grub-efi sur une même installation, le démarrage par efi se fera via GRUB et le démarrage par MBR se fera via EXTLINUX.

Cette démarche fonctionne aussi en cas de multiboot, mais ce multiboot ne sera possible qu’en mode EFI (via GRUB pour EFI). Le système Syslinux ne sera capable de démarrer que la Debian. Cet article ne parlera toutefois pas du tout de la configuration du dual-boot en EFI, celui-ci étant de toute façon totalement indépendant de la coexistence avec un Syslinux pour BIOS.

Le disque /dev/sda est supposé partitionné comme ceci :

/dev/sda1 : FAT32, EFI System Partition (label EFI)
/dev/sda2 : NTFS Partition (label WIN_7)
/dev/sda3 : Ext4 partition (label SLASH)
/dev/sda4 : Ext4 partition (label HOME)
/dev/sda5 : swap partiton
/dev/sda6 : NTFS partition (label DATA)

Il faut ensuite rajouter le flag legacy_boot à la partition SLASH (/dev/sda3 ici). Ceci peut se faire via GParted. Dans le cas d’une partiton /boot séparée, il faut probablement positionner ce flag sur la partition /boot .

Le système est présupposé fonctionnel en mode EFI, via GRUB (soit par une installation directement en mode EFI, soit en rendant le système bootable en EFI après une installation classique, comme détaillé ici). Comme les labels l’indiquent, /dev/sda3 est monté sur / , /dev/sda4 est monté sur /home/ . Le setup ne contient PAS de partiton /boot/ séparée. La partition EFI System Partition est montée sur /boot/efi/.

Il faut d’abord installer le paquet extlinux. sudo aptitude install extlinux syslinux-common Il crée automatiquement un répertoire /boot/extlinux/ avec la configuration nécessaire. Il install également extlinux sur le MBR du disque (commande extlinux-install), or celui-ci ne convient pas à l’installation actuelle, car il est conçu pour les partitons natives en MBR. On écrase donc ce mbr avec le extlinux prévu pour les partitions GPT :

dd if=/usr/lib/syslinux/gptmbr.bin of=/dev/sda

Et voilà ! Si on choisit de démarrer l’ordinateur en mode BIOS, sur le disque dur, on aura la liste de nos noyaux bootables via Extlinux. D’après mes tests, l’ajout et la suppression de noyaux peuvent être faits à partir du mode BIOS ou EFI, GRUB et Extlinux auront tous les 2 leur configuration mise à jour.

29 Jul 2014, 00:00

Installer freenet sous Wheezy

On va créer un utilisateur dedié, qui installera et lancera l’instance de freenet. Il n’est pas nécessaire et donc pas recommandé de lancer l’instance en root.

Installation :

    sudo adduser --system --group freenet
    cd ~freenet
    sudo su -s "$SHELL" freenet
    wget https://downloads.freenetproject.org/alpha/installer/new_installer_offline.jar
    java -jar new_installer_offline.jar -console

Selectionner un répertoire, par exemple /home/freenet/freenet_bin pour l’installation. Le client est lancé automatiquement suite à l’installation. Pour couper/lancer le serveur ou savoir s’il tourne, les commandes, en tant qu’utilisateur freenet, sont /home/freenet/freenet_bin/run.sh stop, /home/freenet/freenet_bin/run.sh start et /home/freenet/freenet_bin/run.sh status.

On peut ensuite accéder au panneau de contrôle via l’url, dans son navigateur favori : http://localhost:8888

02 Jul 2014, 00:00

L'UEFI et GPT en vrac

Généralités

Legacy Mode = Compatibility Support Module (CSM) = BIOS Mode . Utilisé pour qu’un système UEFI se comporte comme un BIOS traditionnel.

Pour savoir si l’on a bien booté en mode efi : Sous Linux : dmesg | grep -i EFI ne renverra presque rien si l’on est en mode BIOS, mais plein d’infos (gestion mémoire etc) si on est en mode efi.
Sous Windows, il suffit de se repérer à la table de partition du disque système : il ne peut booter en mode BIOS que sur disque MBR, et en mode EFI que sur disque GPT.

À une certaine époque, fdisk ne gèrait pas les disques GPT. Aujourd’hui oui. gdisk les gère aussi, et permet un certain nombre d’actions dessus.

Les tables de partition GPT sont dupliquées ; en début ET en fin de disque. Pour cette raison, dumper un disque vers un disque plus grand ne fonctionne plus, car la table de secours ne sera pas correctement placée. Il faut copier la table de partition (sudo sgdisk /dev/sdX -R /dev/sdY pour copier la table de sdX vers sdY), puis dumper chacune des partitions une à une.

Une table de partition GPT contient une zone réservée habituellement au MBR, avec plusieurs états possibles : cette zone MBR peut-être en protective (non utilisée, montre une seule grosse fausse partition de max 2To), en hybrid (une pseudo-table MBR devant concorder avec la table gpt sur 4 partitions) ou en MBR-only (c’est nativement un disque MBR). Le rôle de cette zone est d’éviter la modification/création d’une table MBR par des outils ne connaissant pas le GPT.
gdisk peut (ré)écrire une table hybrid-MBR pour qu’elle concorde avec l’état actuel de la table GPT. L’utilisation d’un hybrid-MBR est toutefois un hack étant aujourd’hui plutôt déconseillé.

On peut voir l’état de ce mbr avec l’outil gdisk :
sudo gdisk -l /dev/sdX

gparted gère sans problème les disques GPT, sauf dans le cas d’un disque en Hybrid-MBR. Les modifications seraient dans ce cas faites uniquement sur la pseudo-table mbr, sans tenir compte de la gpt, et donc de l’agencement réel des partitions, ce qui risque très probablement de casser toute la table. (edit : probablement plus vrai aujourd’hui)

Lors de la création d’une table de partition, va être créé un “Disk identifier” (sous forme d’UUID pour du GPT, et de 8 caractères hexadécimaux pour du MBR). Cet identifiant est purement logiciel.

Flags, types de partition

Une table de partition GPT associe à chaque partition un type, qui permet de donner une indication sur le rôle de la partition. Ce type est un UUID, qui se traduit en une appellation (qui peut être différente selon les programmes). Un fdisk -l affiche le type de chaque partition existante. On peut voir la liste complète des types de partition avec fdisk /dev/sdX puis l.

On peut également voir/modifier facilement les types de partition avec cfdisk .

La partition sera accessible, même si le type ne concorde pas avec le formatage. Toutefois, certains types peuvent ne pas apparaître dans l’explorateur, et nécessiter un montage à la main (par exemple esp).

Sous GParted, un certain nombre de ces types de partition sont représentés par des drapeaux (flags). Par exemple,

  • absence de drapeau = Linux Filesystem (ou Inconu sous diskpart) = UUID 0fc…de4
  • drapeau “esp” (également “boot”) = type EFI System Partition (ou Système sous diskpart) = c12…93b
  • swap = Linux Swap = 065…f4f
  • bios_grub = BIOS boot
  • diag = Windows recovery environment
  • msftdata = Microsoft Basic Data (ou Principale sous diskpart) = ebd…9c7
  • msftres = Microsoft reserved (ou Réservé sous diskpart) = e3c…5ae

Lors du formatage vers certains systèmes de fichiers (par exemple ext4 ou ntfs), GParted assigne automatiquement le type “évident” à la partition (par exemple “Linux filesystem” ou “Microsoft basic data”). Un formatage en FAT32 ne semble pas modifier le type déjà existant.

Certains drapeaux sont toutefois indépendants du type ; par exemple “hidden” et “legacy_boot”.
Il y’a une explication de nombreux drapeaux ici.

Types en table MRB

Les partitions ont également un type dans les partitions MBR. L’identifiant est sur 2 octets et Par exemple

Démarrage

L’UEFI ne peut démarrer un périphérique (disque dur, clé usb etc) qu’à partir d’une partition en fat32 (en réalité, certaines cartes-mères sont capables de lire le NTFS aussi). Généralement, elle est nommée “EFI System Partition” (ESP) et elle a le flag “boot” dans GParted (et le flag “esp” si la table de partition est GPT).

Le chemin par défaut où l’UEFI va chercher un bootloader (exécutable EFI) est ${ESP}/boot/BOOT${ARCH}.efi , typiquement /efi/boot/BOOTX64.efi. Si l’exécutable est ailleurs, on peut aller le chercher à la main lors du choix de boot (bien que ceci dépende de l’implémentation sur la carte-mère).

L’UEFI supporte aussi l’enregistrement d’entrées de démarrage au sein-même de l’UEFI. Ceci permet d’avoir plusieurs bootloaders en parallèle, avec un chemin et un nom associés. Par exemple ${ESP}/Microsoft\bootmgrfw.efi (Windows Boot Manager) et ${ESP}/debian/grubx64.efi (debian). Ces entrées peuvent se visualiser et se gérer sous Linux avec la commande efibootmgr. Si définies, elles sont prioritaires sur le chemin par défaut.
Ces entrées comportent le chemin absolu de l’exécutable, avec l’UUID de la partition (PARTUUID dans blkid) le contenant. Par conséquent, une fois enregistrée dans l’UEFI, il est possible de démarrer depuis une partition n’ayant PAS le flag boot/esp. Cette partition doit toutefois être en FAT32.

Les CD et DVD sont bootables en UEFI via le format ElTorito, comme les BIOS auparavant.

Les disques au format MBR sont bootables aussi sans problème par un système UEFI, tant que la partition à booter est en fat32. La limitation de Windows qui ne peut booter en UEFI que sur GPT vient de Windows et non de la norme UEFI.
(note : Windows n’accepte de s’installer que sur une table de partition correspondant à son type de démarrage, mais il est possible de le faire démarrer sur une table non-prévue en installant les fichiers à la main).

À l’inverse, les disques GPT peuvent être démarrés sur un système BIOS. Si GRUB est utilisé, il a besoin d’une partition dédiée (1Mo, non formatée) avec le flag “bios_grub”. Ceci lui permet de stocker les infos qui sont habituellement stockées dans un espace libre de la MBR (qui est ici utilisé par la table de partition GPT elle-même). Sans quoi la commande grub-install /dev/sdX renverra une erreur de “listes de blocs”. Une fois utilisée, cette partition apparaîtra avec le système de fichiers “grub2 core.img”.
Dans ce cas, la partition ESP ainsi que les flags “boot” et “esp” ne sont pas nécessaires. Ils peuvent toutefois être positionnés, pour faciliter une migration future vers un système EFI. Ceci nécessitera toutefois le remplacement du paquet grub-pc par le paquet grub-efi.

La plupart des UEFI sont de nature 64 bits, mais certains (souvent des PCs assez bas-de-gamme) ont un EFI uniquement en 32 bits. Ceci n’empêche pas le chargement d’un système en 64 bits, mais l’exécutable EFI (grub-efi, syslinux-efi etc) doit être en 32 bits.

Bien que déconseillé, il est possible d’avoir 2 (ou + ?) partitions ESP en même temps sur un disque interne. On peut aussi positionner/enlever les flags boot pour alterner entre 2 ESP.

efibootmgr

Pour lister les entrées, lancer simplement efibootmgr. On peut avoir plus de détails avec efibootmgr -v.

Pour supprimer l’entrée “BootABCD”, on entre
sudo efibootmgr -b ABCD -B

Utilitaires

Le comportement de certains programmes est le suivant :

grub-update : os-prober ne référencera que les exécutables UEFI situés sur la (les ?) partitions ESP (comportant le flag boot)

grub : peut booter sur une partition qui n’est PAS la partition ESP ; peut aussi lancer des OS/noyaux qui sont sur une partition non-ESP

Install Windows : si pas de partition flaggée ESP lors de l’install, il va en créer une dans le premier espace libre sur le disque ; si pas d’espace libre, message “Nous n’avons pas pu créer de partition…” et l’install ne pourra pas continuer.
Si la partition ESP est en NTFS, l’installation échouera en demandant de la formater en FAT32 (toutefois certaines cartes-mères sont capables de démarrer depuis une partition NTFS si on recrée les fichiers manuellement).

Windows : si absent de la liste de démarrage UEFI et que la partition contenant son bootloader est flaggée ESP, alors il s’enregistre dans l’UEFI lors du démarrage et se place en priorité

bcdboot : crée les fichiers de démarrage sur la partition ESP, sauf si le flag /s X: est spécifié, X: étant la lettre assignée à la partition où l’on souhaite créer ces fichiers

veracrypt : lors du chiffrement de la partition système (et du pre-test qui va avec), les fichiers EFI de veracrypt sont écrits sur la partition flaggée ESP
Lors du déchiffrement, les fichiers sont aussi écrits sur la partition flaggée ESP

Ordre des partitions

Si on aime avoir le numéro des partitions qui correspond à leur ordre sur le disque, on peut utiliser la commande
sudo sgdisk -s /dev/sdX

Ou aussi la commande gdisk :

sudo gdisk /dev/sdX
s
p
w
Y

02 Jun 2014, 00:00

Petit mémo rapide pour Samba

Lister les utilisateurs : Si les mots de passe sont stcokés de manière sécurisée (directive passdb backend = tdbsam dans le fichier /etc/samba/smb.conf) sudo pdbedit -L Sinon cat /etc/samba/smbusers

Tous les utilisateurs samba doivent correspondre à un utilisateur Unix sur le système. Pour créer un mot de passe à un utilisateur (ou le modifier), et qu’il puisse donc être utilisé comme identifiant pour une connexion via partage réseau : sudo smbpasswd -a username Pour le supprimer de la base d’utilisateurs samba : sudo smbpasswd -x username

Pour définir si un utilisateur a le droit d’accéder à un partage, il existe, dans les paramètres du partage, la directive valid user = username1 username2 @groupname1 Les droits des utilisateurs sont ensuite définis par 2 paramètres, read only = et write list = . Si on a read only = no alors tout le monde (parmi les valid users) aura accès en lecture/écriture. Si on a read only = yes write list = username1 @groupname1 alors seul l’utilisateur username1 et les utilisateurs du groupe groupname1 auront droit à l’écriture.

Cela peut donner, par exemple : [Reception] comment = reception browseable = yes path = /path/to/reception guest ok = yes read only = no

[private]
   comment = User private folder
   browseable = no # it only made it disappear from broadcasted shares, but doesn't affect the real browseability
   path = /home/user/
   guest ok = no
   valid users = gaetan
   read only = yes
   write list = gaetan

Ces règles ne sont pas valides pour le mode de sécurité security = share

14 May 2014, 00:00

Afficher les Propriétés du serveur d'impression sous 7 et 8 sans imprimante d'installée

Cette boite de dialogue, sous 7 et 8, n’est accessible par clic que via la barre d’actions en haut de l’Explorer, lorsqu’une imprimante est sélectionnée. Si on n’a pas d’imprimante, on ne peut pas.

Il suffit donc de lancer la commande printui /s Le commutateur /s sert à lancer l’interface graphique. Sans lui, on gère tout en ligne de commande.

14 May 2014, 00:00

Executer un processus en tant qu'utilisateur System sous Windows 8 (et probablement Vista et 7)

Parfois, bien que l’on éxécute un programme en tant qu’administrateur de l’ordinateur, on peut se retrouver avec certaines restrictions. Par exemple si l’on veut modifier les lés du registre à HKLM\System\CurrentControlSet\Enum . Pour contourner ceci, on peut lancer l’utilisatire PsExec de Sysinternals, avec les options -i qui permet que le programme soit lancé interactivement sur le bureau de l’utilisateur, et -s qui demande à utiliser le compte system.

Par exemple,

C:\Users\moi\path\vers\psexec.exe -i -s regedit

permettra de modifier le registre à notre guise. À noter qu’il faut lancer la commande dans un shell cmd lancé avec les droits administrateur.

Cette info a été trouvée grâce à ces posts, bien utiles malgré un langage aussi fleuri qu’une sépulture d’ancien combattant un 8 mai.

14 May 2014, 00:00

Supprimer une imprimante fantome sous Windows 7 et 8

Il peut arriver qu’une imprimante ne soit pas supprimable dans le gestionnaire d’imprimantes. Plus d’infos ici : Problème d’installation d’imprimantes dans Windows 7

Imprimante locale

Dans le cas d’une imprimante locale, il s’agit le plus souvent d’une file d’attente qui ne veut pas se vider. Or il est impossible de supprimer une imprimante dont la file d’attente n’est pas vide. Pour forcer le vidage de la file d’attente :

  • couper le service spouleur d’impression, soit par l’interface graphique (services.msc), soit avec la commande net stop spooler
  • supprimer tous les éléments du dossier C:\Windows\System32\spool\PRINTERS\
  • relancer le service Spouleur d’impression (net start spooler)

Les files d’attente doivent être vides, et les imprimantes peuvent être supprimées.

Imprimante réseau

Dans le cas d’une imprimante réseau, ce peut être un peu plus compliqué. Il arrive qu’une imprimante réseau, même avec une file d’attente vide, ne puisse être supprimée. Ceci est particulièrement vrai lors d’une imprimante déployée automatiquement par une GPO (mal) appliquée à un domaine.

Sous 7

Sous 7, il suffit généralement d’aller dans la base de registre, d’aller à la clé HKCU\Printers\Connections et de supprimer la clé correspondant à l’imprimante récalcitrante. Un coup de redémarrage de Spouleur d’impression (voir ci-dessus) et c’est réglé, elle n’apparaît plus.

Sous 8

Sous Windows 8, bien que cette clé existe aussi, ce n’est pas elle qui contrôle l’existence des imprimantes. Il faut aller éditer la base de registre en tant qu’utilisateur System (voir ce post), et aller à la clé HKLM\SYSTEM\CurrentControlSet\Enum\SWD\PRINTENUM\, trouver la ou les clés des imprimantes à supprimer (via la valeur FriendlyName), et les supprimer. Si les connexions automatiques via GPO aux imprimantes partagées sont à refaire au propre, il faut redémarrer l’ordinateur, puis réappliquer la commande gpupdate /force.

Normalement, cela devrait suffire. Si l’on souhaire effacer toutes les traces de l’imprimantes dans le registre, voilà les différents emplacements mentionnant une imprimante partagée dans le registre. Notez que je mentionne HKCU pour l’utilisateur concerné, mais que si regedit est lancé via psexec, il faudra aller chercher dans HKU\SID.

  • HKCU\Printers\Connections

  • HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices\

  • HKCU\Software\Microsoft\Windows NT\CurrentVersion\PrinterPorts\

  • HKCU\Software\Policies\Microsoft\Windows NT\Printers\PushedPrinterConnectionStore\{XXXXX-XXX-XXX....XXXX}\

  • HKLM\Software\Microsoft\Windows NT\CurrentVersion\Print\Providers\Client Side Rendering Print Provider\SID\Printers\Connections\

  • HKLM\Software\Microsoft\Windows NT\CurrentVersion\Print\Providers\Client Side Rendering Print Provider\Servers\SERVEUR-D-IMPRESSION-DU-DOMAINE\

  • HKLM\SYSTEM\CurrentControlSet\Enum\SWD\PRINTENUM\

Penser à redémarrer la machine après ces manips, et éventuellement à réappliquer la commande gpupdate /force.

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.