jueves, 7 de marzo de 2013

Sistemas Virtuales #2: Solución al error "subsistema USB"



Esta es una de las cosas que menos me gustan de Linux. Cuando aparece un error con una explicación que pone en evidencia tu desconocimiento. El caso que nos ocupa es un buen ejemplo de ello. Lo único que ocurre es que VirtualBox crea un grupo de usuarios al que no está admitido el usuario desde el que queremos acceder. Y si no habéis entendido nada de lo que estoy diciendo, entonces entenderéis lo que quería decir al principio, porque en realidad el problema es bien simple de solucionar.


Para entender qué es lo que está pasando, necesitamos comprender qué es eso de los usuarios y los grupos de usuarios. Linux es un sistema "multiusuario", es decir, múltiples "personas" pueden acceder a el. Pongo "personas" entre comillas para no repetir la palabra usuario, pues en realidad los usuarios no tienen por qué ser personas físicas. Un usuario es una forma de proteger el sistema, porque cada usuario tiene unos permisos diferentes para acceder a según qué tipo de archivos. Qué archivos pueden ser modificados por qué usuarios es algo que queda definido con los grupos. Un grupo es un conjunto de archivos que pueden ser modificados por los usuarios que tienen acceso a dicho grupo. O dicho desde otra perspectiva, un grupo define a un conjunto de usuarios con los mismos permisos. Tanto monta.
Por poner un ejemplo, simplemente tenéis que abrir un terminal, y ver lo que está antes de la arroba. Ese es el usuario que estáis utilizando, que tiene los permisos que le hayáis dado. Por ejemplo, si escribimos "sudo" y una orden, estamos pidiéndole al sistema que nos conceda temporalmente permisos especiales para ejecutar tal orden. Otra orden interesante, pero que tenéis que manejar con cuidado, es "sudo su", mediante la cual accedemos al usuario "raíz", una especie de usuario todopoderoso con permisos para hacer casi lo que le dé la gana.


Otra cosa que conviene saber es que los sistemas Linux tienen un montón de grupos por defecto. Para saber qué grupos tenemos en nuestro sistema podemos abrir el archivo "groups" que se encuentra alojado en la carpeta de sistema "/etc":


En ese archivo de texto tan sencillo está almacenada información sobre los grupos, las contraseñas cifradas, los usuarios que pertenecen a los grupos... todo de una forma muy simple, como podéis comprobar. En Linux todo trata de ser sencillo, tanto que se vuelve oscuro, curiosamente.
Si queréis conocer más cosas que se pueden hacer con los grupos y usuarios, hay un montón de páginas que abordan el tema de una forma mucho mejor que yo. En cualquier caso, hay algunos comandos interesantes por si queréis investigar con el asunto de los usuarios, crear nuevos, modificarlos, etc.:

useradd: Añade un usuario al sistema. La información sobre los usuarios se almacena en /etc/adduser.conf.
adduser: Añade un usuario a un grupo determinado.
usermod: Con este podemos modificar la mayoría de los campos de los ficheros /etc/passwd y /etc/shadow (relativos a contraseñas de usuarios y grupos, cuidadito). Este es el comando que uso en el vídeo, con la opción -G que le indica que incluya a un usuario en un grupo.
chfn: Cambia la información personal del usuario.
chsh: Cambia el shell (intérprete de comandos) del usuario.
userdel: Elimina un usuario del sistema, borrando o guardando todos sus ficheros, según los parámetros que le pasemos.
passwd: Para cambiar la contraseña del usuario, la información de expiración de la misma, o para bloquear o desbloquear una determinada cuenta.
groupadd: Permite añadir un grupo al sistema.
groupmod: Permite modificar la información de un determinado grupo.
groupdel: Elimina un determinado grupo.
gpasswd: Para cambiar la contraseña del grupo.
Como veis, Linux funciona como una cebolla: cuanto más escarbas, más capas encuentras y más te hace llorar. Pero cuando me encuentro con un error en Linux, de esos que te informa de lo que ha pasado dándote una explicación que suena fácil pero no se entiende ni la mitad, mi procedimiento es siempre el mismo: intentar enterarme de cuál es el problema, a qué conceptos alude, y qué es lo que hace realmente la solución que estoy aplicando. Esto es más recomendable de lo que parece; si nos limitamos a copiar y pegar comandos no vamos a aprender nada con la reparación, y en realidad arreglar cosas es la mejor manera de aprender. Si no fuese así no existirían los problemas de matemáticas... Quizá no sea el mejor ejemplo, pero ya me entendéis.