Exécution
d'applications sous un compte administrateur
Principes
Certaines applications ou tâches diverses nécessitent d'être
exécutées avec des privilèges de compte administrateur. Or si
l'utilisateur en cours n'appartient pas à ce groupe, cela est impossible. Afin
de contourner cette difficulté, Microsoft a prévu deux outils :
- SU.EXE du Resource Kit de NT
- RUNAS.EXE (intégré dans Windows à partir de Windows 2000).
Le problème majeur posé par ces deux outils est que l'administrateur
doit être présent physiquement près de l'ordinateur de l'utilisateur afin
de saisir de façon interactive son nom et mot de passe (et si
l'administrateur communique ces informations, cela remet en cause la sécurité du
système).
En particulier, ni SU, ni RUNAS ne permettent d'intégrer dans
une ligne de commande le mot de passe de l'administrateur, qui
doit obligatoirement être saisi dynamiquement (exception faite de RUNAS
sous Windows XP PRO, avec le commutateur /savecred, qui permet de
mémoriser ce mot de pase pour une exécution ultérieure, mais qui est peu
pratique).
Le script xrunas.vbs que j'ai écrit
contourne cette difficulté, mais la sécurité est considérablement compromise,
puisque le mot de passe du compte administrateur va apparaître en clair
dans la commande du script.
C'est pourquoi j'ai conçu SUPEREXEC, logiciel utilitaire (écrit en
Delphi), qui affranchit de la contrainte de saisie en temps réel du mot de passe
tout en garantissant la sécurité du système.
SUPEREXEC fonctionne sous les systèmes
d'exploitation suivants :
- Windows 2000 (Professionnel et Serveur)
- Windows XP (Professionnel et Édition Familiale)
- Windows 2003
(Il ne fonctionne pas sous Windows NT4 car certaines fonctions
réseau et de chiffrement sont absentes dans ce système) |
Il permet de préparer une exécution, en enregistrant dans la Base
de Registres (branche HKLM) les informations chiffrées suivantes :
- le nom du compte utilisateur ou groupe d'utilisateurs, ainsi que le domaine ou
groupe de travail concerné
- l'application concernée (exécutable, script, composant
enfichable,...)
- les paramètres passés à l'application
- le dossier de travail
- le profil utilisateur (celui de l'utilisateur concerné ou celui
du compte administrateur)
- le nom et le mot de passe d'un compte administrateur
- des paramètres éventuels supplémentaires :
- une date limite d'exécution de l'application
- un compteur d'exécution
- le profil qui sera utilisé (celui de l'utilisateur ou celui
de l'administrateur)
- le libellé du raccourci affiché sur le bureau de
l'utilisateur.
TOUTES
ces informations sont intégralement
CHIFFRÉES
dans la Base de Registres.
(à l'aide de l'API de chiffrement de Windows)
SUPEREXEC se compose de 2 exécutables :
- SuperExec.exe
c'est l'application principale, avec une interface graphique, réservée aux
administrateurs, et qui sert à préparer les lancements d'applications.
- SE.exe
c'est un "run-time", en mode console, destiné aux utilisateurs, et qui sert
à lancer les applications préparées par SuperExec.exe.
Dans les versions antérieures à la V2.0, il n'y avait qu'un
seul exécutable, qui détectait le niveau de privilèges de l'utilisateur, et
servait aussi bien à la préparation qu'à l'exécution des applications. Compte
tenu de la taille grossissante du logiciel (900 ko) il a été décidé de scinder
en 2 ces fonctionnalités, afin d'obtenir une taille raisonnable pour le module
runtime (150 ko).
- soit en mode administrateur
- soit en mode utilisateur.
Préparation
des applications (mode administrateur)
SUPEREXEC fonctionne à la fois
localement et à distance, si bien qu'il est possible de gérer de la
même façon aussi bien l'ordinateur local que les ordinateurs de n'importe quel
groupe de travail ou domaine accessible depuis le réseau.
Quand un administrateur lance SUPEREXEC, une boite de dialogue s'affiche :
|
Cartographie
du réseau local
(groupes / domaines) |
|
Saisie du compte administrateur
et de son mot de passe.
|
|
|
domaines et groupes de travail
ordinateurs de chaque domaine ou groupe de travail |
|
Chaque champ de saisie est doté d'une bulle d'informations, complétée par un
message dans la barre d'état. |
Boutons de création, modification
et suppression d'applications |
|
Saisie manuelle du nom d'un ordinateur |
|
Liste des applications autorisées.
Un clic droit sur l'une d'elle affiche des informations
détallées. |
|
Liste des comptes
de l'ordinateur |
* |
groupes locaux |
* |
groupes globaux |
* |
comptes
locaux |
* |
comptes globaux |
|
les comptes et groupes
globaux ne figurent que si l'ordinateur
appartient à un
domaine (affichés en italique)
|
Boite à onglet affichant |
* |
l'historique des opérations |
* |
un tableau de paramètres |
* |
une aide générale |
* |
la légende des différentes icônes |
* |
la licence du logiciel |
* |
les informations de version. |
|
* |
appliquer
les modifications opérées (enregistrement dans la Base de
Registres) |
* |
vérifier
les informations stockées dans la BDR |
* |
tout
effacer |
* |
copier
le logiciel sur la machine distante |
* |
quitter
le logiciel |
|
Pour autoriser une (ou plusieurs) application à un utilisateur, procéder ainsi :
- Sélectionner l'ordinateur
dans la liste (par défaut, l'ordinateur local est présélectionné)
|
un clic droit sur l'un des
ordinateurs de la liste provoque l'affichage d'une fenêtre popup
d'informations : |
|
|
On peut aussi saisir manuellement le nom de
l'ordinateur dans le
champ prévu à cet effet (cas d'un ordinateur caché par la commande net
server config /hidden:yes) |
|
Le fait
de changer de domaine ou groupe de travail peut nécessiter un certain
temps
d'attente, pendant lequel le logiciel semble ne pas répondre. Cela est
inhérent aux mécanismes de parcours réseau de Windows, et dépend de la
configuration du réseau local. Il suffit de patienter.
|
|
En raison des restrictions réseau intrinsèques à Window XP Edition Familiale,
SUPEREXEC ne peut pas gérer à distance un ordinateur
fonctionnant sous ce système.
Par contre il fonctionne localement
sans problème sous ce système. |
- Sélectionner un ou plusieurs comptes utilisateur dans la liste.
|
L'onglet Légende donne les significations des icônes et polices de
caractères : |
|
|
Par ailleurs, un clic droit sur un compte
ou un groupe affiche des informations à
son sujet : |
|
|
Si on sélectionne un compte désactivé, cette sélection n'est pas
prise en compte et il y a apparition de ce message : |
|
- Appuyer sur le bouton
Nouveau
|
Une boite de dialogue à onglets s'ouvre,
ave l'onglet Application affiché
par défaut : Sélectionner le fichier désiré dans le
dossier de l'ordinateur voulu.
Le développement des dossiers est effectué par un simple clic.
Cette opération peut prendre un certain temps dans le cas de dossiers
volumineux.
Il en va de même si on sélectionne un ordinateur situé dans un autre
domaine ou groupe de travail. |
|
|
Un filtrage des noms de fichiers est appliqué. Il est fonction des
options choisies dans l'onglet Paramètres de la boite de dialogue
principale :
Si le fichier sélectionné n'est pas un exécutable, l'application
associée à l'extension du fichier sera automatiquement lancée lors de
l'exécution du raccourci par l'utilisateur final. |
|
|
On
peut accéder aussi bien à l'ordinateur local (choix par défaut,
avec %systemroot% comme dossier initial) qu'à
n'importe quel ordinateur du réseau, de tout domaine ou groupe de
travail. Il suffit que le compte administrateur sous lequel on a lancé
SUPEREXEC soit bien administrateur de l'ordinateur distant concerné.
(les
partages administratifs sont utilisés). |
|
|
définir éventuellement les paramètres qui seront passés à
l'application :
Dans le cas où l'application choisie est en mode console,
une case à cocher permet de maintenir ouverte la fenêtre à la
fin de l'exécution. |
|
Les paramétrages suivants,
réalisés depuis les autres onglets de la boite de dialogue, sont
facultatifs. |
|
Onglet Dossier de travail
On y définit :
- le dossier de travail de l'application
(obligatoirement sur l'ordinateur de l'utilisateur)
- le profil qui sera utilisé
Ce profil peut-être :
- celui de l'utilisateur
- celui de l'administrateur
Cela affecte essentiellement les variables d'environnement telles que
- %USERPROFILE%
- %USERNAME%
- %TEMP%
- %TMP%
|
|
|
Onglet Raccourci
On y définit :
- le libellé du raccourci (par défaut, c'est le nom du
fichier sans extension ni chemin qui est retenu)
- l'emplacement du raccourci, qui peut-être :
- le bureau
- le dossier de démarrage du menu démarrer
- la clef runonce de la base de registres
Cela est utile pour l'installation de logiciels avec
de privilèges administrateur. L'entrée dans la clef étant
automatiquement supprimée après exécution.
|
|
|
Onglet limitations
On y définit éventuellement :
- une Date limite et définir une
date limite d'exécution de l'application
sélectionnée.
Si c'est le cas, l'utilisateur n'aura plus le droit
d'exécuter l'application passé cette date.
- un Compteur d'exécution de l'application sélectionnée.
Si
c'est le cas, l'utilisateur ne pourra exécuter l'application que ce nombre
de fois au maximum.
- l'affichage (ou non) des messages
de dépassements. Par exemple, il peut être souhaitable de
désactiver cet affichage dans le cas d'installation silencieuse
de logiciel.
|
Si on définit une date antérieure à la date actuelle, un message le
signale et une icône
apparaît dans la liste des applications
|
|
- Appuyer sur le bouton
OK
- Une nouvelle application apparaît dans la liste :
|
Un clic droit sur la nouvelle application affiche une fenêtre
popup résumant ses propriétés:
|
On peut changer les paramètres de l'application à tout moment en appuyant sur le
bouton Modifier, et même la retirer de la liste à
l'aide du bouton Supprimer.
Si des applications périmées (soit par la date, soit parce que le
nombre d'exécutions a été dépassé), un bouton Retirer permet de
retirer en une seule manoeuvre toutes ces applications.
- Une fois qu'on a fini de modifier la liste des applications pour les
différents comptes d'un ordinateur, on appuie sur le bouton Appliquer.
Cela se traduit par :
- le chiffrement et l'enregistrement de toutes les données
dans la Base de Registres de l'ordinateur sélectionné
- la création automatique de tous les
raccourcis
correspondants, suivant le cas :
- sur le bureau de l'utilisateur (ou de "All
users" si l'application concerne un groupe d'utilisateurs).
- dans le menu de démarrage de l'utilisateur
(ou de "All users")
- dans la clef HKCU\Software\Microsoft\Windows\CurrentVersion\Runonce
(uniquement si l'application concerne un utilisateur, et non pas un
groupe)
Chaque raccourci a les caractéristiques suivantes :
- il pointe vers SE.EXE, le runtime de
SUPEREXEC, auquel est passé en paramètre le
nom de l'application (ou fichier) autorisée.
- Son icône est celle de l'application (ou de
l'application associée dans le cas d'un fichier non exécutable)
- Le libellé (défini par l'administrateur ou généré
automatiquement) est suivi de
la chaîne [ADM], afin d'indiquer son caractère spécial
- la copie automatique de SE.EXE dans le dossier
%systemroot% de l'ordinateur sélectionné
(seulement dans le cas ou
l'ordinateur est distant, et si SE.EXE est inexistant ou de
version antérieure sur cette machine)
- A partir de cet instant, l'utilisateur peut exécuter les
applications qui lui ont été autorisées.
|
Attention dans le choix des
applications autorisées!
Il faut absolument, dans la mesure du possible, éviter
d'autoriser des applications permettant de lancer d'autres
applications, car ces dernières seront exécutées également
avec des privilèges administrateur.
Par exemple si on autorise le processeur de commandes (%systemroot%\system32\CMD.EXE),
l'utilisateur pourra exécuter n'importe quel autre
logiciel, script, composant enfichable,..., avec des droits
administrateur. |
|
Exécution
des applications (Mode
utilisateur)
Il permet l'exécution d'application via SE (avec les privilèges
administrateur)
Un utilisateur non administrateur peut ainsi lancer une application :
- soit par double-clic sur un raccourci créé précédemment
- soit en exécutant SE.EXE suivi du nom de
l'application en paramètre (indiquer le chemin complet)
Différents contrôles sont réalisés :
- autorisation de l'application à l'utilisateur
Dans l'exemple ci-dessous, netstat n'est pas autorisée :
Dans l'exemple ci-dessous, secpol.msc est autorisée si on
passe par SE : |
Par contre, un lancement direct de secpol.msc est bien
interdit : |
|
|
- Contrôle de date limite :
- Contrôle du nombre maximal d'exécutions :
- Application de type console :
Dans l'exemple ci-dessous, c'est
C:\winnt\system32\FTP.EXE, à laquelle est passée en paramètre
-s:c\winnt\sprinfield.ftp
Le fichier de commandes FTP
springfield.ftp contient ceci : |
L'exécution de cette application donne le résultat suivant : |
open 192.168.0.49
bellamy
***********
cd /DEVELOPMENT/wsh
dir getip*.vbs
bye |
|
|
SE.EXE détermine automatiquement le type
console d'une application, et dans ce cas il l'exécute au travers d'un
script
%systemroot%\Superexecmd.bat, créé
dynamiquement.
Ce script permet de conserver la fenêtre ouverte à la fin de l'exécution de
l'application (si on l'a demandé dans SUPEREXEC).
Ce script est très simple et son contenu est (ici) le suivant :
@echo off
cmd /c %*
pause |
Téléchargement
et installation
SUPEREXEC est entièrement gratuit.
Il s'installe (sous un compte administrateur) à partir d'un fichier
auto extractible installSE.exe
(lui même contenu dans un fichier compressé installSE.zip)
L'installation extrait 5 fichiers :
- L'exécutable Superexec.exe
- L'exécutable SE.exe (runtime)
- Un fichier d'aide générale SuperExec.rtf
- Un fichier de licence Licence.rtf
- Un fichier des libellés des boites de dialogue Superexec.lib.
Ce fichier est au format texte, et permet ainsi de créer des versions de
SUPEREXEC en n'importe quelle langue.
Aucun autre fichier n'est nécessaire.
Un raccourci est créé sur le bureau ainsi que deux raccourcis dans
le menu démarrer (un pour lancer SUPEREXEC et un pour le désinstaller)
Il est disponible en deux langues :
Historique
- 02/02/2004 - Version 2.0.1.136
- Suppression du compte GÉNÉRAL, remplacé par la gestion de tous les
groupes (locaux et globaux)
- Éclatement du logiciel en 2 exécutables (SuperExec.exe pour la
préparation des applications, SE.exe pour leur lancement)
- Ajout du choix de profil de utilisateur
- Ajout du choix de dossier de travail
- Sélection possible d'application résidant sur une machine distante,
différente de la machine destinataire.
- Les raccourcis peuvent être placés, au choix :
- Sur le bureau
- Dans le menu démarrer (Démarrage)
- Dans la Base de Registres (clef clef HKCU\Software\Microsoft\Windows\CurrentVersion\Runonce)
- Le script utilisé dans le cas d'application console est à présent créé
dynamiquement, permettant ainsi un meilleur paramétrage
NB: il est créé dans le dossier %systemroot%, et n'est pas modifiable par un
utilisateur non administrateur.
- 10/12/2003 - Version 1.5.1.89
- Saisie manuelle du nom d'ordinateur (pour les ordinateurs cachés)
- Ajout du champ paramètres passés à une application
- Lancement des applications en mode console via un script automatique
afin de garder la fenêtre ouverte
- Ajout du compte virtuel GÉNÉRAL qui représente n'importe quel
compte.
- 03/12/2003 - Version 1.4.1.84
- Ajout de la gestion des comptes globaux (domaine)
- Libellés des raccourcis personnalisables
- 13/11/2003 - Version initiale