Anda di halaman 1dari 35

CFGS

ASIX / DAM / DAW


1r

Mdul 1

Implantaci de Sistemes Operatius / Sistemes Informtics


UF2

PRCTICA 3: ADMINISTRACIN DE UN SISTEMA LINUX


OBJETIVOS
Ahora que ya conocis los comandos bsicos de Linux, los comandos para los usuarios normales, es momento
de empezar a trabajar como administradores con el sistema, creando y eliminando usuarios, dndoles 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.
Tambin veremos cmo acceder a dispositivos de almacenamiento y cmo configurar el gestor de arranque, LILO,
para lograr ms opciones o rescatar un sistema que no arranca.

REQUISITOS PREVIOS
Tener un sistema Linux instalado, tener soltura con los comandos ms habituales (prctica 2) y no haber perdido la
contrasea de root.
Es importante recordar que con Alt+F1, +F2, etc., disponemos de varias consolas virtuales

ACTIVIDADES DE LA PRCTICA
Actividad 1.

Creacin y eliminacin de usuarios

Las medidas de seguridad en Linux, como en la mayora de SOs, se basan en la definicin de usuarios y la
asignacin de derechos y restricciones a estos usuarios.
En Linux el fichero /etc/passwd contiene la informacin de los usuarios del sistema. Est compuesto por lneas
como la siguiente, de forma que cada lnea representa a un usuario:
usuario:contrasea:uid:gid:comentario:origen:shell

usuario: es el nombre de usuario con el que acceder al sistema y se identificar (el que se pone en el login,
como por ejemplo root). Como mximo conviene que tenga 8 caracteres.

contrasea: la contrasea del usuario, aunque encriptada, ya que el fichero /etc/passwd lo pueden leer todos
los usuarios.

uid: user identifier. Un nmero que identifica al usuario, y es la forma con que Linux identifica internamente a
un usuario, aunque nosotros no lo podemos utilizar directamente a no ser que el comando nos d opcin a ello.

gid: group identifier. Un nmero que identifica un grupo (los grupos estn definidos en /etc/group, ms adelante
hablaremos de ellos) y aqu indica cul es el grupo primario de un usuario (un usuario puede pertenecer, de forma
secundaria, a otros grupos).

Joan Serrano

Revisi 0.2

1/35

CFGS

ASIX / DAM / DAW


1r

Mdul 1

Implantaci de Sistemes Operatius / Sistemes Informtics


UF2

comentario: texto libre, que generalmente es el nombre real del usuario o una descripcin breve.
origen: cul es el directorio origen del usuario (normalmente /home/usuario).
shell: qu shell (intrprete de comandos) utilizar el usuario por defecto. Suele ser /bin/bash.

Hay que tener en cuenta que, adems 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
ms alto que los del sistema (tpicamente a partir de 500). root siempre es el usuario 0.
Como medida de seguridad, generalmente en /etc/passwd no estn las contraseas encriptadas sino que en su
lugar hay una x; las contraseas encriptadas estn en el fichero /etc/shadow, que es una rplica de /etc/passwd
pero con las contraseas encriptadas, y adems slo root puede acceder a l (observaris que en /etc/shadow slo
se utilizan los campos usuario y contrasea). De esta forma los usuarios normales pueden ver qu usuarios hay en
el sistema pero slo root puede aadir usuarios.

adduser (useradd): aadir usuario


El programa real es useradd, pero suele haber un enlace (o sea, una especie de alias) llamado adduser que es
ms legible. Ambos estn en /usr/bin; conviene ir familiarizndose con la estructura de directorios de Linux. Este
programa permite aadir un usuario al sistema.
Lo que hace es aadir una lnea para el usuario en /etc/passwd, otra en /etc/shadow, crear su directorio origen y
copiar en ste una serie de ficheros de configuracin bsicos. Slo puede ejecutarlo root.
La sintaxis bsica es adduser [opciones] usuario:
adduser pepito
adduser -g asi1t manolito

Opcin
-c comentario
-d dirOrigen
-e AAAA-MM-DD
-g grupo
-G
grupo1[,grupo2...]
-m
-M
-n

Joan Serrano

# Crea el usuario pepito


# Crea el usuario manolito y lo asigna al
# grupo asi1t

Utilidad
Permite indicar el campo comentario*.
Indica el directorio origen del usuario (por defecto ser /home/
usuario).
Fecha en la que se desactivar la cuenta del usuario.
Grupo primario del usuario. Podemos indicar el nombre del grupo o
su gid**.
Grupos secundarios del usuario, separados por comas. Son grupos
a los que tambin pertenece y por tanto disfruta de su privilegios.
Crea el directorio origen del usuario y recrea en l la estructura de
ficheros y directorios que haya en /etc/skel***.
No crea directorio origen aunque tengamos CREATE_HOME yes.
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.

Revisi 0.2

2/35

CFGS

ASIX / DAM / DAW


1r

Mdul 1

Implantaci de Sistemes Operatius / Sistemes Informtics


UF2

-r

-p contrasea

-s shell
-u uid
-D

Crea una cuenta del sistema (uid<UID_MIN, otra constante de /etc/


login.defs), o sea, con uid pequeo. Normalmente se reservan para
propsitos especiales. Con esta opcin, si no se especifica -m no se
crear directorio origen.
Permite indicar la contrasea del usuario, aunque debe estar ya
encriptada (la funcin de C crypt() permite crear programas que
encripten las contraseas). Si no se indica contrasea, la cuenta
estar desactivada.
Qu shell tendr el usuario. Por defecto suele ser /bin/bash.
Permite especificar el uid del usuario (si no existe ya). Lo habitual es
dejar que el sistema lo asigne.
Muestra qu valores por defecto hay en /etc/default/useradd (fichero
que contiene opciones de configuracin de useradd).

* Si queremos escribir un parmetro, nombre de fichero, opcin, etc. con espacios enmedio podemos hacerlo
escribindolo entre comillas dobles: adduser -c Jos Prez pepito. sta no es una caracterstica 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 configuracin, /etc/login.defs, que controla las opciones por defecto en la creacin de usuarios.
Por ejemplo, esta opcin se rige por la constante CREATE_HOME, que puede valer yes o no y que determina que esta
opcin se ejecute por defecto o sea necesario especificarla.
1.- Cread el usuario pr3. Intentad loguearos con este usuario. Podis?
passwd: cambiar contrasea de usuario
Con este comando podemos cambiar la contrasea de un usuario, activarlo cuando lo acabamos de crear y
desactivarlo cuando no queremos que acceda al sistema pero no queremos perder su informacin. Este comando lo
puede utilizar un usuario para cambiar su contrasea (no la de otros usuarios, claro) y root para cambiar la de todos
los usuarios.
Algunos ejemplos:
passwd
passwd pepito

#
#
#
#

Cambia la contrasea del usuario actual. Pide la


contrasea actual y dos veces la nueva.
Cambia la contrasea del usuario pepito (debemos ser root
o pepito para poder hacer esto).

Observaris que no acepta bien cualquier tipo de contrasea: 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 contrasea. La sintaxis es passwd [opciones] [usuario].

Joan Serrano

Revisi 0.2

3/35

CFGS

ASIX / DAM / DAW


1r

Mdul 1

Implantaci de Sistemes Operatius / Sistemes Informtics


UF2

Opcin
-d
-l
-u
-f

Utilidad
Borra la contrasea del usuario (la deja en blanco).
Bloquea el usuario (antepone algn signo a la contrasea).
Desbloquea el usuario
Aunque se d una contrasea en blanco o mala, esta opcin le
obliga a aceptarla.

2.- Cambiad la contrasea de vuestro usuario habitual desde root. Entrad con el usuario y volvedle a poner la
contrasea inicial.
3.- Si el nico que puede escribir en /etc/shadow es root, cmo puede un usuario normal cambiar su propia
contrasea? La respuesta, en la actividad de permisos.
userdel: borra un usuario
Este comando elimina un usuario del sistema (lo borra de los ficheros /etc/passwd y /etc/shadow). Si el usuario
est trabajando actualmente, puede seguir hacindolo, pero cuando salga no podr volver a entrar. Slo tiene una
opcin, que se muestra en los ejemplos:
userdel pepe
userdel -r pepe

# Borra el usuario pepe


# Borra el usuario pepe y su directorio origen

Este comando slo puede ejecutarlo root.


Tambin podemos eliminar usuarios eliminando manualmente las entradas correspondientes en /etc/passwd y /
etc/shadow y borrando su directorio origen. Si se ha creado un grupo especial para este usuario conviene borrarlo
tambin, con groupdel.
De ambas formas slo borramos el directorio origen, pero un usuario puede tener ms ficheros en el sistema; el
comando find permite encontrar los ficheros que pertenecen a un usuario o a un grupo, para poder eliminarlos
todos.
Al borrar un usuario hay que borrar tambin sus ficheros o asignarlos a algn usuario especial.
4.- Borrad un usuario que no necesitis (o cread uno expresamente). Comprobad que los ficheros y directorios que
posea ahora no aparecen con un usuario/grupo, sino que slo aparece el nmero. Utilizad la orden find para encontrar
los ficheros y directorios de /home/ que haya en esta situacin y borrarlos.
usermod: modifica un usuario
Este comando permite modificar los datos bsicos de la cuenta de un usuario, y por tanto tiene las mismas opciones
que useradd, a la que hay que aadir -l usuario para cambiar el nombre del usuario (el uid no se puede cambiar, ya
que es lo que realmente identifica al usuario).

Actividad 2.

Gestin de grupos

Joan Serrano

Revisi 0.2

4/35

CFGS

ASIX / DAM / DAW


1r

Mdul 1

Implantaci de Sistemes Operatius / Sistemes Informtics


UF2

El fichero /etc/group indica qu grupos hay en el sistema y qu usuarios pertenecen a ellos. Su estructura es muy
parecida a la de /etc/passwd pero tiene menos informacin:
grupo:contrasea:gid:miembros

grupo: nombre del grupo


contrasea: este campo no se suele utilizar, permite indicar una contrasea para el grupo de forma que se
pueda entrar en l aun no perteneciendo (usando el comando newgrp). En todo caso la contrasea encriptada
no estara aqu, sino en el fichero /etc/gshadow, con el mismo objetivo que /etc/shadow. En la prctica estas
contraseas no se utilizan.

gid: group identifier, nmero que identifica al grupo, y es el valor que utiliza Linux internamente. Los gid<500
suelen estar reservados para grupos especiales del sistema (500 es un valor definido en /etc/login.defs con el
nombre de GID_MIN).

miembros: aqu se listan los usuarios que tienen este grupo como secundario (no los que lo tienen como
primario, que ya lo tienen apuntado en su fichero /etc/passwd).

Este fichero tambin es legible por todos los usuarios.


groups: a qu grupos pertenece un usuario
Este comando permite ver a qu grupos pertenecemos o a qu grupos pertenecen otros usuarios. Lo puede lanzar
cualquier usuario, y puede averiguar los grupos de cualquier otro usuario (al fin y al cabo sa es informacin que
est en /etc/passwd y /etc/group, disponible para todos).
groups
groups pepe
groups pepe root mari

# Indica a qu grupos pertenece el usuario actual


# A qu grupos pertenece pepe
# A qu grupos pertenecen pepe, root, mari

groupadd: crear grupo


Crea un nuevo grupo. La sintaxis es groupadd [opciones] grupo, y las opciones son:
Opcin
-g gid
-r

Utilidad
Obliga a que el grupo tenga un gid
determinado.
Permite crear un grupo de sistema
(gid<GID_MIN).

groupdel: borrar grupo


Borra un grupo. No se puede borrar el grupo primario de un usuario; hay que eliminar primero el usuario en cuestin
(o cambiarlo de grupo primario) y despus borrar el grupo.
Uso: groupdel grupo.
5.- Cread la siguiente estructura de grupos y usuarios:

Joan Serrano

Revisi 0.2

5/35

CFGS

ASIX / DAM / DAW


1r

Mdul 1

Implantaci de Sistemes Operatius / Sistemes Informtics


UF2

Grupo
asi1t
asi2t

Usuario
Jess
Laura
Elena
Marcos

6.- Haced que pertenezcan tambin al grupo asi; incorporad a Jess y Laura con comandos, y a Elena y Marcos
modificando los ficheros de configuracin. Comprobadlo con la orden groups.
7.- Laura ha aprobado todo primero as que tiene que pasar a asi2t como nuevo grupo principal. Cmo lo harais
mediante comandos? Y modificando los ficheros de configuracin?
8.- Por qu los ficheros de Laura siguen perteneciendo al grupo asi1t si Laura ha cambiado al asi2t? Por qu no
pertenecen tambin al grupo asi, al que Laura tambin pertenece?
9.- Eliminad los usuarios Marcos y Elena, que ya han aprobado segundo. Pero eliminad a Marcos con comandos y a
Elena modificando los ficheros de configuracin.

Actividad 3.

Trabajo con usuarios

Para poder practicar con las operaciones de gestin de usuarios y grupos, es importante conocer los siguientes
comandos de trabajo con usuarios: cambio del usuario actual, listado de usuarios conectados, etc.
su (set user): cambiar usuario actual
Aunque hayamos entrado en el sistema como cierto usuario, es posible que queramos trabajar temporalmente
como otro usuario (tpicamente, que necesitemos lanzar una orden como root). Para esto tenemos el comando su,
que nos permite cambiar de usuario, trabajar con l, y volver con nuestro usuario mediante la orden exit. Hay que
tener en cuenta que podemos anidar un su en otro, y tendremos que hacer tantos exit como sea necesario.
su pepito
su

# Cambia al usuario pepito


# Cambia a root

Al cambiar a otro usuario pedir su contrasea, salvo si el usuario actual es root (que puede convertirse en los
usuarios que quiera).
who: quin hay conectado al sistema
Muestra una lista de los usuarios conectados al sistema, concretamente su nombre, la terminal a la que est
conectada (recordemos que con Alt+Fn disponemos de varias terminales: tty1, tty2, etc.), la fecha y hora de
entrada, y si est conectado desde otro ordenador.
Este comando lo puede ejecutar cualquier usuario:
$who
roottty1
pepetty2

01 05 15:32
01 05 17:15

Joan Serrano

Revisi 0.2

6/35

CFGS

ASIX / DAM / DAW


1r

Mdul 1

Implantaci de Sistemes Operatius / Sistemes Informtics


UF2

La opcin -i aade otra columna que indica cunto tiempo lleva inactivo ese usuario (o un . si ha trabajado en el
ltimo minuto).
La opci -w (o --message) muestra si el usuario acepta mensajes de la orden write (que veremos a continuacin).
Tras la informacin de cada usuario sale un + si los acepta, un - si no, y un ? si no se puede determinar (porque no
se encuentra su terminal).
Incluso permite un poco de filosofa para averiguar detalles sobre uno mismo: who am i.
Nota tcnica: el fichero /var/run/utmp contiene informacin sobre los usuarios conectados al sistema, aunque no
es legible. En algunos sistemas, /var/run/wtmp contiene informacin sobre los usuarios que se han conectado al
sistema alguna vez.

Actividad 4.

Permisos

El sistema de seguridad en Linux tiene como parte fundamental la asignacin 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 ms importantes para trabajar con permisos.
Cuando hacemos ls l, nos aparece mucha ms informacin 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
est visualizando (d=directorio; -=fichero normal; l= enlace simblico, que se explica ms abajo; b=dispositivo
de bloques, como un disco; c=dispositivo de caracteres, como el teclado; p=FIFO con nombre (named pipe), las
tuberas que se utilizan para comunicar programas; S=socket, que permite comunicar varios ordenadores entre s).
Pero lo que nos interesa es la siguiente parte: los nueve caracteres que indican los permisos que tienen los ficheros
(o directorios, o lo que sean: usaremos el trmino general fichero). Hay que agruparlos de tres en tres caracteres,
con lo que tenemos:

Las tres primeras letras indican los permisos de lectura, escritura y ejecucin del fichero para el propietario del
fichero (el nombre que muestra el ls l; suele ser quien lo ha creado, aunque esto se puede cambiar).

Las otras tres, los permisos de lectura, escritura y ejecucin del fichero para los miembros del grupo del fichero
(cada fichero pertenece a un grupo, como indica ls l, y adems ese grupo no tiene por qu ser el grupo primario
del propietario).

Las tres ltimas indican los mismos permisos para el resto de usuarios del sistema.
Sobre un fichero normal, los permisos tienen los siguientes significados:

Lectura: se puede leer el contenido del fichero.

Escritura: se puede modificar el contenido del fichero.

Ejecucin: se puede ejecutar el fichero (aplicable a programas binarios y scripts).


Sin embargo el significado de los permisos de un directorio es ligeramente distinto:

Joan Serrano

Revisi 0.2

7/35

CFGS

ASIX / DAM / DAW


1r

Mdul 1

Implantaci de Sistemes Operatius / Sistemes Informtics


UF2

Lectura: se pueden listar los contenidos del directorio (podemos hacer un ls).
Escritura: se pueden crear y borrar ficheros.
Ejecucin: se puede acceder al directorio (hacer cd al directorio).

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.
Hay una serie de comandos que trabajan con permisos, y permiten indicarlos de dos maneras: simblica o
numrica.
NOTACIN NUMRICA DE PERMISOS
Los tres grupos de tres permisos que hemos visto se ven como tres cifras octales (base 8), la primera para el
propietario, la segunda para el grupo y la tercera para los dems, de forma que los permisos que quieran darse a
cada categora de usuarios sern el resultado de sumar los siguientes valores: 1 para ejecucin, 2 para escritura, 4
para lectura.
751 indica todos los permisos para el propietario (4+2+1=7), lectura y ejecucin para los del
grupo (4+1=5), y ejecucin slo para los dems (1)

NOTACIN SIMBLICA DE PERMISOS


En primer lugar hay que indicar a quin queremos cambiarle los permisos: al propietario (u, de user), al grupo (g), a
los dems (o, de other) o a todos (a, de all).
A continuacin indicaremos qu queremos hacer con los ficheros: un + aade los permisos indicados, un los quita
y un = deja slo los que indiquemos en la orden. Enseguida se ilustrar con ejemplos.
Por ltimo hay que indicar qu permisos queremos modificar: lectura (r), escritura (w), ejecucin (x).
u+x
aade permiso de ejecucin al propietario (y deja el resto como estn)
go-w
quita permiso de escritura al grupo y a los dems
o=rx
deja slo lectura y ejecucin a los dems (los de propietario y grupo los
deja como estn)
o= deja a los dems sin ningn permiso
o=g
truco para dar a los dems los permisos que tenga el grupo
a-w
quita permiso de escritura a todos
+w da permiso de escritura a todos (si no se indican usuarios, por defecto es a)

A continuacin veremos las rdenes para manejar todo esto, aunque primero vamos a estudiar una orden que no
tiene mucha relacin pero ayudar a trabajar con permisos, pues permite crear cmodamente ficheros nuevos, y
cambiar la fecha de los existentes.
touch: cambiar tiempo y crear fichero
Su funcin principal es cambiar la fecha y la hora de los ficheros afectados, si bien una utilidad casi ms importante
es que, si alguno de los ficheros indicados no existe, lo crea. Respecto a un fichero se almacenan tres tiempos
diferentes, y esto no slo afecta a touch sino tambin a otros comandos como find:

Joan Serrano

Revisi 0.2

8/35

CFGS

ASIX / DAM / DAW


1r

Mdul 1

Implantaci de Sistemes Operatius / Sistemes Informtics


UF2

Tiempo de acceso: cundo se ha ledo por ltima vez (asociado a la letra a).
Tiempo de cambio de estado: cundo se ha cambiado sus propiedades por ltima vez (permisos, propietario,
tiempos, etc.) (asociado a la letra c).

Tiempo de modificacin: cundo se ha modificado por ltima vez (asociado a la letra m).

Slo puede utilizarlo el propietario de los ficheros, aunque si lo nico que se quiere es cambiar la fecha de acceso y
modificacin al tiempo actual, puede hacerlo cualquiera que tenga permisos de escritura sobre los ficheros.
touch [opciones] fichero(s)

Opcin
-a
-c
-m
--reference=fichero
-t[AAAA]
MMDDhhmm[.ss]

Utilidad
Cambia slo el tiempo de acceso
Si el fichero no existe no lo crea.
Slo cambia el tiempo de modificacin
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
indicado en la expresin (slo 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).
touch -a fich
touch noExisto

# El tiempo de acceso de fich pasa a ser el actual


# Si no existe, crea el fichero noExisto (si existe ya,
# cambia su tiempo de acceso y modificacin al actual)
touch -m -t200105032215 secreto
# Modificado el 3/5/2001 a las 22:15

10.- Cread un fichero nuevo y ponedle como fecha de modificacin el 10/01/2014 a las 19:45. Comprobad que se ve
esta nueva fecha haciendo ls -l.
chmod (change mode): cambiar permisos
Permite cambiar los permisos de uno o ms ficheros o directorios. Slo puede utilizarlo el propietario de los ficheros
(o root, por supuesto). La sintaxis general es:
chmod [opciones] permisos fichero(s)

Donde las opciones son opcionales (por eso van entre corchetes y por eso se llaman opciones) y pueden ser las
siguientes:
Opcin
Utilidad
-v
Muestra informacin de lo que va haciendo con
cada fichero (modo verbose, se suele llamar a

Joan Serrano

Revisi 0.2

9/35

CFGS

ASIX / DAM / DAW


1r

Mdul 1

Implantaci de Sistemes Operatius / Sistemes Informtics


UF2

-f
-R

esto)
Evita que se impriman mensajes de error si no
puede cambiar los permisos de un fichero
Cambia los permisos de ficheros y directorios
recursivamente
Asigna al fichero los permisos que tenga fichRef.

-reference=fichRe
f
Los permisos se pueden indicar de forma simblica o numrica (incluso se pueden indicar varios permisos
separndolos con comas), y por ltimo se deben indicar los ficheros (o directorios) que queramos cambiar.
chmod a+x script? # Aade permiso de ejecucin a todos los ficheros
# script? (el ? representa a cualquier carcter)
chmod -R 755 .
# Pone como 755 todos los ficheros del directorio
# actual y de sus subdirectorios
chmod +x,o-w sc2 # Da permiso de ejecucin a todos pero quita de
# escritura a los dems del fichero sc2

Nota: aunque an no sepis bien de qu va el tema, adelantamos algo: chmod aplicado a un enlace simblico no
cambia las propiedades del enlace, sino del fichero a que hace referencia el enlace.
Hay otra forma de especificar los permisos, que es copirselos de otro fichero. Para ello se utiliza, en lugar de los
permisos, la opcin --reference=fichero, con lo que todos los ficheros indicados a continuacin pasarn a tener los
mismos permisos que este fichero.
# Los ficheros lista.txt y a.out pasarn a tener los mismos permisos que
# tenga fich1
chmod --reference=fich1 lista.txt a.out

11.- Supongamos que tenis dos usuarios normales, por ejemplo toni y laura (si no, creis 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.
12.- 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.).
13.- 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.
14.- Cread un usuario admin que pertenezca al grupo root y dadle todos los permisos para trabajar con el directorio /
root/.
chown (change owner): cambia el propietario de un fichero
Este comando permite cambiar la posesin de un fichero. En principio un fichero es de quien lo crea, pero a
menudo interesa cambiar la propiedad del fichero, o el grupo al que pertenece. Este comando slo se puede aplicar
a los ficheros sobre los que se tiene permiso de escritura, y slo te lo puedes asignar a ti mismo (salvo si eres root,
ya que entonces lo puedes asignar a quien quieras).
chown [opciones] propietarios fichero(s)

Joan Serrano

Revisi 0.2

10/35

CFGS

ASIX / DAM / DAW


1r

Mdul 1

Implantaci de Sistemes Operatius / Sistemes Informtics


UF2

Opciones:

-v, -f, -R y --reference=fichero, con el mismo significado que en chmod


Al especificar los nuevos propietarios podemos indicar el propietario, el grupo o ambos:
chown
chown
chown
chown

pepe fich1
pepe:asi1t fich1
pepe: fich1
:asi1t fich1

#
#
#
#
#

fich1
fich1
fich1
fich1
asi1t

pasa a ser de pepe y sigue en el mismo grupo


pasa a ser de pepe y del grupo asi1t
pasa a ser de pepe y del grupo primario de pepe
sigue siendo del mismo dueo pero pasa al grupo
(hace lo mismo que chgrp)

En vez de especificar un nuevo propietario y/o grupo, se puede copiar de otro fichero con --reference=fichero, igual
que con chmod.
15.- 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 dems usuarios slo podrn ver los contenidos de ese directorio.
16.- 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 todava 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).
chgrp (change group): cambia el grupo de un fichero
Este comando permite cambiar un fichero de grupo (lo que tambin puede hacerse con chown). Las opciones y la
sintaxis son las mismas, y tambin dispone de la variante con --reference=fichero:
chgrp [opciones] nuevoGrupo fichero(s)
chgrp [opciones] --reference=fichero fichero(s)

umask (user mask): mscara de permisos por defecto


O sea, cuando se crea un nuevo fichero, por defecto con qu permisos se crea? Pues podemos cambiarlo para
que nuestro trabajo resulte ms cmodo.
# Muestra el estado actual de la mscara de permisos en modo numrico
umask
022
# Muestra el estado actual de la mscara en modo simblico
umask -S
u=rwx,g=rx,o=rx
# Cambia la mscara a 022 (debemos indicarla numricamente)
umask 022

Joan Serrano

Revisi 0.2

11/35

CFGS

ASIX / DAM / DAW


1r

Mdul 1

Implantaci de Sistemes Operatius / Sistemes Informtics


UF2

Hay que advertir que la mscara 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 mscara es 022, los
permisos por defecto de nuestros ficheros sern 777-022=755 (restando cifra a cifra, ciudado).

Actividad 5.

Enlaces

En Linux se distinguen dos tipos de enlaces: los duros (hardlinks) y los simblicos (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 informacin que est almacenada en algn lugar misterioso del disco duro (ese lugar es el inodo, para
entendernos el nmero de bloque del disco en que est el fichero; con ls -i podemos ver el nmero 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/
prctica.txt), cualquier modificacin 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 dems 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
nmero 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 slo si su nmero 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 dems enlaces duros siguen siendo vlidos.
7.- Pregunta: sabiendo que el nmero de inodo es lo que indica realmente qu fichero es, o sea, que todos los enlaces
duros de un mismo fichero mostrarn el mismo nmero de inodo, cmo averiguarais cules son los enlaces duros
que tiene un fichero?
Por otra parte, un enlace simblico es un pequeo fichero que hace referencia a un fichero (estrictamente hablando,
a un enlace duro de un fichero). Con ls -l, los enlaces simblicos tienen una l en el primer carcter (tipo de fichero);
adems 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 cul 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 simblicos se quedan
colgando.

Joan Serrano

Revisi 0.2

12/35

CFGS

ASIX / DAM / DAW


1r

Mdul 1

Implantaci de Sistemes Operatius / Sistemes Informtics


UF2

Para hacerse mejor una idea, un enlace simblico es como un acceso directo de Windows.
Por si tenis curiosidad, los smbolos . y .. son enlaces duros al directorio actual y al directorio padre
respectivamente.
ln: crea un enlace (link)
Este comando permite crear nuevos enlaces para un fichero dado. Por defecto crea enlaces duros, aunque tiene
una opcin para crearlos simblicos. La sintaxis general y sus opciones son:
ln [opcin] objetivo(s)

Opcin
-d

-f
-i
-s

Utilidad
Permite que root (y slo l) haga enlaces
duros de directorios (en principio slo se
pueden hacer enlaces duros de directorios).
Borra los ficheros existentes si coinciden con
los enlaces a crear.
Pregunta antes de borrar ficheros si
coinciden con los enlaces a crear.
Crea enlaces simblicos (por defecto son
duros).

Hay tres formas bsicas de utilizarlo:


# Primera: con un nombre de fichero crea un enlace a ese fichero en el
# directorio actual y con el mismo nombre
# Por ejemplo: si estamos en /home/ podemos hacer
ln luis/prueba1.txt
# Y eso crear un enlace prueba1.txt pero en el directorio /home/
# 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
# Tercera: varios nombres de fichero y un directorio al final, con lo que
# crea enlaces a todos los ficheros en el directorio indicado
ln prueba1.txt ../pepe/notas.txt /home/miguel/p1.c /root/
# Crea enlaces llamados prueba1.txt, notas.txt y p1.c en /root/
# La siguiente instruccin da error porque hay ms de dos nombres y el
# ltimo no es un directorio
ln prueba1.txt ../pepe/notas.txt /home/miguel/p1.c

Joan Serrano

Revisi 0.2

13/35

CFGS

ASIX / DAM / DAW


1r

Mdul 1

Implantaci de Sistemes Operatius / Sistemes Informtics


UF2

8.- Cread un fichero llamado asignaturas que contenga los nombres de vuestras asignaturas. Cread un enlace
simblico al mismo en el mismo directorio. Haced ls -l y ved qu muestra (fijaos en el nmero 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).
9.- Borrad el fichero original. Qu pasa con el enlace?
20.- Cread un fichero llamado semana con los das de la semana. Cread un enlace duro llamado semana2. Repetid el
primer ejercicio con este nuevo enlace y comprobad que el comportamiento es el mismo (hay una diferencia; cul?).
21.- Repetid el segundo ejercicio. Qu ocurre ahora?

Actividad 6.

Gestin de procesos y trabajos

Una parte esencial en la administracin de un sistema Linux es el control de los procesos que hay en el sistema
en cada momento, y conocer las herramientas necesarias para poderlos eliminar en un momento dado es
especialmente importante. Esto es an ms evidente en un servidor, en el que los procesos no se ven en pantalla
sino que, en principio, estn ocultos, y es importante saber obtener cules hay, en qu estado se encuentran y qu
consumo de recursos estn haciendo.
Los procesos en Linux tienen una relacin padre-hijo entre ellos, o sea, el proceso que ejecuta a otro es su padre; si
por ejemplo desde bash (que es un proceso) ejecutamos un find, ste ser hijo de aqul.
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 gestin de varios trabajos desde una misma consola.
Un trabajo, que al fin y al cabo es una orden completa de un usuario (o sea, todos los comandos enlazados
con tuberas en una misma orden, tipo ls *.exe | grep prueba | less), tiene un nmero asociado para poderlo
identificar posteriormente. Adems se puede encontrar en dos estados: se puede estar viendo cmo se ejecuta
en su terminal (se dice que est en primer plano o en foreground), o puede estarse ejecutando en la sombra, o
sea, ejecutndose pero sin que se vean sus resultados; entonces se dice que est en el fondo (background). Hay
comandos y opciones de bash para cambiar el estado de los trabajos.
Otro concepto, que se ve con ms profundidad en otros crditos, es el de seal, que es un mecanismo de
comunicacin entre procesos que permite enviar avisos entre distintos procesos. De momento lo usaremos para
matar procesos, aunque tiene muchos ms usos.
ps: muestra el estado de los procesos (processor share)
Este comando genera un listado de los procesos que hay en el sistema en un momento dado. La sintaxis
general es:
ps [opciones][pids]

Joan Serrano

Revisi 0.2

14/35

CFGS

ASIX / DAM / DAW


1r

Mdul 1

Implantaci de Sistemes Operatius / Sistemes Informtics


UF2

Donde pids es una lista de PIDs (process identifiers, los nmeros que identifican a cada proceso) separada por
comas y sin espacios (ni entre ellos ni respecto a la ltima opcin). Permite ver informacin slo de los procesos
indicados:
ps a13,42
ps 44,32

# La a es la opcin utilizada, y 13 y 42 son los procesos


# Muestra la informacin de esos procesos, sin ninguna opcin

Segn la opcin elegida, ps mostrar ms o menos informacin en un listado en el que cada fila es un proceso y
cada columna una caracterstica suya. El significado de cada columna, segn el ttulo 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
Tamao 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 ejecucin*

S: durmiendo (sleeping), o sea, est esperando alguna


seal

T: parado en traza (trace). No es lo mismo que S, en


general muestran una T los procesos que estn siendo
controlados por otro, como un depurador que ejecute paso
a paso un programa

Z: zombie, representa un proceso que por algn error


ha terminado sin que su padre lo esperase, y que se queda
en un estado de suspensin llamado zombie
START
Momento en que ha comenzado
TIME
Tiempo de procesador que lleva consumido
COMMAND
Lnea de comandos con que se ha puesto en ejecucin
*Recordad que en un sistema operativo multitarea puede haber varios procesos listos para ejecutarse pero en un
momento dado slo uno de ellos se estar ejecutando (si slo 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.

Joan Serrano

Revisi 0.2

15/35

CFGS

ASIX / DAM / DAW


1r

Mdul 1

Implantaci de Sistemes Operatius / Sistemes Informtics


UF2

Las opciones de ps son las siguientes (atencin, no llevan un guin delante, se escribe ps a, por ejemplo):
Opcin
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 opcin de dudosa seguridad, pero ah est.
x
Muestra los procesos no controlados por ninguna terminal (servidores y
similares).
h
No incluye la cabecera en el listado.
r
Muestra slo los procesos con STAT=R
22.- Encontrad todos los procesos del usuario root.
Opciones de bash para enviar trabajos al background
Principalmente hay dos formas de enviar un trabajo al fondo:

Poner un & al final de su lnea de comandos para que empiece a ejecutarse en el fondo.
find / -nouser -or -nogroup > lista & # Se ejecuta, pero en el fondo

Cuando est en ejecucin 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 nmero entre corchetes que es su nmero de trabajo y permite obtener
informacin de l y volverlo a traer al frente con los comandos que vienen a continuacin.
[1] 215

# Identificador de trabajo y PID

fg: traer un trabajo al frente (foreground)


El uso de este comando es muy sencillo: especificando un nmero de trabajo, lo vuelve a poner en ejecucin en el
frente:
fg %1
%1

# Si 1 es el nmero de trabajo, lo trae al frente


# y lo pone en ejecucin
# Poner simplemente esto equivale a %1

bg: hacer que contine ejecutndose un trabajo en el fondo (background)


Cuando suspendemos un trabajo con Ctrl+z podemos seguir ejecutndolo pero en el fondo con bg:
bg %2
%2 &

# Se pone en ejecucin, pero en el fondo


# Equivale a lo anterior

jobs: lista de los trabajos del usuario

Joan Serrano

Revisi 0.2

16/35

CFGS

ASIX / DAM / DAW


1r

Mdul 1

Implantaci de Sistemes Operatius / Sistemes Informtics


UF2

Este comando muestra qu trabajos tiene el usuario. Concretamente, muestra el nmero de trabajo, el estado
(stopped o running) y la orden de comandos que lo ha generado.
Sintaxis:
jobs [opciones] [identificadorTrabajo]

Si se indica un identificador de trabajo slo muestra informacin de ese trabajo:


jobs %3
[3] Stopped

vi lista.txt

Opciones de jobs:
Opcin
-l
-n
-r
-s

Significado
Lista tambin los PIDs de los trabajos.
Muestra informacin slo de los trabajos cuyo estado ha cambiado
desde la ltima consulta.
Muestra informacin slo de los jobs ejecutndose (running).
Muestra informacin slo de los jobs parados (stopped).

23.- Crear un script que espere a que el usuario le introduzca un nmero. Hacer que el script se ejecute en fondo y
despus traerlo al frente.
kill: enva una seal al proceso
Aunque no siempre es para matarlo, como es su uso ms habitual se le ha quedado ese nombre al comando. Se
puede usar especificando un nombre o un nmero de seal y un proceso o un trabajo:
kill
kill
kill
kill
kill

-l
-s
-s
-9
-9

SIGKILL 152
SIGKILL %4
152
%4

#
#
#
#
#

Muestra el listado de seales y su nmero


Enva la seal SIGKILL al proceso 152
Enva la seal SIGKILL al trabajo 4
Enva la seal 9 al proceso 152
Enva la seal 9 al trabajo 4

De todas las seales, es importante conocer SIGTERM (pide a un proceso/trabajo que termine, pero de buenas
maneras; segn el programa que sea, se puede negar) y SIGKILL (obliga a que el proceso/trabajo termine; casi
ningn proceso puede resistirse a esto).
24.- Abrid vi y enviadlo al fondo con Ctrl+Z. Enviadle la seal SIGTERM y, si no funciona, enviadle SIGKILL para
terminarlo.

Joan Serrano

Revisi 0.2

17/35

CFGS

ASIX / DAM / DAW


1r

Mdul 1

Implantaci de Sistemes Operatius / Sistemes Informtics


UF2

PRCTICAS DE REDES DE REA LOCAL


PRCTICA 3: ADMINISTRACIN DE UN SISTEMA LINUX
OBJETIVOS
Ahora que ya conocis los comandos bsicos de Linux, los comandos para los usuarios normales, es momento
de empezar a trabajar como administradores con el sistema, creando y eliminando usuarios, dndoles 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.
Tambin veremos cmo acceder a dispositivos de almacenamiento y cmo configurar el gestor de arranque, LILO,
para lograr ms opciones o rescatar un sistema que no arranca.

REQUISITOS PREVIOS
Tener un sistema Linux instalado, tener soltura con los comandos ms habituales (prctica 2) y no haber perdido la
contrasea de root.
Es importante recordar que con Alt+F1, +F2, etc., disponemos de varias consolas virtuales

ACTIVIDADES DE LA PRCTICA
Actividad 1.

Creacin y eliminacin de usuarios

Las medidas de seguridad en Linux, como en la mayora de SOs, se basan en la definicin de usuarios y la
asignacin de derechos y restricciones a estos usuarios.
En Linux el fichero /etc/passwd contiene la informacin de los usuarios del sistema. Est compuesto por lneas
como la siguiente, de forma que cada lnea representa a un usuario:
usuario:contrasea:uid:gid:comentario:origen:shell

usuario: es el nombre de usuario con el que acceder al sistema y se identificar (el que se pone en el login,
como por ejemplo root). Como mximo conviene que tenga 8 caracteres.

contrasea: la contrasea del usuario, aunque encriptada, ya que el fichero /etc/passwd lo pueden leer todos
los usuarios.

uid: user identifier. Un nmero que identifica al usuario, y es la forma con que Linux identifica internamente a
un usuario, aunque nosotros no lo podemos utilizar directamente a no ser que el comando nos d opcin a ello.

gid: group identifier. Un nmero que identifica un grupo (los grupos estn definidos en /etc/group, ms adelante
hablaremos de ellos) y aqu indica cul es el grupo primario de un usuario (un usuario puede pertenecer, de forma
secundaria, a otros grupos).

Joan Serrano

Revisi 0.2

18/35

CFGS

ASIX / DAM / DAW


1r

Mdul 1

Implantaci de Sistemes Operatius / Sistemes Informtics


UF2

comentario: texto libre, que generalmente es el nombre real del usuario o una descripcin breve.
origen: cul es el directorio origen del usuario (normalmente /home/usuario).
shell: qu shell (intrprete de comandos) utilizar el usuario por defecto. Suele ser /bin/bash.

Hay que tener en cuenta que, adems 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
ms alto que los del sistema (tpicamente a partir de 500). root siempre es el usuario 0.
Como medida de seguridad, generalmente en /etc/passwd no estn las contraseas encriptadas sino que en su
lugar hay una x; las contraseas encriptadas estn en el fichero /etc/shadow, que es una rplica de /etc/passwd
pero con las contraseas encriptadas, y adems slo root puede acceder a l (observaris que en /etc/shadow slo
se utilizan los campos usuario y contrasea). De esta forma los usuarios normales pueden ver qu usuarios hay en
el sistema pero slo root puede aadir usuarios.

adduser (useradd): aadir usuario


El programa real es useradd, pero suele haber un enlace (o sea, una especie de alias) llamado adduser que es
ms legible. Ambos estn en /usr/bin; conviene ir familiarizndose con la estructura de directorios de Linux. Este
programa permite aadir un usuario al sistema.
Lo que hace es aadir una lnea para el usuario en /etc/passwd, otra en /etc/shadow, crear su directorio origen y
copiar en ste una serie de ficheros de configuracin bsicos. Slo puede ejecutarlo root.
La sintaxis bsica es adduser [opciones] usuario:
adduser pepito
adduser -g asi1t manolito

Opcin
-c comentario
-d dirOrigen
-e AAAA-MM-DD
-g grupo
-G
grupo1[,grupo2...]
-m
-M
-n

Joan Serrano

# Crea el usuario pepito


# Crea el usuario manolito y lo asigna al
# grupo asi1t

Utilidad
Permite indicar el campo comentario*.
Indica el directorio origen del usuario (por defecto ser /home/
usuario).
Fecha en la que se desactivar la cuenta del usuario.
Grupo primario del usuario. Podemos indicar el nombre del grupo o
su gid**.
Grupos secundarios del usuario, separados por comas. Son grupos
a los que tambin pertenece y por tanto disfruta de su privilegios.
Crea el directorio origen del usuario y recrea en l la estructura de
ficheros y directorios que haya en /etc/skel***.
No crea directorio origen aunque tengamos CREATE_HOME yes.
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.

Revisi 0.2

19/35

CFGS

ASIX / DAM / DAW


1r

Mdul 1

Implantaci de Sistemes Operatius / Sistemes Informtics


UF2

-r

-p contrasea

-s shell
-u uid
-D

Crea una cuenta del sistema (uid<UID_MIN, otra constante de /etc/


login.defs), o sea, con uid pequeo. Normalmente se reservan para
propsitos especiales. Con esta opcin, si no se especifica -m no se
crear directorio origen.
Permite indicar la contrasea del usuario, aunque debe estar ya
encriptada (la funcin de C crypt() permite crear programas que
encripten las contraseas). Si no se indica contrasea, la cuenta
estar desactivada.
Qu shell tendr el usuario. Por defecto suele ser /bin/bash.
Permite especificar el uid del usuario (si no existe ya). Lo habitual es
dejar que el sistema lo asigne.
Muestra qu valores por defecto hay en /etc/default/useradd (fichero
que contiene opciones de configuracin de useradd).

* Si queremos escribir un parmetro, nombre de fichero, opcin, etc. con espacios enmedio podemos hacerlo
escribindolo entre comillas dobles: adduser -c Jos Prez pepito. sta no es una caracterstica 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 configuracin, /etc/login.defs, que controla las opciones por defecto en la creacin de usuarios.
Por ejemplo, esta opcin se rige por la constante CREATE_HOME, que puede valer yes o no y que determina que esta
opcin se ejecute por defecto o sea necesario especificarla.
1.- Cread el usuario pr3. Intentad loguearos con este usuario. Podis?
passwd: cambiar contrasea de usuario
Con este comando podemos cambiar la contrasea de un usuario, activarlo cuando lo acabamos de crear y
desactivarlo cuando no queremos que acceda al sistema pero no queremos perder su informacin. Este comando lo
puede utilizar un usuario para cambiar su contrasea (no la de otros usuarios, claro) y root para cambiar la de todos
los usuarios.
Algunos ejemplos:
passwd
passwd pepito

#
#
#
#

Cambia la contrasea del usuario actual. Pide la


contrasea actual y dos veces la nueva.
Cambia la contrasea del usuario pepito (debemos ser root
o pepito para poder hacer esto).

Observaris que no acepta bien cualquier tipo de contrasea: 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 contrasea. La sintaxis es passwd [opciones] [usuario].

Joan Serrano

Revisi 0.2

20/35

CFGS

ASIX / DAM / DAW


1r

Mdul 1

Implantaci de Sistemes Operatius / Sistemes Informtics


UF2

Opcin
-d
-l
-u
-f

Utilidad
Borra la contrasea del usuario (la deja en blanco).
Bloquea el usuario (antepone algn signo a la contrasea).
Desbloquea el usuario
Aunque se d una contrasea en blanco o mala, esta opcin le
obliga a aceptarla.

2.- Cambiad la contrasea de vuestro usuario habitual desde root. Entrad con el usuario y volvedle a poner la
contrasea inicial.
3.- Si el nico que puede escribir en /etc/shadow es root, cmo puede un usuario normal cambiar su propia
contrasea? La respuesta, en la actividad de permisos.
userdel: borra un usuario
Este comando elimina un usuario del sistema (lo borra de los ficheros /etc/passwd y /etc/shadow). Si el usuario
est trabajando actualmente, puede seguir hacindolo, pero cuando salga no podr volver a entrar. Slo tiene una
opcin, que se muestra en los ejemplos:
userdel pepe
userdel -r pepe

# Borra el usuario pepe


# Borra el usuario pepe y su directorio origen

Este comando slo puede ejecutarlo root.


Tambin podemos eliminar usuarios eliminando manualmente las entradas correspondientes en /etc/passwd y /
etc/shadow y borrando su directorio origen. Si se ha creado un grupo especial para este usuario conviene borrarlo
tambin, con groupdel.
De ambas formas slo borramos el directorio origen, pero un usuario puede tener ms ficheros en el sistema; el
comando find permite encontrar los ficheros que pertenecen a un usuario o a un grupo, para poder eliminarlos
todos.
Al borrar un usuario hay que borrar tambin sus ficheros o asignarlos a algn usuario especial.
4.- Borrad un usuario que no necesitis (o cread uno expresamente). Comprobad que los ficheros y directorios que
posea ahora no aparecen con un usuario/grupo, sino que slo aparece el nmero. Utilizad la orden find para encontrar
los ficheros y directorios de /home/ que haya en esta situacin y borrarlos.
usermod: modifica un usuario
Este comando permite modificar los datos bsicos de la cuenta de un usuario, y por tanto tiene las mismas opciones
que useradd, a la que hay que aadir -l usuario para cambiar el nombre del usuario (el uid no se puede cambiar, ya
que es lo que realmente identifica al usuario).

Actividad 2.

Gestin de grupos

Joan Serrano

Revisi 0.2

21/35

CFGS

ASIX / DAM / DAW


1r

Mdul 1

Implantaci de Sistemes Operatius / Sistemes Informtics


UF2

El fichero /etc/group indica qu grupos hay en el sistema y qu usuarios pertenecen a ellos. Su estructura es muy
parecida a la de /etc/passwd pero tiene menos informacin:
grupo:contrasea:gid:miembros

grupo: nombre del grupo


contrasea: este campo no se suele utilizar, permite indicar una contrasea para el grupo de forma que se
pueda entrar en l aun no perteneciendo (usando el comando newgrp). En todo caso la contrasea encriptada
no estara aqu, sino en el fichero /etc/gshadow, con el mismo objetivo que /etc/shadow. En la prctica estas
contraseas no se utilizan.

gid: group identifier, nmero que identifica al grupo, y es el valor que utiliza Linux internamente. Los gid<500
suelen estar reservados para grupos especiales del sistema (500 es un valor definido en /etc/login.defs con el
nombre de GID_MIN).

miembros: aqu se listan los usuarios que tienen este grupo como secundario (no los que lo tienen como
primario, que ya lo tienen apuntado en su fichero /etc/passwd).

Este fichero tambin es legible por todos los usuarios.


groups: a qu grupos pertenece un usuario
Este comando permite ver a qu grupos pertenecemos o a qu grupos pertenecen otros usuarios. Lo puede lanzar
cualquier usuario, y puede averiguar los grupos de cualquier otro usuario (al fin y al cabo sa es informacin que
est en /etc/passwd y /etc/group, disponible para todos).
groups
groups pepe
groups pepe root mari

# Indica a qu grupos pertenece el usuario actual


# A qu grupos pertenece pepe
# A qu grupos pertenecen pepe, root, mari

groupadd: crear grupo


Crea un nuevo grupo. La sintaxis es groupadd [opciones] grupo, y las opciones son:
Opcin
-g gid
-r

Utilidad
Obliga a que el grupo tenga un gid
determinado.
Permite crear un grupo de sistema
(gid<GID_MIN).

groupdel: borrar grupo


Borra un grupo. No se puede borrar el grupo primario de un usuario; hay que eliminar primero el usuario en cuestin
(o cambiarlo de grupo primario) y despus borrar el grupo.
Uso: groupdel grupo.
5.- Cread la siguiente estructura de grupos y usuarios:

Joan Serrano

Revisi 0.2

22/35

CFGS

ASIX / DAM / DAW


1r

Mdul 1

Implantaci de Sistemes Operatius / Sistemes Informtics


UF2

Grupo
asi1t
asi2t

Usuario
Jess
Laura
Elena
Marcos

6.- Haced que pertenezcan tambin al grupo asi; incorporad a Jess y Laura con comandos, y a Elena y Marcos
modificando los ficheros de configuracin. Comprobadlo con la orden groups.
7.- Laura ha aprobado todo primero as que tiene que pasar a asi2t como nuevo grupo principal. Cmo lo harais
mediante comandos? Y modificando los ficheros de configuracin?
8.- Por qu los ficheros de Laura siguen perteneciendo al grupo asi1t si Laura ha cambiado al asi2t? Por qu no
pertenecen tambin al grupo asi, al que Laura tambin pertenece?
9.- Eliminad los usuarios Marcos y Elena, que ya han aprobado segundo. Pero eliminad a Marcos con comandos y a
Elena modificando los ficheros de configuracin.

Actividad 3.

Trabajo con usuarios

Para poder practicar con las operaciones de gestin de usuarios y grupos, es importante conocer los siguientes
comandos de trabajo con usuarios: cambio del usuario actual, listado de usuarios conectados, etc.
su (set user): cambiar usuario actual
Aunque hayamos entrado en el sistema como cierto usuario, es posible que queramos trabajar temporalmente
como otro usuario (tpicamente, que necesitemos lanzar una orden como root). Para esto tenemos el comando su,
que nos permite cambiar de usuario, trabajar con l, y volver con nuestro usuario mediante la orden exit. Hay que
tener en cuenta que podemos anidar un su en otro, y tendremos que hacer tantos exit como sea necesario.
su pepito
su

# Cambia al usuario pepito


# Cambia a root

Al cambiar a otro usuario pedir su contrasea, salvo si el usuario actual es root (que puede convertirse en los
usuarios que quiera).
who: quin hay conectado al sistema
Muestra una lista de los usuarios conectados al sistema, concretamente su nombre, la terminal a la que est
conectada (recordemos que con Alt+Fn disponemos de varias terminales: tty1, tty2, etc.), la fecha y hora de
entrada, y si est conectado desde otro ordenador.
Este comando lo puede ejecutar cualquier usuario:
$who
roottty1
pepetty2

01 05 15:32
01 05 17:15

Joan Serrano

Revisi 0.2

23/35

CFGS

ASIX / DAM / DAW


1r

Mdul 1

Implantaci de Sistemes Operatius / Sistemes Informtics


UF2

La opcin -i aade otra columna que indica cunto tiempo lleva inactivo ese usuario (o un . si ha trabajado en el
ltimo minuto).
La opci -w (o --message) muestra si el usuario acepta mensajes de la orden write (que veremos a continuacin).
Tras la informacin de cada usuario sale un + si los acepta, un - si no, y un ? si no se puede determinar (porque no
se encuentra su terminal).
Incluso permite un poco de filosofa para averiguar detalles sobre uno mismo: who am i.
Nota tcnica: el fichero /var/run/utmp contiene informacin sobre los usuarios conectados al sistema, aunque no
es legible. En algunos sistemas, /var/run/wtmp contiene informacin sobre los usuarios que se han conectado al
sistema alguna vez.

Actividad 4.

Permisos

El sistema de seguridad en Linux tiene como parte fundamental la asignacin 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 ms importantes para trabajar con permisos.
Cuando hacemos ls l, nos aparece mucha ms informacin 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
est visualizando (d=directorio; -=fichero normal; l= enlace simblico, que se explica ms abajo; b=dispositivo
de bloques, como un disco; c=dispositivo de caracteres, como el teclado; p=FIFO con nombre (named pipe), las
tuberas que se utilizan para comunicar programas; S=socket, que permite comunicar varios ordenadores entre s).
Pero lo que nos interesa es la siguiente parte: los nueve caracteres que indican los permisos que tienen los ficheros
(o directorios, o lo que sean: usaremos el trmino general fichero). Hay que agruparlos de tres en tres caracteres,
con lo que tenemos:

Las tres primeras letras indican los permisos de lectura, escritura y ejecucin del fichero para el propietario del
fichero (el nombre que muestra el ls l; suele ser quien lo ha creado, aunque esto se puede cambiar).

Las otras tres, los permisos de lectura, escritura y ejecucin del fichero para los miembros del grupo del fichero
(cada fichero pertenece a un grupo, como indica ls l, y adems ese grupo no tiene por qu ser el grupo primario
del propietario).

Las tres ltimas indican los mismos permisos para el resto de usuarios del sistema.
Sobre un fichero normal, los permisos tienen los siguientes significados:

Lectura: se puede leer el contenido del fichero.

Escritura: se puede modificar el contenido del fichero.

Ejecucin: se puede ejecutar el fichero (aplicable a programas binarios y scripts).


Sin embargo el significado de los permisos de un directorio es ligeramente distinto:

Joan Serrano

Revisi 0.2

24/35

CFGS

ASIX / DAM / DAW


1r

Mdul 1

Implantaci de Sistemes Operatius / Sistemes Informtics


UF2

Lectura: se pueden listar los contenidos del directorio (podemos hacer un ls).
Escritura: se pueden crear y borrar ficheros.
Ejecucin: se puede acceder al directorio (hacer cd al directorio).

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.
Hay una serie de comandos que trabajan con permisos, y permiten indicarlos de dos maneras: simblica o
numrica.
NOTACIN NUMRICA DE PERMISOS
Los tres grupos de tres permisos que hemos visto se ven como tres cifras octales (base 8), la primera para el
propietario, la segunda para el grupo y la tercera para los dems, de forma que los permisos que quieran darse a
cada categora de usuarios sern el resultado de sumar los siguientes valores: 1 para ejecucin, 2 para escritura, 4
para lectura.
751 indica todos los permisos para el propietario (4+2+1=7), lectura y ejecucin para los del
grupo (4+1=5), y ejecucin slo para los dems (1)

NOTACIN SIMBLICA DE PERMISOS


En primer lugar hay que indicar a quin queremos cambiarle los permisos: al propietario (u, de user), al grupo (g), a
los dems (o, de other) o a todos (a, de all).
A continuacin indicaremos qu queremos hacer con los ficheros: un + aade los permisos indicados, un los quita
y un = deja slo los que indiquemos en la orden. Enseguida se ilustrar con ejemplos.
Por ltimo hay que indicar qu permisos queremos modificar: lectura (r), escritura (w), ejecucin (x).
u+x
aade permiso de ejecucin al propietario (y deja el resto como estn)
go-w
quita permiso de escritura al grupo y a los dems
o=rx
deja slo lectura y ejecucin a los dems (los de propietario y grupo los
deja como estn)
o= deja a los dems sin ningn permiso
o=g
truco para dar a los dems los permisos que tenga el grupo
a-w
quita permiso de escritura a todos
+w da permiso de escritura a todos (si no se indican usuarios, por defecto es a)

A continuacin veremos las rdenes para manejar todo esto, aunque primero vamos a estudiar una orden que no
tiene mucha relacin pero ayudar a trabajar con permisos, pues permite crear cmodamente ficheros nuevos, y
cambiar la fecha de los existentes.
touch: cambiar tiempo y crear fichero
Su funcin principal es cambiar la fecha y la hora de los ficheros afectados, si bien una utilidad casi ms importante
es que, si alguno de los ficheros indicados no existe, lo crea. Respecto a un fichero se almacenan tres tiempos
diferentes, y esto no slo afecta a touch sino tambin a otros comandos como find:

Joan Serrano

Revisi 0.2

25/35

CFGS

ASIX / DAM / DAW


1r

Mdul 1

Implantaci de Sistemes Operatius / Sistemes Informtics


UF2

Tiempo de acceso: cundo se ha ledo por ltima vez (asociado a la letra a).
Tiempo de cambio de estado: cundo se ha cambiado sus propiedades por ltima vez (permisos, propietario,
tiempos, etc.) (asociado a la letra c).

Tiempo de modificacin: cundo se ha modificado por ltima vez (asociado a la letra m).

Slo puede utilizarlo el propietario de los ficheros, aunque si lo nico que se quiere es cambiar la fecha de acceso y
modificacin al tiempo actual, puede hacerlo cualquiera que tenga permisos de escritura sobre los ficheros.
touch [opciones] fichero(s)

Opcin
-a
-c
-m
--reference=fichero
-t[AAAA]
MMDDhhmm[.ss]

Utilidad
Cambia slo el tiempo de acceso
Si el fichero no existe no lo crea.
Slo cambia el tiempo de modificacin
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
indicado en la expresin (slo 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).
touch -a fich
touch noExisto

# El tiempo de acceso de fich pasa a ser el actual


# Si no existe, crea el fichero noExisto (si existe ya,
# cambia su tiempo de acceso y modificacin al actual)
touch -m -t200105032215 secreto
# Modificado el 3/5/2001 a las 22:15

10.- Cread un fichero nuevo y ponedle como fecha de modificacin el 10/01/2014 a las 19:45. Comprobad que se ve
esta nueva fecha haciendo ls -l.
chmod (change mode): cambiar permisos
Permite cambiar los permisos de uno o ms ficheros o directorios. Slo puede utilizarlo el propietario de los ficheros
(o root, por supuesto). La sintaxis general es:
chmod [opciones] permisos fichero(s)

Donde las opciones son opcionales (por eso van entre corchetes y por eso se llaman opciones) y pueden ser las
siguientes:
Opcin
Utilidad
-v
Muestra informacin de lo que va haciendo con
cada fichero (modo verbose, se suele llamar a

Joan Serrano

Revisi 0.2

26/35

CFGS

ASIX / DAM / DAW


1r

Mdul 1

Implantaci de Sistemes Operatius / Sistemes Informtics


UF2

-f
-R

esto)
Evita que se impriman mensajes de error si no
puede cambiar los permisos de un fichero
Cambia los permisos de ficheros y directorios
recursivamente
Asigna al fichero los permisos que tenga fichRef.

-reference=fichRe
f
Los permisos se pueden indicar de forma simblica o numrica (incluso se pueden indicar varios permisos
separndolos con comas), y por ltimo se deben indicar los ficheros (o directorios) que queramos cambiar.
chmod a+x script? # Aade permiso de ejecucin a todos los ficheros
# script? (el ? representa a cualquier carcter)
chmod -R 755 .
# Pone como 755 todos los ficheros del directorio
# actual y de sus subdirectorios
chmod +x,o-w sc2 # Da permiso de ejecucin a todos pero quita de
# escritura a los dems del fichero sc2

Nota: aunque an no sepis bien de qu va el tema, adelantamos algo: chmod aplicado a un enlace simblico no
cambia las propiedades del enlace, sino del fichero a que hace referencia el enlace.
Hay otra forma de especificar los permisos, que es copirselos de otro fichero. Para ello se utiliza, en lugar de los
permisos, la opcin --reference=fichero, con lo que todos los ficheros indicados a continuacin pasarn a tener los
mismos permisos que este fichero.
# Los ficheros lista.txt y a.out pasarn a tener los mismos permisos que
# tenga fich1
chmod --reference=fich1 lista.txt a.out

11.- Supongamos que tenis dos usuarios normales, por ejemplo toni y laura (si no, creis 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.
12.- 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.).
13.- 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.
14.- Cread un usuario admin que pertenezca al grupo root y dadle todos los permisos para trabajar con el directorio /
root/.
chown (change owner): cambia el propietario de un fichero
Este comando permite cambiar la posesin de un fichero. En principio un fichero es de quien lo crea, pero a
menudo interesa cambiar la propiedad del fichero, o el grupo al que pertenece. Este comando slo se puede aplicar
a los ficheros sobre los que se tiene permiso de escritura, y slo te lo puedes asignar a ti mismo (salvo si eres root,
ya que entonces lo puedes asignar a quien quieras).
chown [opciones] propietarios fichero(s)

Joan Serrano

Revisi 0.2

27/35

CFGS

ASIX / DAM / DAW


1r

Mdul 1

Implantaci de Sistemes Operatius / Sistemes Informtics


UF2

Opciones:

-v, -f, -R y --reference=fichero, con el mismo significado que en chmod


Al especificar los nuevos propietarios podemos indicar el propietario, el grupo o ambos:
chown
chown
chown
chown

pepe fich1
pepe:asi1t fich1
pepe: fich1
:asi1t fich1

#
#
#
#
#

fich1
fich1
fich1
fich1
asi1t

pasa a ser de pepe y sigue en el mismo grupo


pasa a ser de pepe y del grupo asi1t
pasa a ser de pepe y del grupo primario de pepe
sigue siendo del mismo dueo pero pasa al grupo
(hace lo mismo que chgrp)

En vez de especificar un nuevo propietario y/o grupo, se puede copiar de otro fichero con --reference=fichero, igual
que con chmod.
15.- 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 dems usuarios slo podrn ver los contenidos de ese directorio.
16.- 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 todava 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).
chgrp (change group): cambia el grupo de un fichero
Este comando permite cambiar un fichero de grupo (lo que tambin puede hacerse con chown). Las opciones y la
sintaxis son las mismas, y tambin dispone de la variante con --reference=fichero:
chgrp [opciones] nuevoGrupo fichero(s)
chgrp [opciones] --reference=fichero fichero(s)

umask (user mask): mscara de permisos por defecto


O sea, cuando se crea un nuevo fichero, por defecto con qu permisos se crea? Pues podemos cambiarlo para
que nuestro trabajo resulte ms cmodo.
# Muestra el estado actual de la mscara de permisos en modo numrico
umask
022
# Muestra el estado actual de la mscara en modo simblico
umask -S
u=rwx,g=rx,o=rx
# Cambia la mscara a 022 (debemos indicarla numricamente)
umask 022

Joan Serrano

Revisi 0.2

28/35

CFGS

ASIX / DAM / DAW


1r

Mdul 1

Implantaci de Sistemes Operatius / Sistemes Informtics


UF2

Hay que advertir que la mscara 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 mscara es 022, los
permisos por defecto de nuestros ficheros sern 777-022=755 (restando cifra a cifra, ciudado).

Actividad 5.

Enlaces

En Linux se distinguen dos tipos de enlaces: los duros (hardlinks) y los simblicos (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 informacin que est almacenada en algn lugar misterioso del disco duro (ese lugar es el inodo, para
entendernos el nmero de bloque del disco en que est el fichero; con ls -i podemos ver el nmero 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/
prctica.txt), cualquier modificacin 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 dems 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
nmero 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 slo si su nmero 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 dems enlaces duros siguen siendo vlidos.
7.- Pregunta: sabiendo que el nmero de inodo es lo que indica realmente qu fichero es, o sea, que todos los enlaces
duros de un mismo fichero mostrarn el mismo nmero de inodo, cmo averiguarais cules son los enlaces duros
que tiene un fichero?
Por otra parte, un enlace simblico es un pequeo fichero que hace referencia a un fichero (estrictamente hablando,
a un enlace duro de un fichero). Con ls -l, los enlaces simblicos tienen una l en el primer carcter (tipo de fichero);
adems 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 cul 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 simblicos se quedan
colgando.

Joan Serrano

Revisi 0.2

29/35

CFGS

ASIX / DAM / DAW


1r

Mdul 1

Implantaci de Sistemes Operatius / Sistemes Informtics


UF2

Para hacerse mejor una idea, un enlace simblico es como un acceso directo de Windows.
Por si tenis curiosidad, los smbolos . y .. son enlaces duros al directorio actual y al directorio padre
respectivamente.
ln: crea un enlace (link)
Este comando permite crear nuevos enlaces para un fichero dado. Por defecto crea enlaces duros, aunque tiene
una opcin para crearlos simblicos. La sintaxis general y sus opciones son:
ln [opcin] objetivo(s)

Opcin
-d

-f
-i
-s

Utilidad
Permite que root (y slo l) haga enlaces
duros de directorios (en principio slo se
pueden hacer enlaces duros de directorios).
Borra los ficheros existentes si coinciden con
los enlaces a crear.
Pregunta antes de borrar ficheros si
coinciden con los enlaces a crear.
Crea enlaces simblicos (por defecto son
duros).

Hay tres formas bsicas de utilizarlo:


# Primera: con un nombre de fichero crea un enlace a ese fichero en el
# directorio actual y con el mismo nombre
# Por ejemplo: si estamos en /home/ podemos hacer
ln luis/prueba1.txt
# Y eso crear un enlace prueba1.txt pero en el directorio /home/
# 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
# Tercera: varios nombres de fichero y un directorio al final, con lo que
# crea enlaces a todos los ficheros en el directorio indicado
ln prueba1.txt ../pepe/notas.txt /home/miguel/p1.c /root/
# Crea enlaces llamados prueba1.txt, notas.txt y p1.c en /root/
# La siguiente instruccin da error porque hay ms de dos nombres y el
# ltimo no es un directorio
ln prueba1.txt ../pepe/notas.txt /home/miguel/p1.c

Joan Serrano

Revisi 0.2

30/35

CFGS

ASIX / DAM / DAW


1r

Mdul 1

Implantaci de Sistemes Operatius / Sistemes Informtics


UF2

8.- Cread un fichero llamado asignaturas que contenga los nombres de vuestras asignaturas. Cread un enlace
simblico al mismo en el mismo directorio. Haced ls -l y ved qu muestra (fijaos en el nmero 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).
9.- Borrad el fichero original. Qu pasa con el enlace?
20.- Cread un fichero llamado semana con los das de la semana. Cread un enlace duro llamado semana2. Repetid el
primer ejercicio con este nuevo enlace y comprobad que el comportamiento es el mismo (hay una diferencia; cul?).
21.- Repetid el segundo ejercicio. Qu ocurre ahora?

Actividad 6.

Gestin de procesos y trabajos

Una parte esencial en la administracin de un sistema Linux es el control de los procesos que hay en el sistema
en cada momento, y conocer las herramientas necesarias para poderlos eliminar en un momento dado es
especialmente importante. Esto es an ms evidente en un servidor, en el que los procesos no se ven en pantalla
sino que, en principio, estn ocultos, y es importante saber obtener cules hay, en qu estado se encuentran y qu
consumo de recursos estn haciendo.
Los procesos en Linux tienen una relacin padre-hijo entre ellos, o sea, el proceso que ejecuta a otro es su padre; si
por ejemplo desde bash (que es un proceso) ejecutamos un find, ste ser hijo de aqul.
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 gestin de varios trabajos desde una misma consola.
Un trabajo, que al fin y al cabo es una orden completa de un usuario (o sea, todos los comandos enlazados
con tuberas en una misma orden, tipo ls *.exe | grep prueba | less), tiene un nmero asociado para poderlo
identificar posteriormente. Adems se puede encontrar en dos estados: se puede estar viendo cmo se ejecuta
en su terminal (se dice que est en primer plano o en foreground), o puede estarse ejecutando en la sombra, o
sea, ejecutndose pero sin que se vean sus resultados; entonces se dice que est en el fondo (background). Hay
comandos y opciones de bash para cambiar el estado de los trabajos.
Otro concepto, que se ve con ms profundidad en otros crditos, es el de seal, que es un mecanismo de
comunicacin entre procesos que permite enviar avisos entre distintos procesos. De momento lo usaremos para
matar procesos, aunque tiene muchos ms usos.
ps: muestra el estado de los procesos (processor share)
Este comando genera un listado de los procesos que hay en el sistema en un momento dado. La sintaxis
general es:
ps [opciones][pids]

Joan Serrano

Revisi 0.2

31/35

CFGS

ASIX / DAM / DAW


1r

Mdul 1

Implantaci de Sistemes Operatius / Sistemes Informtics


UF2

Donde pids es una lista de PIDs (process identifiers, los nmeros que identifican a cada proceso) separada por
comas y sin espacios (ni entre ellos ni respecto a la ltima opcin). Permite ver informacin slo de los procesos
indicados:
ps a13,42
ps 44,32

# La a es la opcin utilizada, y 13 y 42 son los procesos


# Muestra la informacin de esos procesos, sin ninguna opcin

Segn la opcin elegida, ps mostrar ms o menos informacin en un listado en el que cada fila es un proceso y
cada columna una caracterstica suya. El significado de cada columna, segn el ttulo 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
Tamao 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 ejecucin*

S: durmiendo (sleeping), o sea, est esperando alguna


seal

T: parado en traza (trace). No es lo mismo que S, en


general muestran una T los procesos que estn siendo
controlados por otro, como un depurador que ejecute paso
a paso un programa

Z: zombie, representa un proceso que por algn error


ha terminado sin que su padre lo esperase, y que se queda
en un estado de suspensin llamado zombie
START
Momento en que ha comenzado
TIME
Tiempo de procesador que lleva consumido
COMMAND
Lnea de comandos con que se ha puesto en ejecucin
*Recordad que en un sistema operativo multitarea puede haber varios procesos listos para ejecutarse pero en un
momento dado slo uno de ellos se estar ejecutando (si slo 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.

Joan Serrano

Revisi 0.2

32/35

CFGS

ASIX / DAM / DAW


1r

Mdul 1

Implantaci de Sistemes Operatius / Sistemes Informtics


UF2

Las opciones de ps son las siguientes (atencin, no llevan un guin delante, se escribe ps a, por ejemplo):
Opcin
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 opcin de dudosa seguridad, pero ah est.
x
Muestra los procesos no controlados por ninguna terminal (servidores y
similares).
h
No incluye la cabecera en el listado.
r
Muestra slo los procesos con STAT=R
22.- Encontrad todos los procesos del usuario root.
Opciones de bash para enviar trabajos al background
Principalmente hay dos formas de enviar un trabajo al fondo:

Poner un & al final de su lnea de comandos para que empiece a ejecutarse en el fondo.
find / -nouser -or -nogroup > lista & # Se ejecuta, pero en el fondo

Cuando est en ejecucin 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 nmero entre corchetes que es su nmero de trabajo y permite obtener
informacin de l y volverlo a traer al frente con los comandos que vienen a continuacin.
[1] 215

# Identificador de trabajo y PID

fg: traer un trabajo al frente (foreground)


El uso de este comando es muy sencillo: especificando un nmero de trabajo, lo vuelve a poner en ejecucin en el
frente:
fg %1
%1

# Si 1 es el nmero de trabajo, lo trae al frente


# y lo pone en ejecucin
# Poner simplemente esto equivale a %1

bg: hacer que contine ejecutndose un trabajo en el fondo (background)


Cuando suspendemos un trabajo con Ctrl+z podemos seguir ejecutndolo pero en el fondo con bg:
bg %2
%2 &

# Se pone en ejecucin, pero en el fondo


# Equivale a lo anterior

jobs: lista de los trabajos del usuario

Joan Serrano

Revisi 0.2

33/35

CFGS

ASIX / DAM / DAW


1r

Mdul 1

Implantaci de Sistemes Operatius / Sistemes Informtics


UF2

Este comando muestra qu trabajos tiene el usuario. Concretamente, muestra el nmero de trabajo, el estado
(stopped o running) y la orden de comandos que lo ha generado.
Sintaxis:
jobs [opciones] [identificadorTrabajo]

Si se indica un identificador de trabajo slo muestra informacin de ese trabajo:


jobs %3
[3] Stopped

vi lista.txt

Opciones de jobs:
Opcin
-l
-n
-r
-s

Significado
Lista tambin los PIDs de los trabajos.
Muestra informacin slo de los trabajos cuyo estado ha cambiado
desde la ltima consulta.
Muestra informacin slo de los jobs ejecutndose (running).
Muestra informacin slo de los jobs parados (stopped).

23.- Crear un script que espere a que el usuario le introduzca un nmero. Hacer que el script se ejecute en fondo y
despus traerlo al frente.
kill: enva una seal al proceso
Aunque no siempre es para matarlo, como es su uso ms habitual se le ha quedado ese nombre al comando. Se
puede usar especificando un nombre o un nmero de seal y un proceso o un trabajo:
kill
kill
kill
kill
kill

-l
-s
-s
-9
-9

SIGKILL 152
SIGKILL %4
152
%4

#
#
#
#
#

Muestra el listado de seales y su nmero


Enva la seal SIGKILL al proceso 152
Enva la seal SIGKILL al trabajo 4
Enva la seal 9 al proceso 152
Enva la seal 9 al trabajo 4

De todas las seales, es importante conocer SIGTERM (pide a un proceso/trabajo que termine, pero de buenas
maneras; segn el programa que sea, se puede negar) y SIGKILL (obliga a que el proceso/trabajo termine; casi
ningn proceso puede resistirse a esto).
24.- Abrid vi y enviadlo al fondo con Ctrl+Z. Enviadle la seal SIGTERM y, si no funciona, enviadle SIGKILL para
terminarlo.

Joan Serrano

Revisi 0.2

34/35

CFGS

ASIX / DAM / DAW


1r

Mdul 1

Implantaci de Sistemes Operatius / Sistemes Informtics


UF2

Joan Serrano

Revisi 0.2

35/35

Anda mungkin juga menyukai