viernes, 15 de marzo de 2013

Una partición propia para tu "home" en Windows


Hace poco hablábamos de un fallo en HTML5 que permitía aprovechar el LocalStorage para llenar el disco duro de ficheros hasta colapsarlo (según el navegador). En los comentarios de la noticia se habló de una pequeña contramedida, que podría ser la de separar el "home" del usuario en una partición diferente, algo habitual en Linux, para evitar este y otros posibles problemas. Además de parecer más cómodo y conveniente. En Windows se puede hacer con un pequeño procedimiento.

El "home" del usuario está definido en la variable %USERPROFILE%, normalmente en c:\users\nombreusuario o "c:\documents and settings\nombreusuario" en XP.  Ahí se almacena todo lo relativo al usuario: su configuración de registro, escritorio, documentos, configuración personal de programas, archivos temporales, etc. Se puede observar su tamaño en la opción avanzada de sistema, "Perfiles de usuario". La mayoría de usuarios en casa tendrán dos, el administrador (deshabilitado en Windows 7) y el creado por él. Pero es muy conveniente disponer de dos perfiles activos... por ejemplo en el caso del virus de la policía puede simplificar mucho la desinfección. 


El "usuario predeterminado" es la carpeta "Default user" que encontrarás oculta en "users" y que es la base de cada usuario. Cuando se presenta por primera vez un nuevo usuario, su contenido se copia a la carpeta nueva creada como base de su perfil.

Los pasos para separar el home en una partición son los siguientes: Activar otro usuario (no se puede cambiar el perfil con el usuario "en uso") o entrar en modo reparación o prueba de fallos. Copiar los ficheros (con los permisos correctos). Hace que el sistema apunte a la nueva ubicación.

Activar otro usuario o entrar en modo a prueba de fallos es sencillo. Se debe habilitar por ejemplo el administrador integrado. Acordaos de deshabilitarlo luego. Aunque esté deshabilitado, el usuario administrador funciona en modo a prueba de fallos, con lo que quizás sea mejor opción.

Una vez presentado en el sistema como administrador, para copiar los ficheros del perfil, es necesario hacerlo con cierto cuidado. Es muy importante respetar atributos y las ACL (las listas de permisos). Para ello se debe utilizar el comando xcopy con los parámetros:

xcopy "c:\users\sergio" "d:\users\sergio /O /X /E /H /K /B

/E  realiza copia de carpetas y subcarpetas, incluidos los vacíos.  /H copia ocultos y de sistema. /K respeta los atributos. /O copia los permisos (ACL). /X copia la configuración de auditoría (probablemente no lo estés usando, pero por si acaso). La opción /B sólo es válida en sistemas 7 y 8, y sirve para copiar enlaces simbólicos también. Por si hay algún despistado, no se os ocurra poner el home en una partición FAT32... debe ser NTFS.

Ahora es el momento de que el sistema apunte a la nueva ubicación. Hay dos formas. Una cambiando el registro (que funciona en todos los Windows), y otra usando enlaces simbólicos (que funciona en Windows 7 y 8). Empecemos con el registro:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\

En este punto buscamos el SID del usuario que queramos cambar. Las últimas cifras (el RID del SID) son fijas. Si termina en 500 es el administrador. El 501 el invitado. El 1000 es el primer usuario (probablemente el que estés usando). Cuando encuentres tu perfil, cambia el valor de "ProfileImagePath". No debe terminar en barra.


Si se quiere cambiar para siempre a cualquier usuario que se cree nuevo, ese dato está un poco más arriba en el registro. En el dato "ProfilesDirectory" que por defecto será %systemdrive%\users. Esta operación requiere que, en la nueva ubicación (por ejemplo d:\users) se copie TODO lo que actualmente existe en c:\users, incluidos los ficheros de "Default user", "public"... Para ello se haría un xcopy con los parámetros anteriores de todo c:\users hacia la nueva ocupación.

Si en vez de tocar el registro queremos usar enlaces simbólicos (mucho más cómodo pero solo válido para Windows 7 y 8), se debe usar el comando:

mklink /d c:\users d:\users

Pero antes, por supuesto, se debe renombrar la carpeta "c:\users" puesto que la convertiremos en enlace simbólico. En vez de borrar, mejor renombrar (en modo reparación).

Así el sistema enlaza simbólicamente las ubicaciones y todo resulta mucho más sencillo. De hecho, ya se usan por defecto varios enlaces simbólicos en la carpeta de los usuarios.


Advierto que esta última opción con enlaces no la he probado personalmente de forma exhaustiva... la anterior sí. Para comprobar que todo ha ido bien, volveos a presentar con vuestro usuario, y haced en línea de comando "echo %homepath% o un "set" (que os muestra todas las variables de entorno).

Esta es una operación con cierto riesgo, así que no borréis vuestra configuración original hasta estar seguros de que todo ha ido perfectamente. 

1 comentario:

  1. Solo comentar que esto es mejor hacerlo nada más instalar el ordenador. Si tienes cosas instaladas, prepararos para cambiar cientos de entradas en el registro de Windows de c:\users\Usuario a x:\users\Usuario.
    En mi caso tener Outlook 2010 con Apps Sync de Google... incluso metiendole mano al registro no hay forma... solo he podido solucionarlo creando un nuevo perfil de correo.

    ResponderEliminar