Академический Документы
Профессиональный Документы
Культура Документы
OBJETIVOS
Ahora que ya conocéis los comandos básicos de Linux, los comandos para los usuarios normales, es momento de
empezar a trabajar como administradores con el sistema, creando y eliminando usuarios, dándoles permisos y
configurando el sistema para adaptarlo a sus necesidades.
Otro aspecto importante es saber consultar qué procesos hay en el sistema y saberlos eliminar si es necesario.
También veremos cómo acceder a dispositivos de almacenamiento y cómo configurar el gestor de arranque, LILO,
para lograr más opciones o rescatar un sistema que no arranca.
REQUISITOS PREVIOS
Tener un sistema Linux instalado, tener soltura con los comandos más habituales (práctica 2) y no haber perdido la
contraseña de root.
Es importante recordar que con Alt+F1, +F2, etc., disponemos de varias consolas virtuales
ACTIVIDADES DE LA PRÁCTICA
Hay que tener en cuenta que, además de los usuarios que hayamos definido nosotros, en Linux hay usuarios
predefinidos (que son con los que trabajan algunas aplicaciones o servidores). Los usuarios normales tienen un
uid más alto que los del sistema (típicamente a partir de 500). root siempre es el usuario 0.
Como medida de seguridad, generalmente en /etc/passwd no están las contraseñas encriptadas sino que en su lugar
hay una x; las contraseñas encriptadas están en el fichero /etc/shadow, que es una réplica de /etc/passwd pero
con las contraseñas encriptadas, y además sólo root puede acceder a él (observaréis que en /etc/shadow sólo se
utilizan los campos usuario y contraseña). De esta forma los usuarios normales pueden ver qué usuarios hay en
el sistema pero sólo root puede añadir usuarios.
Opción Utilidad
-c comentario Permite indicar el campo comentario*.
-d dirOrigen Indica el directorio origen del usuario (por defecto será /home/usuario).
-e AAAA-MM-DD Fecha en la que se desactivará la cuenta del usuario.
-g grupo Grupo primario del usuario. Podemos indicar el nombre del grupo o su
gid**.
-G Grupos secundarios del usuario, separados por comas. Son grupos a los que
grupo1[,grupo2...] también pertenece y por tanto disfruta de su privilegios.
-m Crea el directorio origen del usuario y recrea en él la estructura de ficheros y
directorios que haya en /etc/skel***.
-M No crea directorio origen aunque tengamos CREATE_HOME yes.
-n No crea un grupo con el mismo nombre del usuario. Si no se especifica
grupo (-g), entonces por defecto el usuario pertenecerá al grupo users.
-r Crea una cuenta del sistema (uid<UID_MIN, otra constante de
/etc/login.defs), o sea, con uid pequeño. Normalmente se reservan para
propósitos especiales. Con esta opción, si no se especifica -m no se creará
directorio origen.
-p contraseña Permite indicar la contraseña del usuario, aunque debe estar ya encriptada
(la función de C crypt() permite crear programas que encripten las
contraseñas). Si no se indica contraseña, la cuenta estará desactivada.
-s shell Qué shell tendrá el usuario. Por defecto suele ser /bin/bash.
-u uid Permite especificar el uid del usuario (si no existe ya). Lo habitual es dejar
que el sistema lo asigne.
-D Muestra qué valores por defecto hay en /etc/default/useradd (fichero que
contiene opciones de configuración de useradd).
* Si queremos escribir un parámetro, nombre de fichero, opción, etc. con espacios enmedio podemos hacerlo
escribiéndolo entre comillas dobles: adduser -c “José Pérez” pepito. Ésta no es una característica exclusiva de
adduser, sino de bash, así que se puede usar con cualquier programa o comando.
** Si no se especifica un grupo primario, se crea un grupo con el nombre del usuario, que será su grupo primario
(si creamos al usuario jvalls, entonces creará un nuevo grupo jvalls, o lo asignará si ya existe).
*** Existe un fichero de configuración, /etc/login.defs, que controla las opciones por defecto en la creación de
usuarios. Por ejemplo, esta opción se rige por la constante CREATE_HOME, que puede valer yes o no y que
determina que esta opción se ejecute por defecto o sea necesario especificarla.
7 Cread el usuario pr3. Cambiad a otra consola e intentad entrar con este usuario. ¿Podéis? ¿Por qué no?
(Cuando creais un usuario no tiene contraseña conocida, así que antes de poder entrar con él hay que dársela,
utilizando el comando passwd que se explica a continuación).
Algunos ejemplos:
passwd # Cambia la contraseña del usuario actual. Pide la
# contraseña actual y dos veces la nueva.
Observaréis que no acepta bien cualquier tipo de contraseña: debe tener seis caracteres al menos, no ser una
palabra del diccionario, etc. De todas formas, cuando da el mensaje de “Bad password” realmente la acepta,
aunque avisa de que no es una buena contraseña. La sintaxis es passwd [opciones] [usuario].
Opción Utilidad
-d Borra la contraseña del usuario (la deja en blanco).
-l Bloquea el usuario (antepone algún signo a la contraseña).
-u Desbloquea el usuario
-f Aunque se dé una contraseña en blanco o “mala”, esta opción le obliga a
aceptarla.
7 Cambiad la contraseña de vuestro usuario habitual desde root. Entrad con el usuario y volvedle a poner la
contraseña inicial.
7 Si el único que puede escribir en /etc/shadow es root, ¿cómo puede un usuario normal cambiar su propia
contraseña? La respuesta, en la actividad de permisos.
7 Borrad un usuario que no necesitéis (o cread uno expresamente). Comprobad que los ficheros y directorios
que poseía ahora no aparecen con un usuario/grupo, sino que sólo aparece el número. Utilizad la orden find
para encontrar los ficheros y directorios de /home/ que haya en esta situación y borrarlos.
7 Haced que pertenezcan también al grupo asi; incorporad a Jesús y Laura con comandos, y a Elena y Marcos
modificando los ficheros de configuración. Comprobadlo con la orden groups.
7 Laura ha aprobado todo primero así que tiene que pasar a asi2t como nuevo grupo principal. ¿Cómo lo haríais
mediante comandos? ¿Y modificando los ficheros de configuración?
7 ¿Por qué los ficheros de Laura siguen perteneciendo al grupo asi1t si Laura ha cambiado al asi2t? ¿Por qué no
pertenecen también al grupo asi, al que Laura también pertenece?
7 Eliminad los usuarios Marcos y Elena, que ya han aprobado segundo. Pero eliminad a Marcos con comandos
y a Elena modificando los ficheros de configuración.
Incluso permite un poco de filosofía para averiguar detalles sobre uno mismo: who am i.
Nota técnica: el fichero /var/run/utmp contiene información sobre los usuarios conectados al sistema, aunque no es
legible. En algunos sistemas, /var/run/wtmp contiene información sobre los usuarios que se han conectado al
sistema alguna vez.
Si se consigue contactar con el usuario (que debe tener los mensajes habilitados, ver orden mesg y who -w),
entonces podrán intercambiar mensajes hasta que los dos escriban EOF (Ctrl+D).
Hay que tener en cuenta que los usuarios deberán estar conectados al mismo ordenador, bien físicamente
utilizando las consolas virtuales, bien por red utilizando telnet (que permite trabajar en un ordenador utilizando
el teclado y la pantalla de otro). Más adelante veremos el comando talk, que permite charlar entre distintos
ordenadores.
Actividad 4. Permisos
El sistema de seguridad en Linux tiene como parte fundamental la asignación de permisos para los diferentes
usuarios en ficheros y directorios. Veremos que se trata de un sistema muy detallado y aprenderemos a utilizar
los comandos más importantes para trabajar con permisos.
Cuando hacemos ls –l, nos aparece mucha más información sobre los ficheros y directorios. La primera columna
contiene algo como drwxr-xr-x ó -rw-r--r-- , y de estas diez letras la primera indica el tipo de elemento que se
Consecuencia: aunque no tengas permiso de escritura en un fichero, puedes borrarlo si tienes permiso de escritura
en el directorio que lo contiene, aunque no puedes modificarlo.
Nota: ls -l mostrará una S mayúscula en vez de la minúscula de setuid/setgid cuando estos permisos estén dados en
ficheros que no tienen los permisos de ejecución correspondientes, ya que esto es incoherente.
Hay una serie de comandos que trabajan con permisos, y permiten indicarlos de dos maneras: simbólica o
numérica.
Los permisos especiales se pueden indicar anteponiendo otra cifra octal sumando los valores siguientes: 4 para
setuid, 2 para setgid, 1 para sticky bit.
Los permisos especiales se pueden modificar así (normalemente se utilizan con + o -, no con =):
u+s añade setuid
g+s añade setgid
o+t añade sticky
u-s quita setuid
A continuación veremos las órdenes para manejar todo esto, aunque primero vamos a estudiar una orden que no
tiene mucha relación pero ayudará a trabajar con permisos, pues permite crear cómodamente ficheros nuevos, y
cambiar la fecha de los existentes.
Sólo puede utilizarlo el propietario de los ficheros, aunque si lo único que se quiere es cambiar la fecha de acceso
y modificación al tiempo actual, puede hacerlo cualquiera que tenga permisos de escritura sobre los ficheros.
Opción Utilidad
-a Cambia sólo el tiempo de acceso
-c Si el fichero no existe no lo crea.
-m Sólo cambia el tiempo de modificación
--reference=fichero En vez de poner el tiempo actual, le pone el que
tenga el fichero indicado
- En vez de poner el tiempo actual, le pone el
t[AAAA]MMDDhhmm[.ss indicado en la expresión (sólo puede usarlo el
] propietario)
Como se ve, el tiempo de cambio de estado no se puede cambiar (aunque si "tocamos" un fichero, ese momento
pasará a ser el nuevo tiempo de cambio de estado porque hemos cambiado una propiedad del fichero).
Donde las opciones son opcionales (por eso van entre corchetes y por eso se llaman opciones) y pueden ser las
siguientes:
Opción Utilidad
-v Muestra información de lo que va haciendo con cada
fichero (modo verbose, se suele llamar a esto)
-f Evita que se impriman mensajes de error si no puede
cambiar los permisos de un fichero
-R Cambia los permisos de ficheros y directorios
recursivamente
-- Asigna al fichero los permisos que tenga fichRef.
reference=fichRef
Los permisos se pueden indicar de forma simbólica o numérica (incluso se pueden indicar varios permisos
separándolos con comas), y por último se deben indicar los ficheros (o directorios) que queramos cambiar.
chmod a+x script?# Añade permiso de ejecución a todos los ficheros
# script? (el ? representa a cualquier carácter)
chmod -R 755 . # Pone como 755 todos los ficheros del directorio
# actual y de sus subdirectorios
chmod +x,o-w sc2 # Da permiso de ejecución a todos pero quita de
# escritura a los demás del fichero sc2
Nota: aunque aún no sepáis bien de qué va el tema, adelantamos algo: chmod aplicado a un enlace simbólico no
cambia las propiedades del enlace, sino del fichero a que hace referencia el enlace.
Hay otra forma de especificar los permisos, que es copiárselos de otro fichero. Para ello se utiliza, en lugar de los
permisos, la opción --reference=fichero, con lo que todos los ficheros indicados a continuación pasarán a tener
los mismos permisos que este fichero.
# Los ficheros lista.txt y a.out pasarán a tener los mismos permisos que
# tenga fich1
chmod --reference=fich1 lista.txt a.out
7 Supongamos que tenéis dos usuarios normales, por ejemplo toni y laura (si no, creáis dos). ¿Puede acceder
laura al directorio origen de toni? ¿Puede ver sus ficheros? ¿Y modificarlos? ¿Y borrarlos? Justificad,
comprobando los permisos correspondientes, por qué esto ocurre así.
7 Para cada uno de los casos anteriores, cambiad los permisos para que el sistema haga lo contrario (si antes
dejaba que laura accediese al directorio de toni que ahora no pueda, etc.).
7 Cread, con root, el directorio /home/prueba/. Comprobad que otros usuarios no pueden crear ficheros en él.
Cambiad los permisos para que todos los usuarios puedan crear ficheros en este directorio.
7 Cread un usuario admin que pertenezca al grupo root y dadle todos los permisos para trabajar con el directorio
/root/.
Opciones:
• -v, -f, -R y --reference=fichero, con el mismo significado que en chmod
En vez de especificar un nuevo propietario y/o grupo, se puede copiar de otro fichero con --reference=fichero,
igual que con chmod.
7 Cread el directorio /tmp/trabajo/ para el grupo asi1t. Haced que toni y laura pertenezcan a ese grupo y que
puedan crear ficheros en él, pero los demás usuarios sólo podrán ver los contenidos de ese directorio.
7 Con el usuario laura, cread un fichero ej2 en /home/laura/. Cambiad a laura al grupo primario asi1t. ¿A qué
grupo pertenece el fichero /home/laura/ej2? ¿Por qué no ha cambiado al grupo asi1t? ¿Puede laura acceder
todavía al fichero, si no es de su grupo? ¿Por qué?
Importante: recordad que el grupo de un fichero no tiene nada que ver con el grupo de su propietario, pueden ser
totalmente distintos (aunque por defecto son el mismo grupo).
Hay que advertir que la máscara no contiene los valores de los permisos sino su complemento. O sea, lo que se le
resta a los permisos totales (777) para obtener los permisos por defecto. Así, si nuestra máscara es 022, los
permisos por defecto de nuestros ficheros serán 777-022=755 (restando cifra a cifra, ciudado).
Actividad 5. Enlaces
En Linux se distinguen dos tipos de enlaces: los “duros” (hardlinks) y los simbólicos (symlinks), y conviene hablar
de ellos por separado.
Un enlace duro es el nombre de un fichero; es un enlace en el sentido de que permite al usuario acceder a
información que está almacenada en algún lugar “misterioso” del disco duro (ese lugar es el inodo, para
entendernos el número de bloque del disco en que está el fichero; con ls -i podemos ver el número de inodo de
los ficheros y directorios). Así que cuando estamos haciendo “cat fich.txt” estamos utilizando un enlace duro
(el que tiene de nombre “fich.txt”) para acceder al contenido del fichero.
Lo novedoso en Linux es que un mismo fichero puede tener varios nombres, o sea, varios enlaces duros, todos
ellos igual de importantes. Si un fichero tiene dos enlaces duros (por ejemplo /home/luis/fich1.txt y
/home/pedro/práctica.txt), cualquier modificación en alguno de ellos repercutirá en el mismo fichero, porque al
fin y al cabo ambos hacen referencia al mismo fichero.
Si se borra un enlace duro, el fichero sigue siendo accesible desde los demás enlaces duros que tenga; cuando se
borre su último enlace duro será cuando se borre el fichero en sí. Por cierto, ls -l dice, en la segunda columna,
el número de enlaces duros que tiene un mismo fichero.
Hay que tener en cuenta que rm lo que hace es borrar un enlace duro (y el fichero, pero sólo si su número de
enlaces duros llega a cero). Si se hace mv de un fichero (y no cambia de sistema de ficheros, o sea, no lo
estamos moviendo del disco duro al disquete, por ejemplo) no se mueve el fichero en sí, que permanece en el
mismo inodo, sino que se cambia un enlace duro por otro; los demás enlaces duros siguen siendo válidos.
Por otra parte, un enlace simbólico es un pequeño fichero que hace referencia a un fichero (estrictamente
hablando, a un enlace duro de un fichero). Con ls -l, los enlaces simbólicos tienen una l en el primer carácter
(tipo de fichero); además se muestra a qué fichero hacen referencia:
lrwxrwxrwx 1 root root 7 ene 13 2002 /usr/sbin/adduser -> useradd*
Este enlace puede utilizarse para acceder al fichero real, pero siempre teniendo en cuenta que, si por ejemplo
hacemos vi enlaceSim, Linux averiguará cuál es el fichero a que hace referencia y abrirá este fichero.
Si se borra un fichero o se renombra (mueve) el enlace duro correspondiente, los enlaces simbólicos se quedan
“colgando”.
Para hacerse mejor una idea, un enlace simbólico es como un acceso directo de Windows.
Por si tenéis curiosidad, los símbolos . y .. son enlaces duros al directorio actual y al directorio padre
respectivamente.
ln [opción] objetivo(s)
Opción Utilidad
-d Permite que root (y sólo él) haga enlaces duros de
directorios (en principio sólo se pueden hacer
enlaces duros de directorios).
-f Borra los ficheros existentes si coinciden con los
enlaces a crear.
-i Pregunta antes de borrar ficheros si coinciden con
los enlaces a crear.
-s Crea enlaces simbólicos (por defecto son duros).
# Segunda: con dos nombres de fichero crea un enlace del segundo al primero
cd luis
ln prueba1.txt listado.txt
# Crea un nuevo enlace, en el mismo directorio, llamado listado.txt
# No es necesario que el enlace esté en el mismo directorio:
ln prueba1.txt /usr/local/listado.txt
7 Cread un fichero llamado asignaturas que contenga los nombres de vuestras asignaturas. Cread un enlace
simbólico al mismo en el mismo directorio. Haced ls -l y ved qué muestra (fijaos en el número de enlaces del
fichero original). Abrid el enlace con vi y comprobad que abre el fichero original; para verificar que se trata
del mismo fichero, haced un cambio y comprobad que haciendo cat asignaturas se ve el cambio. (Distinguidlo
de una copia).
7 Borrad el fichero original. ¿Qué pasa con el enlace?
Existe un fichero, /etc/fstab (file systems table) que lista los dispositivos que se montan habitualmente y dónde (en
qué directorio) se deben montar. Para cada sistema contiene una línea de la forma:
# dispositivo puntoMontaje tipo opciones
/dev/hda5 / ext2 defaults 1 1
El dispositivo suele indicar una entrada en el directorio /dev/, que contiene los dispositivos del sistema (devices)
como entradas tipo /dev/hda (disco duro primero, hard disk), /dev/hda5 (partición 5 del disco primero),
/dev/hdb3 (partición 3 del disco duro segundo (b)), /dev/fd0 (unidad de disquete primera, floppy disk), etc.
El punto de montaje es el directorio en que queremos ver el sistema montado; típicamente será un subdirectorio de
/mnt/, como /mnt/windows/ o /mnt/cdrom/, pero no es necesario que esté en /mnt/.
El tipo de un sistema de ficheros indica el formato que utiliza, y depende del tipo de unidad y del sistema
operativo empleado en su creación. Los tipos más habituales son:
• ext2: extended file system 2, el sistema de ficheros de Linux
• vfat: virtual fat, que emula los sistemas FAT16 y 32, o sea, los de DOS y Windows 9x
• nfs: network file system, el sistema de ficheros en red de Linux
• iso9660: sistema de ficheros por defecto, que por ejemplo utilizan los CDs de datos
• smbfs: sistema de ficheros en red por Samba, o sea, compatible en red con Windows
• auto: Linux intenta averiguar el tipo de sistema de ficheros analizando el medio
Una de las opciones más importantes es user, que permite que cualquier usuario monte ese sistema (si no sólo
puede montarlos root). Esto es lógico permitirlo por ejemplo en las disqueteras y las unidades de CD. También
está la opción noauto, que evita que ese sistema de ficheros se monte automáticamente.
Sin embargo para los sistemas de ficheros que ya están en /etc/fstab no es necesario indicar el dispositivo y el
directorio de montaje, vale con indicar uno de los dos valores y mount ya pone el resto:
mount /mnt/floppy # mount deduce el tipo y el punto de montaje
mount /dev/fd0 # Equivalente a la anterior
Opción Utilidad
-V Muestra la versión de mount.
-h Muestra un texto de ayuda.
-v Modo prolijo (o charlatán; verbose en inglés); muestra más
información de las operaciones que hace.
-f (fake) Hace sólo una simulación, no lleva a cabo los cambios
(muy útil junto con -v).
-r Monta el sistema de ficheros en modo sólo lectura.
-w Monta el sistema de ficheros en modo lectura y escritura (es el
valor por defecto).
-t tipoSF Permite indicar el tipo de sistema de fichero (si no se indica
Linux intentará averiguarlo).
-a Monta automáticamente todos los sistemas indicados en
/etc/fstab que no tengan la opción noauto y no estén montados ya.
-o noatime El sistema montado no modificará los tiempos de acceso, con lo
que éste será más rápido.
-o noexec No permitirá ejecución de programas (útil si montamos la
partición Windows y queremos evitar ejecutar .exe por error).
-o nosuid No permite ficheros con SUID/SGID.
-o remount “Remonta” un sistema de ficheros ya montado para cambiar
alguna opción (por ejemplo pasar de sólo lectura a lectura y
escritura). Atención: NO sirve para, por ejemplo, cambiar un
disquete. Para eso hay que desmontar, cambiarlo y volver a
montar.
-o sync Obliga a que los datos se guarden de forma síncrona en el sistema
de ficheros (o sea, en cuanto las aplicaciones lo soliciten, que se
almacenen, en lugar de mantenerse en una memoria temporal;
hace más lentas las operaciones pero garantiza más la integridad
de los datos, como por ejemplo en una base de datos).
7 Coged un disquete, montadlo e intentad leer sus contenidos. Especificad vosotros el tipo, no os sirváis del
reconocimiento automático. (Nota: el disquete de arranque de Linux no sirve, tiene un formato especial.)
7 Desmontad el disquete y probad a montarlo en modo de sólo escritura. Comprobad que funciona.
7 Intentad leer los contenidos de un CD-ROM. Probad a escribir en él. Comprobad que, si no se desmonta, no se
puede sacar de la unidad.
Al arrancar el sistema, LILO muestra un prompt o un menú que permite elegir el sistema operativo a arrancar;
generalmente, si pasa un cierto tiempo y el usuario no elige nada, LILO arranca una opción por defecto.
Opciones globales
Opción Significado Ejemplos
boot=dispArranque Nombre del dispositivo de arranque. boot=/dev/fd0
boot=/dev/hda
compact Permite agrupar la información para que arranque más compact
rápido (por ejemplo si lo hace desde un disquete).
default=etiqueta Etiqueta de la imagen por defecto (si no se indica ninguna default=linux
será la primera descripción que aparezca).
delay=retardo Expresa, en décimas de segundo, lo que LILO esperará delay=50 # Espera 5s
hasta elegir la opción por defecto.
message=fichero Toma el mensaje de bienvenida (el que aparece antes de message=/root/saludo.txt
las opciones) del fichero indicado. Un Ctrl+L en el
fichero permite borrar la pantalla.
optional Las imágenes que no encuentre las omitirá. optional
password=contrase LILO pide una contraseña antes de permitir el arranque de password=lorito
ña cualquier imagen.
restricted LILO pide la contraseña sólo si el usuario intenta restricted
especificar líneas de comandos (por ejemplo, el famoso
linux single).
Nótese que las tres últimas opciones pueden especificarse individualmente dentro de la descripción de cada
imagen (por ejemplo para que sólo pida contraseña al intentar arrancar cierta imagen y no otra).
La descripción de cada imagen comenzará con la directiva image si se trata de una imagen de Linux o con la
directiva other si se trata de otro sistema operativo.
El uso habitual de este comando es el de aplicar los cambios introducidos en lilo.conf; para ello, tras editar
apropiadamente este fichero, ejecutaremos lilo (sin más opciones) y se introducirán los cambios en el
dispositivo de arranque.
Interesa conocer las opciones -t (test: sólo prueba, no hace los cambios) y -v (modo verbose o prolijo, o sea, que
muestra mucha información sobre lo que va haciendo) para asegurarse de las operaciones antes de aplicarlas
realmente.
También es posible eliminar LILO de una unidad (por ejemplo, del disco duro) con la opción -u; para ello, LILO
recupera el sector de arranque original del dispositivo a partir de las copias de seguridad de /boot/boot.*.
Un último uso es el de añadir la posibilidad de arranque a otros dispositivos. Aquí puede resultar útil la opción -b,
que permite indicar un dispositivo de arranque en lugar del que figure en lilo.conf.
7 Personalizad las etiquetas de arranque de vuestro LILO y poned una contraseña a la opción “windows”. Œ
Los trabajos (jobs) en Linux representan las distintas tareas que está realizando un usuario en un momento dado, y
es bastante interesante saber controlarlas para maximizar la productividad en el trabajo y realizar varias tareas
a la vez; aunque esto es menos importante al disponer de varias consolas virtuales, en ocasiones no se dispone
de ellas o hay otras circunstancias que recomiendan la gestión de varios trabajos desde una misma consola.
Otro concepto, que se ve con más profundidad en otros créditos, es el de señal, que es un mecanismo de
comunicación entre procesos que permite enviar avisos entre distintos procesos. De momento lo usaremos para
“matar” procesos, aunque tiene muchos más usos.
Según la opción elegida, ps mostrará más o menos información en un listado en el que cada fila es un proceso y
cada columna una característica suya. El significado de cada columna, según el título que aparece en la primera
fila, es el siguiente:
Columna Significado
USER Usuario propietario del proceso (o sea, el que lo ha ejecutado)
PID PID del proceso
%CPU Porcentaje de CPU que está utilizando
%MEM Porcentaje de memoria que está utilizando
VSZ Tamaño de memoria virtual utilizada por el proceso (virtual
memory size)
RSS Memoria RAM real que está ocupando (resident size)
TTY Terminal asociada al proceso (? si el proceso no tiene ninguna
terminal asociada, como un servidor)
STAT Estado del proceso:
• R: ejecutable (runnable), o sea, que en cualquier momento puede
entrar en ejecución*
• S: durmiendo (sleeping), o sea, está esperando alguna señal
• T: parado en traza (trace). No es lo mismo que S, en general
muestran una T los procesos que están siendo controlados por
otro, como un depurador que ejecute paso a paso un programa
• Z: zombie, representa un proceso que por algún error ha
terminado sin que su padre lo esperase, y que se queda en un
estado de suspensión llamado zombie
START Momento en que ha comenzado
TIME Tiempo de procesador que lleva consumido
COMMAND Línea de comandos con que se ha puesto en ejecución
*Recordad que en un sistema operativo multitarea puede haber varios procesos listos para ejecutarse pero en un
momento dado sólo uno de ellos se estará ejecutando (si sólo hay un procesador en el sistema, claro). De hecho
si se está ejecutando el ps, no es posible que justo en el mismo momento se esté ejecutando otro proceso; sin
embargo, los procesos R pueden tomar el procesador en cualquier momento.
Las opciones de ps son las siguientes (atención, no llevan un guión delante, se escribe “ps a”, por ejemplo):
Opción Significado
u Listado para el usuario (o sea, es un listado largo; si no se pone, sale un listado
corto).
f Listado en forma de bosque (forest) de procesos, o sea, muestra las relaciones
padre-hijo. Un bosque es un conjunto de árboles.
a Muestra los procesos de todos (all) los usuarios. Sí, aunque no seas root. Es una
opción de dudosa seguridad, pero ahí está.
• Cuando esté en ejecución en primer plano, presionar Ctrl+z (o sea, mantener Ctrl y entonces la z).
find / -nouser -or -nogroup > lista
# Y una vez se ponga en marcha, presionad Ctrl+z: se queda parado en el fondo
Al hacerlo, bash nos muestra un número entre corchetes que es su número de trabajo y permite obtener
información de él y volverlo a traer al frente con los comandos que vienen a continuación.
[1] 215 # Identificador de trabajo y PID
Opciones de jobs:
Opción Significado
-l Lista también los PIDs de los trabajos.
-n Muestra información sólo de los trabajos cuyo estado ha cambiado desde la
última consulta.
-r Muestra información sólo de los jobs ejecutándose (running).
-s Muestra información sólo de los jobs parados (stopped).
7 Abrid vi y enviadlo al fondo con Ctrl+Z. Enviadle la señal SIGTERM y, si no funciona, enviadle SIGKILL
para terminarlo.
7 Abrid una sesión con algún otro usuario y abrid algún programa (vi). Cambiad a vuestro primer usuario e
intentad matar todos los procesos del otro. ¿Podéis hacerlo? Pensad qué tendríais que hacer para poder matar
los procesos de otro usuario.
7 Abrid una sesión con la terminal cuatro (Alt+F4). Volved a otra sesión e intentad matar la sesión de la
terminal cuatro (o sea, el proceso bash en esa terminal).