Herramientas personales

Administración de usuarios y grupos de usuarios

De Proyectos GULIX

Tabla de contenidos

Introducción

Es muy probable que no administres un servidor y no tengas cientos o miles de usuarios, pero si es posible que el computador de tu casa lo usen varias personas, cada quien con su propio usuario, configuración. temas, iconos, etc.

Encontrarás que esta parte de la administración de tu equipo Linux es interesante y que se le puede sacar bastante provecho. En todo caso, debo considerar que esto se está haciendo en Fedora (se hace igual en RedHat y CentOS), hay algunas pequeñas cosas que cambian según la distribución, pero si tienes dudas puedes hacer man comando y salir de dudas.

Finalmente cave recordar que para la creación de usuarios, grupos y edición de archivos del sistema debes ser root.

Creando usuarios de forma básica

La forma más básica de crear un usuario es mediante el siguiente comando:

useradd usuario

con lo que crea un usuario en /home/ que es el directorio predeterminado para los usuarios, al ejecutar un ls -al /home/ deberíamos visualizarlo en una linea como sigue:

drwxr-xr-x  12 root    root    4096 dic 13 22:56 .
drwxr-xr-x  23 root    root    4096 dic 14 11:19 ..
drwx------   4 usuario usuario 4096 dic 14 13:14 usuario

Ahora, puede que se pregunten, ¿y eso que me dice? o ¿eso que es?, en palabras simples las dos primeras lineas se refieren al directorio actual y al directorio padre respectivamente, la tercer linea se refiere al directorio de trabajo de nuestro usuario.

De izquierda a derecha nos encontramos con :

  • drwx------ : d = directorio, rwx = permiso del usuario de lectura(r), escritura(w), ejecución(x), ------ = sin permiso para el grupo y para los demas.
  • 4 : número de enlaces duros.
  • usuario : dueño de la carpeta.
  • usuario : grupo al que pertenece.
  • 4096 : tamaño en bytes.
  • dic 14 13:14 : marca horaria.
  • usuario : nombre de la carpeta.

En pocas palabras, el usuario usuario tiene una carpeta con su nombre y con un grupo propio con su nombre. Esto puede llegar a ser práctico si queremos que cada usuario sea especial, pero no en casos en que deseamos agrupar usuarios.

Algo que no debemos olvidar cuando creamos un usuario es asignarle una clave, esto, de forma simple se puede hacer con el comando passwd de la siguiente manera:

passwd usuario

Esto a continuación preguntará dos veces la clave, y si coinciden tienes una nueva clave para tu usuario.

Creando Grupos de Usuario

La necesidad de crear grupos nace por si sola, dado a que nuestro mundo lo podemos clasificar en conjuntos, gerentes, secretarias, administrativos... o clase alta, clase media y clase baja... o profesores, ayudantes y alumnos, etc. Ahora en nuestra casa por ejemplo podemos tener a paderes e hijos o mayores y menores, computines y normales o la variedad que deseemos.

Para este ejemplo tendremos dos grupos, familia y visitas, para agregar un grupo es suficiente con ejecutar

groupadd familia

Ahora, cabe destacar que no me sirve tener grupos si no creo usuarios que pertenezcan a ese grupo.

Creando usuarios en Grupos

Por ejemplo supondremos que queremos agregar al padre al grupo (que ya creamos) familia, tendríamos que hacer lo siguiente:

useradd padre -g familia
passwd padre

Con ello al hacer un ls -al /home/ nos debería dar como resultado:

drwxr-xr-x  12 root    root    4096 dic 13 22:56 .
drwxr-xr-x  23 root    root    4096 dic 14 11:19 ..
drwx------   4 padre   familia 4096 dic 14 13:57 padre
drwx------   4 usuario usuario 4096 dic 14 13:14 usuario

Con ello leemos que la carpeta padre tiene por propietario al padre, pero que pertenece al grupo familia. Ahora, al tener mas de un usuario dentro del mismo grupo, por ejemplo a padre, madre e hijo dentro del grupo familia pueden compartir archivos y carpetas entre ellos protegiéndola de que las visitas puedan ver su contenido.

Dando permiso a carpetas y archivos de Usuarios

Supongamos que tenemos ya ejecutados los pasos anteriores y que hemos replicado los pasos para crear dos grupos, familia y visitas, ademas tenemos 3 usuarios en el grupo familia (padre, madre e hijo) y vecino y vecina en el grupo visita (suponiendo que los vecinos son buena onda y de ves en cuando piden el pc para revisar, por ejemplo el e-mail (nunca pasa en la vida real, pero igual). Al ejecutar un ls -al /home/ tenemos:

drwxr-xr-x  12 root    root    4096 dic 13 22:56 .
drwxr-xr-x  23 root    root    4096 dic 14 11:19 ..
drwx------   4 hijo    familia 4096 dic 14 13:59 hijo
drwx------   4 madre   familia 4096 dic 14 13:58 madre
drwx------   4 padre   familia 4096 dic 14 13:57 padre
drwx------   4 usuario usuario 4096 dic 14 13:14 usuario
drwx------   4 vecina  visita  4096 dic 14 14:01 vecina
drwx------   4 vecino  visita  4096 dic 14 14:00 vecino

Al mirar este resultado vemos que existen los grupos y los usuarios que hemos descrito anteriormente, dado a que la 4 columna me muestra los grupos, la 3 los propietarios y la ultima el nombre de sus carpetas (que coincide con su nombre de usuario).

Ahora, en la primer columna podemos notar el tipo y los permisos del archivo o directorio, la primer letra indica que es, lo más común es:

  • d : directorio o carpeta.
  • - : archivo
  • l : link o enlace simbólico.

Existen otros tipos, pero no los detallaré aquí.

Los siguientes caracteres de esta columna lo podemos dividir en tres grupos de a tres, cada grupo esta compuesto por tres tipos de permiso:

Activo

  • r: lectura
  • w: escritura
  • x: ejecución

No activo

  • -: sin permiso

Estos permisos se repiten en este orden (rwx) para el usuario, para el grupo y para los otros.

Teniendo lo anterior relativamente claro, de seguro se preguntan ¿cómo cambiar los permisos?, los permisos se cambian con el comando chmod. Para agregar un permiso lo hacemos con + y para quitarlo con - especificando a quien, que permiso y a quien, por ejemplo, para agregar permiso de lectura y ejecución al grupo al usuario padre se haría así:

cd /home/
chmod g+rx padre

con esto, al hacer un ls -al /home/ tenemos:

drwxr-xr-x  12 root    root    4096 dic 13 22:56 .
drwxr-xr-x  23 root    root    4096 dic 14 11:19 ..
drwx------   4 hijo    familia 4096 dic 14 13:59 hijo
drwx------   4 madre   familia 4096 dic 14 13:58 madre
drwxr-x---   4 padre   familia 4096 dic 14 13:57 padre
drwx------   4 usuario usuario 4096 dic 14 13:14 usuario
drwx------   4 vecina  visita  4096 dic 14 14:01 vecina
drwx------   4 vecino  visita  4096 dic 14 14:00 vecino

Al mirar este resultado podemos apreciar como figuran ahora r y x en el permiso para el grupo. Como hemos hecho esto, hijo y madre pueden entrar a ver el contenido de la carpeta del usuario padre, pero no vecino y vecina (ni usuario), pues pertenecen a distinto grupo, ahora, por ejemplo, si el vecino quiere que los del grupo familia (o cualquiera que no pertenece a su grupo) vean su carpeta, el debe hacer lo siguiente:

cd /home/
chmod o+rx vecino

con esto, al hacer un ls -al /home/ tenemos:

drwxr-xr-x  12 root    root    4096 dic 13 22:56 .
drwxr-xr-x  23 root    root    4096 dic 14 11:19 ..
drwx------   4 hijo    familia 4096 dic 14 13:59 hijo
drwx------   4 madre   familia 4096 dic 14 13:58 madre
drwxr-x---   4 padre   familia 4096 dic 14 13:57 padre
drwx------   4 usuario usuario 4096 dic 14 13:14 usuario
drwx------   4 vecina  visita  4096 dic 14 14:01 vecina
drwx---r-x   4 vecino  visita  4096 dic 14 14:00 vecino

Con ello, vemos que vecino le ha dado permiso a otros para ver el contenido de su carpeta, es decir, madre, padre, hijo y usuario pueden ver lo de vecino, pero no vecina, pues vecina pertenece a su mismo grupo de vecino.

Cabe destacar que uno, como dueño de su carpeta y de los archivos que en ella están, se puede cambiar permisos sin necesidad de ser root, pero no es posible cambiar el permiso de una carpeta o archivo que uno no haya creado, para ello si son necesarios permisos especiales.

Dando permisos especiales (sudo)

El comando sudo ejecuta comandos como un usuario privilegiado, es decir, mediante sudo el usuario puede hacer cosas que sólo root podría hacer. Te preguntaras ¿y porque no hacerlo como root? y la verdad es que no es recomendable que muchos usuarios manejen la clave de root, por ejemplo si administras sitios web y quieres que cada usuario pueda ver los log, no es para nada recomendable pasar a cada uno la clave de root :P, ahora si tu hijo maneja la clave de root, nadie te asegura que no se la de a su amigo, compañero, primo, etc... y al final ni sepas cuantas personas manejan esa clave con todos los riesgos que eso significa.

Para modificar los privilegios de los usuarios o de los grupos de usuarios, debes editar /etc/sudoers o aplicar como root el comando:

visudo

Dando permiso especial a Usuario

Supongamos que solo padre tendrá derecho a administrar usuarios, deberíamos editar y agregar una linea como la que sigue:

padre ALL= NOPASSWD: /usr/sbin/useradd,/usr/sbin/userdel,/usr/sbin/groupadd,/usr/bin/passwd,/bin/chmod

Como se pueden dar cuenta, la linea empieza con el usuario al que se desea habilitar, seguida por el host en donde lo autorizamos (si es uno solo da lo mismo localhost o ALL) luego, decimos que no le solicitará contraseña para ejecutar los comandos y finalmente la lista de comandos separados por coma (,)

Después de esto, el usuario padre, por ejemplo, puede cambiarle la contraseña al hijo mediante el comando:

sudo /usr/bin/passwd hijo

o dado a que passwd esta en el path de padre, simplemente

sudo passwd hijo

Dando permiso especial a Grupos de Usuario

Finalmente hagamos la suposición de que cualquier miembro de la familia puede llegar a instalar un programa, pero por obviedad pasar la contraseña de root a todos es un riesgo innecesario, por lo que lo que se hace es autorizar a los miembros del grupo. Esto debería quedar así:

%familia   ALL= NOPASSWD: /bin/rpm, /usr/bin/up2date, /usr/bin/yum

Notemos que la diferencia entre dar permiso a un usuario v/s un grupo en lo único que cambia es que al grupo se le antepone el caracter %

Conclusiones

  • La administración de usuarios, grupos y sus permisos es importante en equipos con más de un usuario, si bien este articulo es breve pero creo que es explicativo, no abarca todos los puntos pero da el puntapié inicial a la investigación de esta área
  • Cualquier cosa que crean que falte seria bueno la agregaran o hicieran un articulo complementario, se que deben haber quedado aun interrogantes, pero muchas de ellas se que las solucionarán a través del comando man.
  • Si alguien decide complementar o hacer un paralelo con debian y sus hijos sería genial!!.

--RAcl 15:19 14 dic 2007 (ART)

Leer más

Autores de este Resumen

--RAcl 15:19 14 dic 2007 (ART)


Buscar