martes, 19 de mayo de 2009

Grupos, usuarios y Permisos

Todo sistema linux permite el uso del mismo ordenador por diferentes usuarios. Para mantener una cierta seguridad de los datos de cada uno se asignan una serie de permisos y grupos.

Que usuarios necesito?

Como mínimo 2, root y otro mas, root ya existe y lo usaremos SOLAMENTE! para las tareas de mantenimiento del sistema, nunca para leer documentación, jugar, navegar por internet, experimentar comandos, para todo esto se usan los demás usuarios.

Creando usuarios

Hay varios comandos, el mas sencillo es

$ useradd nombre_de_usuario ; passwd nombre_de_usuario

Que crea un nuevo usuario con una serie de opciones predefinidas, estas opciones pueden cambiarse manualmente editando el archivo /etc/passwd (ATENCIÓN! un mal uso de este archivo puede llevar a la imposibilidad total de hacer un login en el sistema).

Comandos relacionados

$ users

Lista los nombres de los usuarios conectados al sistema,

$ w

y

$ who

Lista los usuarios e informa sobre la consola en la que están, el tiempo que llevan conectados y mas.

$ userdel nombre_de_usuario

Elimina un usuario

$ su

Salta de modo usuario a modo root.

Usuarios de sistema

Ademas de root y los usuarios que hayamos creado, el sistema tiene un grupo de usuarios que son necesarios y no debemos eliminar, son por ejemplo: bin, mail, news, operator, games,etc.

Grupos

Los grupos son una forma de dar los mismos permisos a un conjunto de usuarios, de manera que puedan trabajar en grupo.
Por defecto se crea un grupo por cada usuario, y esa política es la mejor en la mayoría de los casos, ademas existen grupos de sistema como: lp, mem, ftp, etc.

Permisos

Los permisos son necesarios para saber que usuarios pueden hacer ciertas cosas y cuales no. Por ejemplo, no es normal que dejemos entrar alguien por telnet y que nos modifique el /etc/passwd,
por ejemplo. El permiso de ejecución para un directorio significa que se puede acceder al contenido de ese directorio.

Los permisos de un link son los del archivo al que apunta.

Viendo y reconociendo permisos

Los permisos de un archivo se ven con la orden

$ ls -l

El formato de salida se parece a esto:

drwx------ 5 dani dani 1024 Jan 5 00:54 Desktop
drwx------ 2 dani dani 1024 Jan 2 19:48 Mail
drwxr-xr-x 2 dani dani 1024 Dec 27 16:27 docs

Lo mas importante son esas primeras letras ilegibles de cada linea. La primera letra indica el tipo de archivo (- archivo normal, d directorio, l link, b dispositivo). Las demás letras se leen de tres en tres, des esta manera:


d/rwx/r-x/r-x
El primer trío se refiere al propietario del archivo, el segundo a los demás miembros del grupo del propietario y el tercero al resto. Las letras son: r (permiso de lectura), w (permiso de escritura), x (permiso de ejecución).
Después los dos nombres se refieren al nombre del propietario y nombre del grupo al que pertenece el archivo, de esta manera nuestro archivo docs del ejemplo quedaría así:

drwxr-xr-x 2 dani dani 1024 Dec 27 16:27 docs

Que significa:

d: se trata de un directorio
rwx: permiso de lectura/escritura/ejecucion para el propietario
r-x: permiso de lectura/ejecución para el grupo
r-x: permiso de lectura/ejecución para el resto
Numero de inodos
dani: nombre del propietario
dani: nombre del grupo
1024: bytes (tamaño)
Dec 27 16:27: fecha de creación o de ultima modificación
docs: nombre

Cambiando permisos

El comando es

$ chmod permisos fichero

La forma de indicar los permisos es sencilla, se usa una letra para designar a quien se le quieren cambiar los permisos ("a" todos, "u" propietario, "g" grupo, "o" otros) después se pone un símbolo + (para dar el permiso) o - (para quitarlo) y finalmente se pone el permiso o los permisos que queremos cambiar ("r" lectura, "w" escritura, "x" ejecución).
Un ejemplo sencillo seria dar permiso de ejecución para todos a un fichero, la orden seria:

$ chmod a+x archivo

Cambiando grupo y propietario

Las ordenes son

$ chown usuario archivo

Para cambiar el propietario y

$ chgrp grupo archivo

Para cambiar el grupo.

Permisos especiales

A parte de los permisos básicos existen otros dos permisos, el sticky bit (completamente desfasado) y el SUID o SETUID. El SUID es un permiso que da permisos de root a un proceso aunque haya sido lanzado por un usuario, esto es necesario, por ejemplo para que usuarios normales puedan arrancar el entorno gráfico o puedan conectarse a internet. Este permiso se simboliza con la letra "s" y se aplica así:

$ chmod a+s archivo

No hay comentarios: