En informática, un privilegio se define como la delegación de autoridad para realizar funciones relevantes para la seguridad en un sistema informático. [1] Un privilegio permite a un usuario realizar una acción con consecuencias para la seguridad. Algunos ejemplos de diversos privilegios incluyen la capacidad de crear un nuevo usuario, instalar software o cambiar funciones del núcleo.
Los usuarios a los que se les han delegado niveles adicionales de control se denominan privilegiados. Los usuarios que carecen de la mayoría de los privilegios se definen como usuarios no privilegiados, regulares o normales.
Los privilegios pueden ser automáticos, otorgados o solicitados.
Un privilegio automático existe cuando no se requiere tener permiso para realizar una acción. Por ejemplo, en sistemas donde se requiere que las personas inicien sesión en un sistema para usarlo, cerrar sesión no requerirá un privilegio. Los sistemas que no implementan protección de archivos, como MS-DOS , básicamente otorgan privilegios ilimitados para realizar cualquier acción en un archivo.
Un privilegio otorgado existe como resultado de presentar alguna credencial a la autoridad que otorga el privilegio. Esto generalmente se logra iniciando sesión en un sistema con un nombre de usuario y una contraseña y, si el nombre de usuario y la contraseña proporcionados son correctos, se le otorgan al usuario privilegios adicionales.
Un privilegio se solicita mediante un programa ejecutado que emite una solicitud de privilegios avanzados o mediante la ejecución de algún programa para solicitar privilegios adicionales. Un ejemplo de un usuario que solicita privilegios adicionales lo proporciona el sudo
comando para ejecutar un comando como superusuario ( root ) o el sistema de autenticación Kerberos .
Las arquitecturas de procesador modernas tienen múltiples modos de CPU que permiten que el sistema operativo se ejecute en diferentes niveles de privilegio . Algunos procesadores tienen dos niveles (como usuario y supervisor ); los procesadores i386 + tienen cuatro niveles (#0 con la mayor cantidad de privilegios, #3 con la menor cantidad de privilegios). Las tareas se etiquetan con un nivel de privilegio. Los recursos (segmentos, páginas, puertos, etc.) y las instrucciones privilegiadas se etiquetan con un nivel de privilegio solicitado. Cuando una tarea intenta usar un recurso o ejecutar una instrucción privilegiada, el procesador determina si tiene el permiso (si no, se genera una interrupción de "falla de protección"). Esto evita que las tareas de usuario dañen el sistema operativo o entre sí.
En programación informática, las excepciones relacionadas con violaciones de instrucciones privilegiadas pueden producirse cuando se ha accedido a una matriz fuera de los límites o se ha desreferenciado un puntero no válido cuando la ubicación de memoria no válida a la que se hace referencia es una ubicación privilegiada, como una que controla la entrada/salida de un dispositivo. Esto es particularmente más probable que ocurra en lenguajes de programación como C , que utilizan aritmética de punteros o no comprueban los límites de la matriz automáticamente.
Mark Miller ha criticado la definición del privilegio como algo mal definido y difícil de medir, y ha sugerido que la autoridad puede definirse como el conjunto de cosas que un programa puede hacer, lo que resulta más útil. [2]
En los sistemas tipo Unix , el superusuario (comúnmente conocido como "root") posee todos los privilegios. A los usuarios comunes sólo se les conceden los permisos necesarios para realizar sus tareas más comunes. Los sistemas UNIX tienen funciones de seguridad integradas. La mayoría de los usuarios no pueden crear una nueva cuenta de usuario ni realizar otros procedimientos administrativos. El usuario "root" es un usuario especial, algo llamado superusuario, que puede hacer cualquier cosa en el sistema. Este alto grado de poder es necesario para administrar completamente un sistema UNIX, pero también permite que el usuario cometa un error y cause problemas en el sistema.
Los usuarios sin privilegios normalmente no pueden:
sbin/
directorio (aunque cada vez es más común simplemente restringir el comportamiento de dichos programas cuando son ejecutados por usuarios normales);En los sistemas basados en Windows NT , los privilegios se delegan en distintos grados. Estas delegaciones se pueden definir mediante el administrador de políticas de seguridad local ( secpol.msc
). A continuación, se incluye una lista abreviada de las asignaciones predeterminadas:
Windows define una serie de privilegios administrativos [3] que se pueden asignar individualmente a usuarios y/o grupos. Una cuenta (usuario) solo tiene los privilegios que se le otorgan, ya sea directa o indirectamente a través de membresías de grupo. Tras la instalación, se crean una serie de grupos y cuentas y se les otorgan privilegios. Sin embargo, estas concesiones se pueden cambiar en un momento posterior o a través de una política de grupo . A diferencia de Linux, no se otorgan privilegios de forma implícita o permanente a una cuenta específica.
Algunos privilegios administrativos (por ejemplo, tomar posesión de archivos arbitrarios o restaurarlos) son tan poderosos que, si se utilizan con malas intenciones, podrían permitir que se comprometiera todo el sistema. Con el control de cuentas de usuario (activado de forma predeterminada desde Windows Vista), Windows despojará al usuario de estos privilegios al iniciar sesión. Por lo tanto, si un usuario inicia sesión con una cuenta con amplios privilegios de sistema, seguirá sin ejecutar estos privilegios de sistema. Siempre que el usuario desee realizar acciones administrativas que requieran cualquiera de los privilegios del sistema, tendrá que hacerlo desde un proceso elevado . Al iniciar un proceso elevado , se le informa al usuario que se están afirmando sus privilegios administrativos a través de un mensaje que requiere su consentimiento. No mantener los privilegios hasta que realmente se necesiten se ajusta al principio del mínimo privilegio .
Los procesos elevados se ejecutarán con todos los privilegios del usuario , no con todos los privilegios del sistema . Aun así, los privilegios del usuario pueden ser mayores que los necesarios para ese proceso en particular, por lo que no se trata de privilegios mínimos .
Los sistemas basados en DOS Windows ME, Windows 98, Windows 95 y versiones anteriores de Windows no NT solo funcionaban en el sistema de archivos FAT, no admitían permisos de sistema de archivos [4] y, por lo tanto, los privilegios se anulan de manera efectiva en los sistemas basados en Windows NT que no utilizan el sistema de archivos NTFS .
Los nombres utilizados en el código fuente de Windows terminan en "privilege" o "logonright". Esto ha provocado cierta confusión sobre cómo debería llamarse el conjunto completo de todos estos "derechos" y "privilegios".
Microsoft utiliza actualmente el término "derechos de usuario". [5] En el pasado, Microsoft también ha utilizado otros términos, como "derechos de privilegio" [6] , "derechos de usuario de inicio de sesión" [7] y "derechos nt". [8]
Puede establecer permisos a nivel de archivo únicamente si los archivos están almacenados en un volumen NTFS.
Los derechos de usuario incluyen derechos y privilegios de inicio de sesión.