Usuarios avanzados pero poco, usuarios normales poderosos

Pues lo cierto es que esta es una pregunta muy clásica. Que los usuarios normales puedan hacer ciertas cosas que solo los administradores pueden. Y solamente si esa cosa da la casualidad que coincide con un derecho de usuario o algún permiso NTFS en filesystem o registry puede atajarse el problema de una manera sencilla.

Cada uno de los tipos de usuarios definidos en un sistema Windows XP tiene su propio conjunto de derechos, que se complementan con las ACLs que tienen asignados esos grupos o usuarios individuales sobre de los diferentes objetos del sistema a los que se accederá llevando a cabo un uso normal del sistema. Y estos derechos y permisos son los que determinarán que podemos hacer y que no. En estos dos enlaces pueden consultarse los diferentes Derechos de Logon y los Privilegios de Usuario, así como una descripción de cómo Windows XP maneja la Autorización y el Control de Acceso a los recursos locales y de red

https://www.microsoft.com/technet/prodtechnol/winxppro/reskit/z02b621675.mspx
https://www.microsoft.com/technet/prodtechnol/winxppro/reskit/c17621675.mspx

Ambas cosas pueden controlarse con un nivel de granularidad suficiente usando la herramientas del sistema correspondientes para establecer las ACLs correctas sobre los objetos que correspondan, así como modificar los derechos de usuario utilizando políticas del sistema o aplicando políticas de seguridad. El problema es que no es precisamente trivial averiguar que necesita exactamente cada aplicación para funcionar correctamente y se corre el peligro de relajar o restringir en exceso, según si elegimos una estrategia de darle mas derechos y permisos a los usuarios normales o menos a los Usuarios Avanzados.

Dada una aplicación que no esta funcionando correctamente como Usuario Normal y si como Usuario Avanzado, lo primero que se puede probar es aplicar la plantilla de seguridad Compatws.inf, cuya función es precisamente relajar un poco los restrictivos permisos de objetos del sistema de los usuarios normales (puede editarse la plantilla para ver exactamente que es lo que modifica):

https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/windows_security_default_settings.mspx

Si esto no es suficiente, la tarea que hay que abordar es ver si se consigue averiguar que necesitan nuestras aplicaciones exactamente para funcionar. Pueden usarse, además de las consabidas auditorias de seguridad y los eventos correspondientes del visor de sucesos, herramientas como Regmon, Filemon o Tokenmon, de www.sysinternals.com, pero lo malo es que... no funcionan como usuario normal, lo que sería útil para monitorizar los accesos denegados y uso de privilegios de la aplicación. En alguna ocasión hemos usado Terminal Server para ello, ejecutando las herramientas como administradores y conectándonos como usuarios para correr las aplicaciones. Y si con esto no es suficiente podemos recurrir a dos herramientas que van mucho más allá de estos propósitos, pero que se pueden utilizar para estas cosas. Se trata de la Application Compatibility Toolkit y de la Microsoft Application Verifier

Pero mucho mejor que todo esto es, si es posible, hablar con quienes hayan desarrollado la aplicación. Son las mejores personas para saber a que objetos están accediendo y a través de que funciones, y sobre todo los que pueden llevar a cabo las modificaciones necesarias en la aplicación para que funcionen bajo los privilegios de un usuario normal. Esta es una de las cosas que se esta haciendo ahora en Windows Vista. Rediseñar los componentes del sistema operativo para que usen exactamente los derechos y permisos del quien los ejecuta de manera que estos sean los menores posibles, y que por tanto el usuario normal sea capaz de llevar a cabo mayor numero de acciones. Puede empezarse a utilizar este principio de menores privilegios ya en XP.

Saludos y gracias a Cristian por el acicate.

David Cervigón