6 Usuarios y Procesos en Linux
-
Upload
santiago-garcia-blanco -
Category
Documents
-
view
20 -
download
2
description
Transcript of 6 Usuarios y Procesos en Linux
1
1 USUARIOS Y GRUPOS.1.1 Usuarios y grupos.Los usuarios
Los usuarios se identifican por un nombre de conexin o login, al que se asocia un nmero llamado UID (IDentificador de Usuario) y al menos un GID (IDentificador de Grupo).
El UID (IDentificador de Usuario) es el valor que Linux utiliza internamente para identificar al usuario.
Los grupos
Un grupo agrupa usuarios.Cada usuario forma parte de, al menos, un grupo. Dentro de los grupos a los que pertenece un usuario, habr uno que ser grupo principal o primario. Al resto de grupos se les llama grupos secundarios.
El GID (IDentificador de Grupo) es un nmero que Linux utiliza internamente para identificar el grupo.1.2 Tipos de usuarios.En Linux se pueden identificar tres tipos de usuarios:
root
Tambin llamado superusuario o administrador.
Su directorio de trabajo est en /root.
Es la nica cuenta con privilegios sobre todo el sistema.
Su uid es 0.
usuarios especiales: bin, daemon, adm, lp, mail, ...
Tambin llamadas cuentas del sistema o de no login.
No tienen directorio de trabajo ni contrasea porque no se utilizan para iniciar sesin con ellas.
Su uid suele estar entre 1 y UID_MIN (valor definido en /etc/login.defs).
usuarios normales
Su directorio de trabajo suele estar en /home.
Su uid suele definirse a partir de UID_MIN
1.3 Ficheros de configuracin.Los ficheros de configuracin son ficheros de texto que estn en /etc.1.3.1 /etc/login.defsDefine las variables que controlan los aspectos de la creacin de usuarios.
Algunas variables son:
UID_MIN: Valor mnimo de uid para usuarios normales.
UMASK: Valor de umask por defecto.
PASS_MIN_LEN: longitud mnima de la contrasea.
1.3.2 /etc/passwd
En este fichero se definen todas las cuentas del sistema. Es un archivo de texto que se crea en el momento de instalar el sistema con la cuenta de root y las cuentas especiales.
Este fichero contiene una lnea para cada usuario con esta estructura:
login:contrasea:UID:GID:comentario:directorio_personal:shellEjemplo:
pepe:x:1000:1000:Pepe Prez:/home/pepe:/bin/bashDescripcin de cada campo:
Campoletra
asoc.Descripcin
loginlEs el login o nombre de conexin del usuario
contraseaEn los sistemas antiguos en este campo se almacenaba la contrasea cifrada.
Actualmente contiene:
una x si la contrasea est en /etc/shadow
un asterisco (*) que impide al usuario iniciar sesin local
UIDuUID del usuario
GIDgGID del grupo principal del usuario
comentarioccomentario, puede ser el nombre completo del usuario
directorioddirectorio personal del usuario, donde entra el usuario cuando inicia sesin
shellsintrprete de comandos que se va a ejecutar cuando ese usuario inicie sesin
1.3.3 /etc/group
Fichero de grupos. Contiene una lnea para cada grupo con la siguiente estructura:
grupo:contrasea:GID:usuario1,usuario2,...
Ejemplo:
adm:x:4:pepe,mariano
Descripcin de cada campo:
CampoDescripcin
grupoNombre del grupo
contraseaContrasea del grupo; se utiliza algunas veces, para operaciones especiales
GIDGID del grupo
usuarioslista de usuarios que tienen a este grupo como grupo secundario; los usuarios estn separados por comas.
1.3.4 /etc/shadow
Fichero que contiene las contraseas de los usuarios (cifradas).
Adems, contiene informacin sobre las condiciones de la contrasea: cul es la vigencia mnima, en qu fecha se cambi por ltima vez, etc.1.3.5 /etc/gshadowFichero que contiene las contraseas de los grupos (cifradas).
En la mayora de las distribuciones Linux no se utiliza.1.4 Comandos para gestionar usuarios y grupos.1.4.1 Crear, modificar y eliminar usuarios: useradd, usermod y userdel
Crear un usuario: useradd
Este comando crea el usuario, un grupo principal con el mismo nombre, y las contraseas del usuario y del grupo.
Sintaxis:
useradd [opciones] login
Opciones
-m
Obliga a que se cree el directorio personal
-u UID
Asigna el UID especificado a ese usuario
-g GID
Asigna el GID especificado a ese usuario como grupo principal
-G lista_gidmodifica la lista de grupos a los que el usuario pertenece como grupossecundarios; los grupos estarn separados por comas y sin espacios
-d directorioAsigna ese directorio al usuario como directorio personal
-c comentarioAsigna ese comentario al usuario
-s shell
Asigna esa shell (intrprete de comandos) al usuario
-p passwordEstablece un password para ese usuarioModificar un usuario: usermod
Sintaxis
usermod [opciones] login
Opciones
Como en useradd:
-u, -g, -G, -d, -c y -s
Adems:
-L
(lock) bloquea la cuenta
-U
(unlock) desbloquea la cuenta
-l login
modifica el loginEliminar un usuario: userdel
Este comando elimina el usuario, su grupo principal y las contraseas del usuario y del grupo. Tambin elimina el directorio personal, si se indica con la opcin -r.
Sintaxis
userdel [opciones] login
Opciones:
-r
elimina el directorio personal del usuario
Ejemplo: Crear al usuario Pepe Prez, creando a la vez su directorio personal.
Cambiar despus el comentario (nombre completo)
Y por ltimo, eliminarlo, eliminando tambin su directorio personal.$ sudo useradd -c Pepe Prez -m pepe
$ sudo usermod -c Jos Prez pepe
$ sudo userdel -r pepe1.4.2 Crear, modificar y eliminar grupos: groupadd, groupmod y groupdel
Crear un grupo: groupadd
Sintaxis
groupadd nombre_grupoModificar un grupo: groupmod
Sintaxis:
groupmod [opciones] nombre_grupo
Opciones:
-n nombrerenombra el grupo
-g GID
modifica el GIDEliminar un grupo: groupdel
No se puede eliminar un grupo si es el grupo principal de un usuario.
Si se elimina un grupo, hay que tener en cuenta que probablemente quedarn ficheros y/o directorios que tienen un grupo propietario que ya no existe.
Sintaxis:
groupdel nombre_grupoEjemplo: Crear el grupo clientes; cambiar despus el nombre y eliminarlo.$ sudo groupadd clientes
$ sudo groupmod -n clientes2010 clientes
$ sudo groupdel clientes20101.4.3 Otros comandos de usuarios: id, passwd, newgrp
Comando id
El comando id proporciona informacin sobre un usuario. Si no se especifica el usuario, mostrar informacin sobre el usuario que ejecuta el comando.Sintaxis
id [usuario]Ejemplo: Obtener informacin sobre el usuario actual y sobre el usuario root$ id
uid=1000 (pepe) gid=1000 (pepe) grupos=4 (adm), 20(dialout), 24(cdrom), 25(floppy), 29(audio),30(dip), 44(video), 46(plugdev), 107(fuse), 109(lpadmin), 115(admin), 124(sambashare),1000(pepe)
$ id root
uid=0 (root) gid=0 (root) grupos=0 (root)Usuario actual:
usuario actual: uid=1000 (login=pepe)
grupo principal del usuario: gid=1000 (nombre del grupo=pepe)
grupos secundarios: gid=4 (nombre del grupo=adm), 20(dialout), 24(cdrom)...
Usuario root: uid=0; su grupo principal se llama root (gid=0) y slo pertenece a ese grupo.Crear o modificar contraseas: passwd
Permite crear o modificar la contrasea de un usuario. Si no se especifica usuario, se entiende que se quiere modificar la contrasea del usuario actual.
Sintaxis:
passwd [login]
Este comando puede ser utilizado para:
Modificar la contrasea del usuario actual (cualquier usuario). Por seguridad, se le pedir la contrasea antigua.
Modificar la contrasea de otro usuario (usuario root). El usuario root puede modificar las contraseas de todos los usuarios del sistema sin necesidad de que conozca la contrasea anterior. Incluso puede asignar una contrasea que no cumpla los requisitos del sistema.Cambiar el grupo principal de un usuario: newgrp
Se utiliza para cambiar el grupo principal de manera temporal
Sintaxis:
newgrp [nuevo_grupo]
El nuevo_grupo tiene que ser un grupo secundario del usuario.
newgrp sin parmetros vuelve a establecer como grupo principal el que tena inicialmente el usuario.Ejemplo:touch a
# Crear el fichero a
newgrp admin
# Temporalmente el grupo admin es el principal
touch b
# Crear el fichero b
newgrp
#Restaurar el grupo principal del usuario
ls -l a b
# Ver el grupo propietario de a y b
2 PROCESOS Y CONTROL DE PROCESOS.2.1 Los procesos en Linux.Los dos pilares fundamentales de los sistemas Unix son el sistema de archivos y la gestin de procesos.
Qu hace un proceso:
Un proceso es un programa en ejecucin. Los procesos nacen, tienen procesos hijos, cambian de estado: duermen, mueren, pueden ser asesinados e incluso pueden convertirse en zombies.
Informacin que tenemos sobre cada proceso:
PID, process id, identificador de proceso. Nmero asociado a cada proceso.
PPID, parent ppid, pid del proceso padre del proceso.
UID, user ID, identificador de la cuenta de usuario asociada al proceso TTY, terminal asociada al proceso.
S, estado del proceso: terminado, esperando, en ejecucin, etc.
PRI, prioridad del proceso.
TIME, tiempo que lleva ejecutndose el proceso
CMD, comando que ha generado el proceso.2.1.1 El PID
Linux asigna a cada proceso una identificacin numrica denominada PID (process identification). Al resto de los procesos se les asignar un nmero consecutivo a partir de ste.
Cuando un proceso muere, su PID no vuelve a ser utilizado.
2.1.2 Jerarqua de los procesos.
El proceso init es el proceso del que dependen todos los dems procesos: init es el antecesor de todos los procesos: todos los procesos dependen de otro, su padre, el que les ha creado, excepto init.
Cuando se va a crear un proceso, se toma como referencia el del padre, se hace una copia de l y sobre esa copia se hacen las modificaciones correspondientes para que se ejecute el comando deseado.
El proceso init tiene pid=1, es el primer proceso iniciado por el sistema. El proceso init tiene ppid=0, que es un pseudoproceso que representa el inicio del sistema.
2.1.3 Demonios o servicios
Los demonios son procesos que se ejecutan en segundo plano para dar algn tipo de servicio. Son lo que en otros sistemas se denominan servicios.
2.2 Ejecutar un programa en background &.Se trata de ejecutar un proceso sin que bloquee la terminal. Normalmente los procesos que se ejecutan en background son:
procesos lentos
procesos que no interactan con el usuario, es decir, no leen nada del teclado ni envan nada a la pantalla.
Para ejecutar un proceso en background: escribimos el carcter & al final de un comando.
Ejemplo:sleep 5 &El bash escribir una lnea similar a esta:
[1] 8747
[1]: nmero de proceso en background
8747: pid del proceso sleep 5
y presentar el prompt para que podamos seguir introduciendo rdenes: no se queda bloqueado hasta que termine el proceso.
Cuando el proceso ejecutado en segundo plano finaliza, el shell presentar un mensaje similar a este:[1]+ Done sleep 5
2.3 Seales que se envan a un proceso.A un proceso se pueden enviar las siguientes seales:
Interrumpir / abortar
Normalmente CTRL+C
Detener momentneamente:Normalmente CTRL+Z
Fin de fichero
Normalmente CTRL + D2.4 Comandos de procesos.2.4.1 Gestionar procesos: sleep, ps, pstree, top, kill.Hacer una pausa: sleepHace una pausa de n segundos.
Sintaxis:
sleep n [unidad]
Valor de unidad:
ssegundos (valor predeterminado)
mminutos
hhoras
ddas
El comando ps
El comando ps (process status) permite obtener informacin sobre los procesos en ejecucin. Por defecto, muestra informacin slo del usuario actual y de la terminal actual.
Sintaxis:
ps [opciones] [pid...]
Opciones:
-f(full), muestra una informacin ms completa
-l(long) Muestra toda la informacin de cada proceso
-eMuestra todos los procesos del sistema
-u usuariosPermite indicar una lista de usuarios separados por una coma
-g gruposLo mismo para grupos
-t terminalesLo mismo para terminales
Ejemplos$ ps
$ ps -ef
# Esta forma es muy utilizada
$ ps -u root
$ ps -l
Se muestra a continuacin el significado de algunas columnas:ColumnaSignificado
FBanderas (flags) del proceso
SEstado del proceso:
R, running o runnable (en ejecucin o en la cola de ejecucin)
S, sleeping (esperando que se produzca un evento)
T, parado
Z, zombie, terminado pero no comunicado a su padre
UIDUser ID, identificador del usuario
PIDProcess ID, identificador del proceso.
PPIDParent Process ID, pid del proceso padre
CFactor de Prioridad, cuanto mayor sea este valor, tendr ms prioridad
PRIPrioridad del proceso
NINice, valor para el clculo de prioridad
STIMEHora de inicio de la ejecucin proceso
TTYTerminal desde el que se ejecut el proceso
TIMETiempo acumulado de uso de CPU del proceso
CMDComando ejecutado
Mostrar los procesos en memoria en forma de rbol: comando pstreeEl comando pstree muestra la estructura jerrquica de los procesos en memoria.Mostrar la actividad del procesador: comando topMuestra informacin de la actividad del procesador y de los recursos que estn consumiendo los procesos.Envo de seales a un proceso: comando killEl comando kill se utiliza para enviar una seal a un proceso.
La seal es uno de los medios de comunicacin entre los procesos. Cuando se enva una seal a un proceso, ste debe interceptarla y actuar en consecuencia. Los procesos pueden ignorar algunas seales, pero otras no.
Sintaxis:
kill [-l] -seal pid...
Donde:
-l
Muestra una lista de seales.
-seal
La seal es un nmero, aunque tambin se puede utilizar su nombre.
Algunas seales son:SealSignificado
1 (SIGHUP)Seal que manda un proceso a sus procesos hijos cuando termina.
2 (SIGINT)Interrupcin de un proceso (como las teclas SUPR o Ctrl+C)
9 (SIGKILL)Seal que no se puede ignorar, fuerza al proceso a terminar
15 (SIGTERM)Seal que pide al proceso que termine con normalidad, no lo fuerza.
Es la seal por defecto
Ejemplo$ sleep 5000 &
# Ejecutar en 2 plano
[2] 15133
$ kill -9 15133
# Enviar seal al proceso
[1]+ Terminado (killed) sleep 5000
PAGE 10