5 votes

Existe-t-il un équivalent Windows du Setuid ?

Je veux donner à un programme les droits de l'utilisateur qui l'exécute. Existe-t-il un équivalent de la fonction Setuid sur Windows (de préférence Windows 7 ou au moins Windows post-XP) ?

Que faire si je veux que le programme ait plus de droits que l'utilisateur qui l'exécute ? (Par exemple, je veux que le programme puisse écrire dans Program File alors que je ne veux pas que l'utilisateur puisse le faire).

5voto

Frank Thomas Points 33103

En bref, vous n'avez rien à faire pour qu'un programme s'exécute avec les droits de l'utilisateur qui l'a créé. C'est la norme pour les systèmes Windows.

Pour forcer un programme à s'exécuter en tant qu'utilisateur totalement différent, comme le fait SetUID, Microsoft a fourni l'option Runas que vous pouvez utiliser pour invoquer un exécutable avec des identifiants d'utilisateurs différents.

En outre, sur les systèmes compatibles avec l'UAC comme Windows 7, vous pouvez maintenir les touches Maj + Clic droit sur un exécutable, pour exécuter le programme sous un utilisateur différent, et invoquer les droits d'administrateur de cet utilisateur si nécessaire.


Veuillez noter que la réponse ci-dessous est liée à la question originale sur Sticky.

Pour répondre directement à votre question, oui et non. On peut émuler la fonction, mais l'application est totalement différente.

Je pense que vous confondez le bit Sticky avec les autres permissions spéciales Unix SetUID et SetGID, qui affectent toutes deux la manière dont les applications s'exécutent par rapport à l'utilisateur qui invoque le processus, ce que Sticky ne fait pas.

Sticky ne permet à aucun utilisateur, autre que root ou l'utilisateur propriétaire, de supprimer ou de renommer un fichier, même si l'utilisateur a des droits d'écriture et peut donc modifier le fichier.

Dans la fenêtre Permissions avancées (à partir d'un objet Propriétés -> onglet Sécurité -> Avancé), vous pouvez ajouter ou modifier les éléments suivants autorisations pour les CREATOR OWNER "user" et leur accorder des permissions Delete y Delete subfolders and files . Ensuite, pour toutes les autres entités de l'ACL, révoquez (mais ne refusez pas) ces mêmes autorisations.

enter image description here

Tous les utilisateurs disposant d'un droit d'écriture pourront ainsi créer/modifier n'importe quel fichier, mais seul le propriétaire du fichier pourra le supprimer.

Notez que cette approche présente le même défaut que Sticky : tout utilisateur ayant des droits d'édition peut écraser le fichier avec 0B, ce qui est conceptuellement similaire à la suppression du fichier (beaucoup soutiennent que c'est aussi bien que...).

Bonne chance.

1voto

Spokey Points 250

Sous Windows, vous ne pouvez pas exécuter un programme en tant qu'utilisateur différent sans connaître le mot de passe de l'utilisateur cible ou sans enregistrer cette information sur la machine.


Sous Windows, un programme s'exécute toujours par défaut en utilisant les privilèges de l'utilisateur actuel. Cela s'applique également aux dossiers ou aux paramètres auxquels le programme peut accéder. Ces paramètres peuvent être modifiés dans l'onglet Sécurité d'un programme ou d'un dossier.

Vous pouvez démarrer un programme avec un autre utilisateur (si vous tenez par exemple SHIFT + right-click puis sélectionnez Run as different user ou simplement Run as administrator ) pour lui accorder les droits élevés d'un autre utilisateur disposant des droits d'administrateur sur la machine.

L'utilisation de la runas La commande CMD permet également d'atteindre cet objectif et peut être placée dans un raccourci pour automatiser la connexion.

Documentation ici

Un exemple :

runas /user:.\localadmin /savecred notepad.exe

En /savecred indique à la commande que le mot de passe de l'utilisateur a déjà été enregistré sur la machine et qu'aucun mot de passe n'est requis lors de l'exécution. Le mot de passe doit d'abord être enregistré dans le Credential Manager du Panneau de configuration.

Notez que cela chargera également le programme en utilisant le profil de l'autre utilisateur. Un programme qui a enregistré des paramètres dans AppData, par exemple, les chargera à partir de l'utilisateur qui a exécuté le programme.

Les services Windows peuvent toutefois être exécutés sous un autre utilisateur. Cela peut se faire dans

Console Services.msc > sélectionnez Service > Propriétés > Connexion

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X