¿Existe un equivalente de Windows del Setuid?

¿Existe un equivalente de Windows del Setuid?

Quiero darle a un programa los derechos del usuario que lo ejecuta. ¿Existe un equivalente de lasetuid¿En Windows (preferiblemente Windows 7 o al menos Windows post-XP)?

¿Qué pasa si quiero que el programa tenga más derechos que el usuario que lo ejecuta? (Por ejemplo, quiero que el programa escriba en el Archivo de programa, pero no quiero que el usuario pueda hacerlo).

Respuesta1

Respuesta corta: no necesita hacer nada para que un programa se ejecute con los derechos del usuario que lo generó. Esto es estándar para los sistemas Windows.

Para forzar la ejecución de un programa como un usuario completamente diferente, como lo hace SetUID, Microsoft ha proporcionado laCorrer comocomando, que puede utilizar para invocar un ejecutable con credenciales de usuarios diferentes.

Además, en sistemas habilitados para UAC como Windows 7, puede mantener presionada la tecla Mayús + clic derecho en un ejecutable para ejecutar el programa con un usuario diferente e invocar los derechos de administrador de ese usuario si es necesario.


Tenga en cuenta que la respuesta a continuación está relacionada con la pregunta original sobre Sticky.

Para responder directamente a tu pregunta, Sí y no. Se puede emular la función, pero la aplicación es completamente diferente.

Creo que puede estar confundiendo el bit Sticky con los otros permisos especiales de Unix, SetUID y SetGID, los cuales afectan la forma en que se ejecutan las aplicaciones en relación con el usuario que invoca el proceso, pero Sticky no.

Sticky no permitirá que ningún usuario, excepto root o el usuario propietario, elimine o cambie el nombre de un archivo, incluso si el usuario tiene derechos de escritura y, por lo tanto, puede editar el archivo.

En la ventana Permisos avanzados (desde Propiedades de un objeto -> pestaña Seguridad -> Avanzado), puede Agregar o Editarpermisospara el CREATOR OWNER"usuario" y otorgarle permisos Deletey Delete subfolders and files. Luego, para todas las demás entidades de la ACL, revoque (pero no niegue) esos mismos permisos.

ingrese la descripción de la imagen aquí

Esto permitirá a todos los usuarios con escritura crear/editar cualquier archivo, pero solo el propietario del archivo podrá eliminarlo.

Tenga en cuenta que este enfoque también tiene el mismo defecto que Sticky: que cualquier usuario con derechos de edición puede sobrescribir el archivo con 0B, lo cual es conceptualmente similar a eliminar el archivo (muchos argumentan que es tan bueno como...).

buena suerte.

Respuesta2

En Windows no se puede ejecutar un programa como un usuario diferente sin conocer la contraseña del usuario objetivo o guardar esta información en la máquina una vez.


De forma predeterminada, un programa en Windows siempre se ejecutará utilizando los privilegios del usuario actual. Esto también se aplica a las carpetas o configuraciones a las que puede acceder el programa. Estas configuraciones se pueden cambiar en la pestaña Seguridad de un programa o carpeta.

Puede iniciar un programa con otro usuario (si, por ejemplo, mantiene presionado SHIFT+ right-clicky luego selecciona Run as different usero simplemente Run as administrator) para otorgarle derechos elevados de otro usuario que tenga derechos de administrador en la máquina.

El uso del runascomando CMD también puede lograr esto y se puede configurar en un acceso directo para automatizar el inicio de sesión.

Documentación aquí

Un ejemplo:

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

El /savecredparámetro le dice al comando que la contraseña del usuario ya se ha guardado en la máquina y no requerirá una contraseña durante la ejecución. La contraseña primero debe almacenarse en el Administrador de credenciales en el Panel de control.

Tenga en cuenta que esto también cargará el programa utilizando el perfil del otro usuario. Un programa que guardó configuraciones en AppData, por ejemplo, las cargará desde el usuario que ejecutó el programa.

Sin embargo, los servicios de Windows pueden ejecutarse como un usuario diferente. Esto se puede hacer en

Consola Services.msc > seleccione Servicio > Propiedades > Iniciar sesión

información relacionada