|
UAC pose de réels problèmes et dégrade fortement la première
impression des utilisateurs (et pour cause : les premières
choses que l'on effectue après installation
sont des installations de
drivers, et installation de programmes, ce qui ne cesse de
demander des confirmations d'élévations de privilèges).
SOMMAIRE :
1 -
Comment fonctionne UAC ?
2 -
Pourquoi obtient-on des
accès refusés tout en étant
membre du groupe
administrateur local ?
3 -
Quelles sont les différences
entre le compte intégré
(builtin) administrateur et
les membres du groupe
Administrateurs ?
4 -
Comment désactiver UAC pour
les membres du groupe
Administrateurs ?
5 -
Comment désactiver UAC pour
un utilisateur ?
6 -
Comment désactiver UAC
complètement ?
7 - Je
suis connecté avec un compte
membre du groupe local
administateurs en mode Admin
Approval et dans une invite
de commande, je ne peux pas
créer de fichiers sous la
racine c:. Pourquoi?
8 - Le
compte intégré
Administrateur (ou
Administrator) n'apparait
pas dans la fenêtre de
Logon. Est-il possible de le
faire apparaitre ?
9 - Au
cours d'une même session, je
voudrais donner mon
consentement une seule fois
lorsque j'exécute plusieurs
fois la même application,
est ce possible ?
10 -
Comment savoir si UAC va
demander une confirmations
en lançant un programme /
une icône / un menu ?
11 -
J'exécute runas /user:admin
cmd.exe, admin étant un
membre du groupe
administrateurs et cela me
génère un token restreint.
Ne devrais-je pas recevoir
un token complet?
12 -
Est-il possible,
temporairement, d'éviter le
mécanisme UAC ?
13 -
Comment UAC gère l'ouverture
de session ?
14 -
Comment exécuter une
application
en
mode élevé rapidement ?
15 - Pourquoi
ne peut-on pas accéder aux
partages administratifs ou
fonctions d'administration
(accès distant au registre,
Gestion de l'ordinateur, ..)
sous Vista ?
16 - Comment
réduire les nuisances de UAC sans désactiver UAC ?
17 - Qu'est
ce que la virtualisation UAC ?
18 - Comment lancer un programme sans qu'UAC ne
demande confirmation ?
|
|
|
|
1
- Comment fonctionne UAC
? |
Sous
Vista, les membres du groupe
local administrateurs ont 2
jetons de
sécurité ( Token ), un token
complet ainsi qu'un token
restreint ( filtré).
Le token filtré est le token
complet auquel on a retiré
tous les privilèges.
Vous pouvez le visualiser en
vous loguant en tant que
membre du groupe
administrateurs et en
lançant whoami /all dans 2
invites de commande
(cmd.exe) différentes
:
_
une
première
en
lançant simplement cmd.exe,
_
l'autre en exécutant cmd.exe par un clic
droit "lancer en tant qu'administrateur".
Vérifiez que le token dans l'invite de commande non élevée n'a
aucun
privilèges.
Les utilisateurs qui ne sont pas membres du groupe local
administrateur ont
quand à eux un seul token.
Les utilisateurs membres du groupe local
administrateurs tournent par défaut
avec leur token restreint.
Lorsqu'une tâche nécessite un privilège élevé,
UAC demande la permission d'utiliser le
token complet ( élévation de
privilèges).
En fonction du paramétrage UAC, cela peut être fait de manière
transparente
( no prompt ), par consentement ou saisie
de mot de passe.
Le mode par défaut pour les membres du groupe
administrateurs est celui du
consentement ( Admin Approval Mode ).
Le compte intégré administrateur tourne lui quant
à lui avec son token
complet, il n'a donc pas besoin de donner son
consentement pour utiliser un
autre token.
L'élévation de privilège s'opère donc pour les
comptes disposant de 2
tokens.
Un utilisateur standard n'ayant qu'un token restreint, UAC ne leur
proposera
pas d'utiliser un autre token et l'utilisateur
recevra un Access Denied ou
équivalent en tentant d'exécuter une tache
nécessitant des privilèges plus
élevés.
Par contre, s'il exécute une application "en tant
qu'administrateur", il ne passe pas par le mécanisme UAC.
En effet, cela crée tout d'abord un nouveau
Token d'administration complet
qui est alors utilisé pour lancer l'application (
CreateProcessAsUser auquel
on passe le token d'administrateur en
paramètre).
C'est pourquoi l'exécution d'une
invite de commande "en tant
qu'administrateur" vous ouvre en fenêtre
dans
laquelle vous avez les privilèges complets.
|

|
|
|
2
- Pourquoi
obtient-on des accès refusés tout en étant membre du groupe
administrateur local
? |
Exemple
:
Je suis membre du groupe
local administrateurs en
mode Admin Approval (demande
de prompt pour élévation) et
pourtant lorsque je lance
bcdedit ou
diskpart dans une invite de
commande, je reçois un
access denied.
Windows ne devrait-il pas me
demander la confirmation
d'exécution ?
Les développeurs d'application pour Vista doivent
fournir un fichier
d'entête (manifest)
qui décrit
entre autre le niveau d'exécution requis par
l'application ( c'est à dire le
choix d'utilisation du token complet ou restreint
).
Il y a 3 niveaux d'éxécution :
_ AsInvoker
:
signifie que l'application doit s'exécuter avec
le token actuel de
l'appelant et donc ne pas demander
d'élévation de privilèges.
_
requireAdministrator
:
signifie que l'application doit s'exécuter avec un
token complet d'administration et donc UAC
peut vous demander
l'accès au token complet si vous tournez
avec le token restreint.
_
highestAvailable :
l'application fonctionne avec le privilège le plus haut auquel
l'utilisateur accède.
Diskpart et bcdedit demandent le niveau d'exécution AsInvoker.
Si l'administrateur lance une invite de commande
avec son token restreint,
et lance bcdedit ou diskpart par exemple, le
contexte d'exécution est celui
du token restreint et comme AsInvoker ne
demande pas d'élévation de
privilèges, un
refus d'accès (accès
denied)
est retourné.
En lançant cmd.exe par un clic droit et "Run as
administrator", le token utilisé pour lancer
bcdedit ou diskpart est alors le token complet.
Vous pouvez déterminer le
niveau d'exécution requis par chaque tache
d'administration fournie par Microsoft
en examinant les fichiers programmes :
-
Téléchargez
strings.exe de sysinternals.
- Dans %WINDIR%System32, lancez strings.Exe *.exe | findstr -i
"AsInvoker"
- Dans %WINDIR%System32, lancez strings.Exe *.exe | findstr -i
"highestAvailable"
- Dans %WINDIR%System32, lancez strings.Exe *.exe | findstr -i
"requireAdministrator"
Par exemple :
- bcdedit requiert AsInvoker.
- mmc requiert highestAvailable.
- defrag requiert requireAdministrator.
|
|
3
- Quelles sont les différences
entre le compte intégré (builtin) administrateur et les membres
du groupe Administrateurs? |
Par
défaut, le compte intégré
administrateur est désactivé
et n'apparait pas
dans
la fenêtre de Logon.
(il n'est pas utilisable et
ne possède pas de mot de
passe)
Par défaut, les membres du
groupe local Administrateurs
exécutent les
applications avec leur Token
restreint et doivent
approuver toute demande
d'exécution avec des
privilèges plus élevés : (
Mode Admin Approval ).
Le compte intégré
administrateur exécute les
applications directement
avec
son
token complet, UAC n'a donc
bas besoin de rentrer en
jeu.
|
|
4
- Comment désactiver
UAC pour les membres du groupe Administrateurs ? |
Vous
pouvez désactiver cette
fonctionnalité en éditant
les stratégies de
sécurité avec secpol.msc ou
gpedit.msc.
Naviguez jusqu'à
Configuration Ordinateur ->
Paramètres Windows ->
Paramètres de sécurité ->
Stratégies locales ->
Options de sécurité.
désactivez la stratégie
"Contrôle compte utilisateur
: exécuter les comptes
d'administrateurs en mode
d'approbation
d'administrateur" ("Run all
administrators in Admin
Approval Mode"
).
Rebootez ou lancez gpupdate /force puis
fermez / ouvrez votre session
pour prendre en compte
ces changements.
|
|
5
- Comment désactiver UAC pour
un utilisateur ? |
_
Panneau de configuration :
Pour
un utilisateur, vous pouvez
désactiver l'utilisation
d'UAC
en utilisant le Panneau de
Configuration :
Panneau de configuration ->
Comptes utilisateurs ->
activer ou désactiver le
contrôle de compte UAC(pop
up UAC) ->
décochez "Utiliser le
contrôle des comptes
d'utilisateurs pour vous
aider à protéger votre
ordinateur.
|
|
6 -
Comment désactiver UAC complètement ? |
_ Base
de registre :
La clef de la base de
registre est :
:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"EnableLUA"=dword:00000000
_ en utilisant MSCONFIG :
Démarrer / Executer MSCONFIG,
Cliquez sur l'onglet Tools
Sélectionnez Disable UAP, et cliquez sur Launch
Redémarrez l'ordinateur
|
|
8 - Le compte intégré
Administrateur (ou Administrator) n'apparait pas dans la fenêtre
de Logon. Est-il possible de le faire apparaitre ? |
Ce compte apparait lorsqu'il n'y a pas de membres
dans le groupe local
Administrateurs.
Il est également possible de le faire apparaitre
en ajoutant un clé de
registre pour le compte administrateur dans
HKLM\SOFTWARE\Microsoft\Windows
NT\CurrentVersion\Winlogon\SpecialAccounts\UserList.
Ajoutez une nouvelle valeur nommée Administrateur
et positionnez la valeur à
1.
Pour le cacher de la fenêtre d'accueil, positionnez cette valeur à 0.
|
|
9 - Au cours d'une même
session, je voudrais donner mon consentement une seule fois
lorsque j'exécute plusieurs fois la même application, est ce
possible ? |
Microsoft ne l'a pas prévu
(Grrrrrrrrrrrrrrrrrrrrrrrrr !).
L'idée d'UAC est d'empêcher un code
malveillant de s'exécuter sans votre
consentement si vous désirez bénéficier de cette
protection UAC.
Donner son consentement une fois pour toute pourrait conduire un code
malveillant à utiliser à votre insu et de
manière silencieuse un contexte de
sécurité plus élevé que le votre ( token complet
).
|
|
10 -
Comment savoir si UAC va demander une confirmations en lançant
un programme / une icône / un menu ? |
Microsoft a conçu tout un jeu d'icônes et logos que les développeurs
doivent inclure dans leur programmes, en voici des exemples :
|
Icône :
|
 |
User
resource: IDI_SHIELD |
|
Bouton
:
|
 |
Button_SetElevationRequired(hwndButton) |
|
Lien :
|
 |
Layout IDI_SHIELD next to syslink
Load IDI_SHIELD and set as command
link icon |
|
Menu
contextuel :
|
 |
Icon support
|
|
|
11 - J'exécute runas
/user:admin cmd.exe, admin étant un membre du groupe
administrateurs et cela me génère un token restreint. Ne
devrais-je pas recevoir un token complet? |
L'implémentation actuelle de UAC ne permet pas une élévation de
privilèges en ligne de commande, ceci afin d'éviter une utilisation par
script.
Cette décision est consistante
avec le runas fourni dans XP/2003, qui ne permettait déjà plus de
spécifier un mot de passe en ligne de commande.
|
|
12 -
Est-il possible, temporairement, d'éviter le mécanisme UAC ? |
Pour cela,
il faut faire tourner le shell avec un token complet d'administrateur au
lieu d'un token d'utilisateur final ou d'un token filtré.
- Lancez une invite de commande
par un click droit runas administrator.
- Killez explorer.exe.
- Dans l'invite de commande
administrateur, lancez un nouvel explorer ( explorer.exe).
Ce nouveau shell hérite alors
du token complet de l'administrateur.
Les processus enfant alors
lancés au travers de ce nouveau shell sont donc éxécutés directement
avec un token complet, sans passer par le mécanisme d'élévation UAC.
|
|
13 -
Comment UAC gère l'ouverture de session ? |
Les applications qui
nécessitent une élévation de privilège sont bloquées.
Dans ce cas l'utilisateur est prévenu par un
message dans la barre des taches après la démarrage.
Dans ce cas en cliquant sur le message
l'utilisateur peut éxécuter l'application
qui a été bloquée ou choisir les
applications à autoriser.
Voici les
sources de programmes bloquées :
- Menu
démarrage utilisateur
- clefs RUN
du registre utilisateur
- Menu
démarrage machine
-
clefs RUN de la machine
Quelques
exceptions :
les clefs
RUNOnce (pour permettre la fin de l'installation d'un programme après
redémarrage)
les
applications imposées par les stratégies systèmes dans les clefs RUN
|
|
14 -
Comment exécuter une
application en mode élevé rapidement ? |
Si
vous avez besoin de lancer
régulièrement des
applications en mode élevé :
- Cliquez sur le
bouton Démarrer
- Dans la zone
Rechercher
saisissez le nom du programme que vous souhaitez lancer en
mode élevé (cmd.exe, notepad
- Appuyez sur Ctrl +
Shift + Enter
- Vous devez
confirmer la demande d'élévation
|
|
15 -
Pourquoi ne peut-on pas accéder aux
partages administratifs ou fonctions d'administration (accès
distant au registre, Gestion de l'ordinateur, ..) sous Vista ? |
UAC
interdit l'utilisation de
privilèges administrateur
local par le réseau par
défaut.
Il est possible de
désactiver l'UAC pour
l'accès à distance
uniquement :
Démarrer, Exécuter puis
tapez regedit
Ouvrez :
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system.
Créez une nouvelle valeur
Dword nommée
LocalAccountTokenFilterPolicy
Modifiez ça valeur
hexadécimale à 1
Redémarrer l'ordinateur
Vous pourrez désormais
accéder aux partages
administratifs et
administrer à distance le PC
via les consoles MMC avec un
compte membre du groupe
Administrateurs.
Pour réactiver l'UAC pour
l'accès à distance, il
suffira de supprimer la
valeur DWORD, ou de lui
mettre la valeur 0
|
|
16 - Comment réduire les nuisances de UAC
sans désactiver UAC ? Supprimez seulement l'alerte d'élévation
de privilèges |
Il existe un moyen simple de
désactiver l'UAC, mais vous
n'êtes alors plus du tout
protégé : dans ce cas même
IE7 fonctionne en mode "sans
protection", ce qui doit
être évité.
Il existe une solution qui
ne désactive pas l'UAC mais
évite seulement l'apparition
de l'alerte d'élévation de
privilèges lorsque vous
utilisez un compte
administrateur. Cette
fonction affaiblit votre
niveau de sécurité, mais
Vista demeure toutefois
mieux protégé que lors d'une
véritable désactivation de
l'UAC: par exemple, le mode
protégé d'IE7 continue
d'être opérationnel.
-
Version Professional ou
Integrale de Vista :
- Ouvrez le menu
Démarrer et saisissez "secpol.msc"
dans le champ de
recherche et appuyer sur
Entree
- Déployez
Paramètres de sécurité \
Stratégies locales \
Options de Sécurité.
- Repérez l'entrée
"Contrôle de compte
d'utilisateur:
comportement de l'invite
d'élévation pour les
adminsitrateurs".
- Double cliquez dessus
et choisissez
Elever les privilèges
sans invite utilisateur.
- Redémarrez le PC pour
activer cette
modification du système.
-
Autres version :
Il faut éditer le registre
manuellement :
Procédez ainsi :
_ cliquer sur le Menu
démarrer
_ lancer Regedit
_ Ouvrir la clé :
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
_ Modifier la valeur
"ConsentPromptBehaviorAdmin"
: remplacer "2" par "0".
|
|
17 -
Qu'est ce que la virtualisation UAC ? |
Windows Vista permet aux
applications qui ne sont pas
écrites pour Vista de
s’exécuter dans les comptes
d’utilisateur standard à
l’aide de la virtualisation
du système de fichiers et de
l’espace de noms du
registre. Lorsqu’une
application modifie un
emplacement de système
global dans le système de
fichiers ou dans le
registre, et que cette
opération échoue parce que
l’accès lui est refusé,
Windows redirige l’opération
vers une zone propre à
l’utilisateur. Lorsque
l’application lit à partir
d’un emplacement système
global, Windows cherche
d’abord des données dans la
zone propre à l’utilisateur
et, si aucune donnée n’est
présente, permet la
tentative de lecture à
partir de l’emplacement
global.
Vous pouvez voir l’état de
virtualisation d’un
processus en ajoutant la
colonne Virtualisation à la
page Processus du
Gestionnaire des tâches.
Microsoft recommande que les
programmes d’installation
d’application globaux qui
comptent s’exécuter avec les
droits administratifs créent
un répertoire sous le
répertoire %ProgramFiles%
pour stocker les fichiers de
l’application exécutables et
les données auxiliaires et
créer une clé sous
HKEY_LOCAL_MACHINE\Software
pour leurs paramètres
d’application. Lorsqu’une
application s’exécute, elle
peut le faire dans
différents comptes
utilisateur et devrait donc
enregistrer les données
spécifiques à l’utilisateur
dans un répertoire %AppData%
propre à chaque utilisateur
et enregistrer des
paramètres propres à chaque
utilisateur dans le profil
d’annuaire de l’utilisateur
sous HKEY_CURRENT_USER\
Software. Les comptes
utilisateur standard n’ont
pas de droits d’écriture
dans le répertoire
%ProgramFiles% ou dans
HKEY_LOCAL_MACHINE\Software,
mais puisque la plupart des
systèmes de Windows sont à
utilisateur unique et que la
majorité des utilisateurs
étaient administrateurs
jusqu’à Windows Vista, les
applications qui
enregistrent de façon
inexacte des données
utilisateur et des
paramètres à ces
emplacements fonctionnement
quand même.
Windows Vista permet à ces
applications d’héritage de
s’exécuter dans les comptes
d’utilisateur standard à
l’aide de la virtualisation
du système de fichiers et de
l’espace de noms du
registre. Lorsqu’une
application modifie un
emplacement de système
global dans le système de
fichiers ou dans le
registre, et que cette
opération échoue parce que
l’accès lui est refusé,
Windows redirige l’opération
vers une zone propre à
l’utilisateur. Lorsque
l’application lit à partir
d’un emplacement système
global, Windows cherche
d’abord des données dans la
zone propre à l’utilisateur
et, si aucune donnée n’est
présente, permet la
tentative de lecture à
partir de l’emplacement
global.
Les emplacements de système
de fichiers qui sont
virtualisés pour les
processus d’héritage sont
%ProgramFiles%,
%ProgramData% et
%SystemRoot%, à l’exclusion
de certains sous-répertoires
spécifiques. Cependant, tous
les fichiers possédant une
extension exécutable, y
compris .exe, .bat, .scr,
.vbs et autres, sont exclus
de la virtualisation. Cela
signifie que les programmes
qui se mettent à jour à
partir d’un compte
utilisateur standard
échouent au lieu de créer
des versions privées de
leurs exécutables qui ne
sont pas visibles par un
administrateur exécutant un
programme de mise à niveau
global.
La
virtualisation de registre
est implémentée de façon
légèrement différente de la
virtualisation de système de
fichiers. Les clés de
registre virtualisées
incluent la plupart de la
branche
HKEY_LOCAL_MACHINE\Software,
mais il existe de nombreuses
exceptions, comme ce qui
suit :
HKLM\Software\Microsoft\Windows
HKLM\Software\Microsoft\Windows
NT
HKLM\Software\Classes
Seules les clés qui sont
habituellement modifiées par
les applications, mais sans
provoquer de problèmes de
compatibilité ou
d’interopérabilité, sont
virtualisées. Windows
redirige les modifications
de clés virtualisées par une
application vers un registre
de racine virtuelle de
l’utilisateur sur
HKEY_CURRENT_USER\Software\Classes\VirtualStore.
La clé est située dans la
ruche des Classes de
l’utilisateur,
%LocalAppData%\Microsoft\Windows\UsrClass.dat,
qui, comme toutes les autres
données de fichier
virtualisées, n’erre pas
avec un profil utilisateur
errant.
Au lieu de maintenir une
liste fixe d’emplacements
virtualisés comme Windows le
fait pour le système de
fichiers, l’état de
virtualisation d’une clé est
enregistré comme un
indicateur,
REG_KEY_DONT_VIRTUALIZE,
dans la clé elle-même.
L’utilitaire Reg.exe peut
afficher l’indicateur, ainsi
que deux autres indicateurs
liés à la virtualisation,
REG_KEY_DONT_SILENT_FAIL et
REG_KEY_RECURSE_FLAG. cf
Windows Vista - Le Registre
|
|
18
- Comment lancer un programme sans qu'UAC ne demande
confirmation ?
|
De nombreux outils et
astuces permettent de créer
des raccourcis ne
nécessitant pas de
confirmation d'élévation de
privilèges.
a - Créer une tâche
: (source :
http://www.howtogeek.com/howto/windows-vista/create-administrator-mode-shortcuts-without-uac-prompts-in-windows-vista/
)
|
Lancez le
Planificateur de
tâches, puis créez
une tâche : |
 |
Donnez un nom à la
tâche et cochez
Exécuter avec les
autorisation
maximales.
Dans l'onglet
Actions, définissez
le nom du programme
ou script à lancer
|
 |
|
Vous pouvez tester
la tâche en cliquant
dessus puis
sélectionnez
Exécuter |
 |
Il ne vous reste
plus qu'à créer un
raccourci lançant la
tâche :
Cliquez droit sur le
bureau, puis
sélectionnez Nouveau
/ Raccourci |
|
La ligne de commande
se présente sous la
forme :
schtasks /run /tn
"NOMTACHE"
Vous devez remplacer
NOMTACHE par le nom
de la tâche que vous
venez de créer.
|
 |
|
NB : vous pouvez
ensuite
personnaliser le
raccourci telles que
la taille de la
fenêtre initiale et
l'icône. |
 |
b - En utilisant
RunPlus : (source :
http://www.mclaveau.com/vista/outils.html
)
RUNPLUS est
un petit utilitaire résident
en mémoire, et appelable
avec la touche ²
(en haut à gauche du
clavier).
Il contient un menu,
permettant de lancer, très
rapidement, une sélection de
commandes. Comme RUNPLUS est
lancé en tant
qu'administrateur, il ne
déclenche qu'une seule fois
la confirmation par l'UAC.
Ensuite, tous les programmes
lancés par son intermédiaire
sont lancés directement.
Pour télécharger RUNPLUS,
cliquer_ici.
c - En utilisant un
PowerToys (source :
http://technet.microsoft.com/fr-fr/magazine/cc510320(TechNet.10).aspx
)
L'opération consiste à
utiliser un batch
(elevate.cmd) qui permet
l'élévation à l'aide d'un
programme.
runas /user:mydomain\admin
"elevate mmc.exe%windir%\system32\dsa.msc"
d - En utilisant un
gadget (source :
http://technet.microsoft.com/fr-fr/magazine/cc510320(TechNet.10).aspx
)
|
En téléchargeant le code
associé à l'article, vous
trouverez un Gadget,
permettant d'exécuter un
programme simplement en le
glissant dans le gadget :
Le
téléchargement est ici :
(à décompresser dans un
répertoire temporaire) :
|
 |
Vous n'avez maintenant plus
aucune excuse pour
désactiver UAC.
(c) Laurent Gébeau
Laissez vos commentaires
ici.
|