Los usuarios de Windows pueden tener varios privilegios.
Los privilegios determinan el tipo de operaciones del sistema que puede realizar una cuenta de usuario. Un administrador asigna privilegios a cuentas de usuarios y grupos. Los privilegios de cada usuario incluyen los otorgados al usuario y a los grupos a los que pertenece el usuario.
Actualmente hay 35 privilegios. Algunos de los más interesantes son:
- SeSystemtimePrivilege : requerido para modificar la hora del sistema.
- SeTimeZonePrivilege : necesario para ajustar la zona horaria asociada con el reloj interno de la computadora
- SeBackupPrivilege : este privilegio hace que el sistema otorgue todo el control de acceso de lectura a cualquier archivo, independientemente de la lista de control de acceso (ACL) especificada para el archivo.
- SeCreatePagefilePrivilege : obligatorio para crear un archivo de paginación.
- SeRemoteShutdownPrivilege : requerido para apagar un sistema usando una solicitud de red.
- SeDebugPrivilege : requerido para depurar y ajustar la memoria de un proceso propiedad de otra cuenta.
Pero el que me interesa es:
- SeShutdownPrivilege : requerido para apagar un sistema local.
Noté que en realidad no tengo este privilegio. Desde un símbolo del sistema elevado:
>whoami /priv
PRIVILEGES INFORMATION
----------------------
Privilege Name Description State
=============================== ========================================= ========
SeIncreaseQuotaPrivilege Adjust memory quotas for a process Disabled
SeSecurityPrivilege Manage auditing and security log Disabled
SeTakeOwnershipPrivilege Take ownership of files or other objects Disabled
...
SeShutdownPrivilege Shut down the system Disabled
...
Esto se confirma cuando se utiliza Process Explorer para examinar el token de seguridad de un proceso elevado que se ejecuta como yo:
Y aún así puedo apagar el sistema. ¿Por qué?
La Política de grupo dice que debería tenerlo
Si usa el editor de políticas de seguridad local snapin ( secpol.msc
), puede ver que debería tener el privilegio:
secpol.msc
La explicación del privilegio:
Apagar el sistema
Esta configuración de seguridad determina qué usuarios que han iniciado sesión localmente en la computadora pueden apagar el sistema operativo mediante el comando Apagar. El mal uso de este derecho de usuario puede resultar en una denegación de servicio.
Predeterminado en estaciones de trabajo: administradores, operadores de respaldo, usuarios.
Valor predeterminado en servidores: administradores, operadores de respaldo.
Valor predeterminado en controladores de dominio: administradores, operadores de respaldo, operadores de servidores, operadores de impresión.
Soy un usuario . A veces soy administrador , y otras veces no soy administrador .
Quizás la pregunta debería ser por qué no tengo el privilegio.
Pero la realidad es que no tengo el privilegio; y, sin embargo, cuando inicie sesión localmente, puedo apagar el sistema local.
¿Por qué?
@Mehrdad tuvo una buena respuesta, que eliminó, lo que creo que merece atención y responde a la pregunta de manera agradable y sucinta:
Usted tiene el privilegio. Simplemente está deshabilitado por defecto. Si no tuviera el privilegio, entonces no estaría en la lista .
Tenga en cuenta queSE_PRIVILEGE_REMOVED
es diferente de la faltaSE_PRIVILEGE_ENABLED
oSE_PRIVILEGE_ENABLED_BY_DEFAULT
.
Lectura adicional
fuente
Respuestas:
Tiene el permiso, pero está deshabilitado . Eso es lo que PowerShell te está diciendo.
Para apagar el sistema, utiliza la función Win32API llamada
InitiateSystemShutdown
oExitWindowsEx
:Estas funciones nota:
Como puede ver, Windows verifica los privilegios de hilo (cualquier hilo tiene token con privilegios). Si llama
ExitWindowsEx
sin el privilegio SE_SHUTDOWN_NAME , la función fallará con el error:Los hilos que cree por defecto heredan sus privilegios; pero un programa puede habilitar un privilegio deshabilitado que se le ha otorgado usando
AdjustTokenPrivileges
:Cambiar privilegios en un token dice:
Entonces, ¿por qué este privilegio está deshabilitado de forma predeterminada? Para asegurarse de que ningún programa pueda cerrar Windows por accidente. Las aplicaciones deben solicitar esto explícitamente.
Hay un libro antiguo pero muy bueno: https://www.amazon.com/Programming-Windows-Security-Keith-Brown/dp/0201604426/ sobre todas esas cosas.
fuente
Es porque su usuario pertenece a un grupo que tiene ese privilegio habilitado.
Para ver por usted mismo qué grupo (s):
secedit /export /areas USER_RIGHTS /cfg OUTFILE.CFG
.SeShutdownPrivilege
entrada. Verá (debería) ver un par / pocos SID para usuarios y / o grupos que tengan habilitado ese privilegio.Entonces tengo tres SID cortos en la lista. Los SID cortos suelen ser cuentas / grupos a nivel de computadora. Por ejemplo, uno de ellos es
S-1-5-32-545
.Usando PowerShell podemos determinar qué cuenta / grupo representa ese SID:
Esto vuelve
BUILTIN\Users
.Como eres un usuario de esa computadora, automáticamente eres miembro de ese grupo, lo que significa que puedes apagar la computadora.
Los otros dos que tengo son
S-1-5-32-544
, yS-1-5-32-551
. Estos son elBUILTIN\Administrators
grupo estándar y elBUILTIN\Backup Operators
grupo. Que se alinean con los grupos que estás viendo en elsecpol.msc
diálogo.fuente