practica 4 admin. sist. linux

17
Práctica 3 de redes de área local: Administración de un sistema Linux 1 PRÁCTICAS DE REDES DE ÁREA LOCAL PRÁCTICA 4: ADMINISTRACIÓN DE UN SISTEMA LINUX 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 Actividad 1. Creación y eliminación de usuarios Las medidas de seguridad en Linux, como en la mayoría de SOs, se basan en la definición de usuarios y la asignación de derechos y restricciones a estos usuarios. En Linux el fichero /etc/passwd contiene la información de los usuarios del sistema. Está compuesto por líneas como la siguiente, de forma que cada línea representa a un usuario: usuario:contraseña: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 máximo conviene que tenga 8 caracteres. § contraseña: la contraseña del usuario, aunque encriptada, ya que el fichero /etc/passwd lo pueden leer todos los usuarios. § uid: user identifier. Un número 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é opción a ello. § gid: group identifier. Un número que identifica un grupo (los grupos están definidos en /etc/group, más adelante hablaremos de ellos) y aquí indica cuál es el grupo primario de un usuario (un usuario puede pertenecer, de forma secundaria, a otros grupos). § comentario: texto libre, que generalmente es el nombre real del usuario o una descripción breve. § origen: cuál es el directorio origen del usuario (normalmente /home/usuario). § shell: qué shell (intérprete de comandos) utilizará el usuario por defecto. Suele ser /bin/bash. 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.

Upload: alex-ferrer

Post on 29-Jun-2015

241 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Practica 4 Admin. Sist. Linux

Práctica 3 de redes de área local: Administración de un sistema Linux 1

PRÁCTICAS DE REDES DE ÁREA LOCAL

PRÁCTICA 4: ADMINISTRACIÓN DE UN SISTEMA LINUX

OBJETIVOSAhora 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 yconfigurando 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 PREVIOSTener 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

Actividad 1. Creación y eliminación de usuarios

Las medidas de seguridad en Linux, como en la mayoría de SOs, se basan en la definición de usuarios y laasignación de derechos y restricciones a estos usuarios.

En Linux el fichero /etc/passwd contiene la información de los usuarios del sistema. Está compuesto por líneascomo la siguiente, de forma que cada línea representa a un usuario:usuario:contraseña: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 máximo conviene que tenga 8 caracteres.

§ contraseña: la contraseña del usuario, aunque encriptada, ya que el fichero /etc/passwd lo pueden leer todoslos usuarios.

§ uid: user identifier. Un número que identifica al usuario, y es la forma con que Linux identifica internamente aun usuario, aunque nosotros no lo podemos utilizar directamente a no ser que el comando nos dé opción aello.

§ gid: group identifier. Un número que identifica un grupo (los grupos están definidos en /etc/group, másadelante hablaremos de ellos) y aquí indica cuál es el grupo primario de un usuario (un usuario puedepertenecer, de forma secundaria, a otros grupos).

§ comentario: texto libre, que generalmente es el nombre real del usuario o una descripción breve.§ origen: cuál es el directorio origen del usuario (normalmente /home/usuario).§ shell: qué shell (intérprete de comandos) utilizará el usuario por defecto. Suele ser /bin/bash.

Hay que tener en cuenta que, además de los usuarios que hayamos definido nosotros, en Linux hay usuariospredefinidos (que son con los que trabajan algunas aplicaciones o servidores). Los usuarios normales tienen unuid 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 lugarhay una x; las contraseñas encriptadas están en el fichero /etc/shadow, que es una réplica de /etc/passwd perocon las contraseñas encriptadas, y además sólo root puede acceder a él (observaréis que en /etc/shadow sólo seutilizan los campos usuario y contraseña). De esta forma los usuarios normales pueden ver qué usuarios hay enel sistema pero sólo root puede añadir usuarios.

Page 2: Practica 4 Admin. Sist. Linux

2 Centre d’estudis politècnics 2002-2003

adduser (useradd): añadir usuario

El programa real es useradd, pero suele haber un enlace (o sea, una especie de alias) llamado adduser que es máslegible. Ambos están en /usr/bin; conviene ir familiarizándose con la estructura de directorios de Linux. Esteprograma permite añadir un usuario al sistema.

Lo que hace es añadir una línea para el usuario en /etc/passwd, otra en /etc/shadow, crear su directorio origen ycopiar en éste una serie de ficheros de configuración básicos. Sólo puede ejecutarlo root.

La sintaxis básica es adduser [opciones] usuario:adduser pepito # Crea el usuario pepitoadduser -g asi1t manolito # Crea el usuario manolito y lo asigna al

# grupo asi1t

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**.-Ggrupo1[,grupo2...]

Grupos secundarios del usuario, separados por comas. Son grupos a los quetambién pertenece y por tanto disfruta de su privilegios.

-m Crea el directorio origen del usuario y recrea en él la estructura de ficheros ydirectorios 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 parapropó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 lascontraseñ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 hacerloescribiéndolo entre comillas dobles: adduser -c “José Pérez” pepito. Ésta no es una característica exclusiva deadduser, 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 deusuarios. Por ejemplo, esta opción se rige por la constante CREATE_HOME, que puede valer yes o no y quedetermina 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).

passwd: cambiar contraseña de usuario

Con este comando podemos cambiar la contraseña de un usuario, activarlo cuando lo acabamos de crear ydesactivarlo cuando no queremos que acceda al sistema pero no queremos perder su información. Estecomando lo puede utilizar un usuario para cambiar su contraseña (no la de otros usuarios, claro) y root paracambiar la de todos los usuarios.

Algunos ejemplos:passwd # Cambia la contraseña del usuario actual. Pide la

# contraseña actual y dos veces la nueva.

Page 3: Practica 4 Admin. Sist. Linux

Práctica 3 de redes de área local: Administración de un sistema Linux 3

passwd pepito # Cambia la contraseña del usuario pepito (debemos ser root# o pepito para poder hacer esto).

Observaréis que no acepta bien cualquier tipo de contraseña: debe tener seis caracteres al menos, no ser unapalabra 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 lacontraseña inicial.

7 Si el único que puede escribir en /etc/shadow es root, ¿cómo puede un usuario normal cambiar su propiacontraseña? 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 usuarioestá trabajando actualmente, puede seguir haciéndolo, pero cuando salga no podrá volver a entrar. Sólo tieneuna opción, que se muestra en los ejemplos:userdel pepe # Borra el usuario pepeuserdel -r pepe # Borra el usuario pepe y su directorio origen

Este comando sólo puede ejecutarlo root.También 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 convieneborrarlo también, con groupdel.

De ambas formas sólo borramos el directorio origen, pero un usuario puede tener más ficheros en el sistema; elcomando find permite encontrar los ficheros que pertenecen a un usuario o a un grupo, para poder eliminarlostodos.

Hay que tener en cuenta que lo que realmente identifica a un usuario en el sistema es su UID, y los ficheros quepertenecen a un usuario llevan su UID (y no su nombre de usuario). Si eliminamos un usuario, sus ficherosquedan con el UID que tuviera (digamos el 520). Si más adelante se crea otro usuario con UID=520, pasará aser propietario de los ficheros del anterior usuario, lo que es un fallo evidente de administración. Por tanto, alborrar un usuario hay que borrar también sus ficheros o asignarlos a algún usuario especial.

7 Borrad un usuario que no necesitéis (o cread uno expresamente). Comprobad que los ficheros y directoriosque poseía ahora no aparecen con un usuario/grupo, sino que sólo aparece el número. Utilizad la orden findpara encontrar los ficheros y directorios de /home/ que haya en esta situación y borrarlos.

usermod: modifica un usuario

Este comando permite modificar los datos básicos de la cuenta de un usuario, y por tanto tiene las mismasopciones que useradd, a la que hay que añadir -l usuario para cambiar el nombre del usuario (el uid no se puedecambiar, ya que es lo que realmente identifica al usuario).

Actividad 2. Gestión de grupos

El fichero /etc/group indica qué grupos hay en el sistema y qué usuarios pertenecen a ellos. Su estructura es muyparecida a la de /etc/passwd pero tiene menos información:grupo:contraseña:gid:miembros

§ grupo: nombre del grupo§ contraseña: este campo no se suele utilizar, permite indicar una contraseña para el grupo de forma que se

pueda entrar en él aun no perteneciendo (usando el comando newgrp). En todo caso la contraseña encriptadano estaría aquí, sino en el fichero /etc/gshadow, con el mismo objetivo que /etc/shadow. En la práctica estascontraseñas no se utilizan.

Page 4: Practica 4 Admin. Sist. Linux

4 Centre d’estudis politècnics 2002-2003

§ gid: group identifier, número que identifica al grupo, y es el valor que utiliza Linux internamente. Losgid<500 suelen estar reservados para grupos especiales del sistema (500 es un valor definido en /etc/login.defscon el nombre de GID_MIN).

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

Este fichero también 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 lanzarcualquier usuario, y puede averiguar los grupos de cualquier otro usuario (al fin y al cabo ésa es informaciónque está en /etc/passwd y /etc/group, disponible para todos).groups # Indica a qué grupos pertenece el usuario actualgroups pepe # A qué grupos pertenece pepegroups pepe root mari # A qué grupos pertenecen pepe, root, mari

groupadd: crear grupo

Crea un nuevo grupo. La sintaxis es groupadd [opciones] grupo, y las opciones son:

Opción Utilidad-g gid Obliga a que el grupo tenga un gid determinado.-r 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 encuestión (o cambiarlo de grupo primario) y después borrar el grupo.

Uso: groupdel grupo.

7 Cread la siguiente estructura de grupos y usuarios:

Grupo Usuario

asi1t JesúsLaura

asi2t ElenaMarcos

7 Haced que pertenezcan también al grupo asi; incorporad a Jesús y Laura con comandos, y a Elena y Marcosmodificando 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íaismediante 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é nopertenecen 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 comandosy a Elena modificando los ficheros de configuración.

Actividad 3. Trabajo con usuarios

Para poder practicar con las operaciones de gestión de usuarios y grupos, es importante conocer los siguientescomandos 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 temporalmentecomo otro usuario (típicamente, que necesitemos lanzar una orden como root). Para esto tenemos el comandosu, que nos permite cambiar de usuario, trabajar con él, y volver con nuestro usuario mediante la orden exit.

Page 5: Practica 4 Admin. Sist. Linux

Práctica 3 de redes de área local: Administración de un sistema Linux 5

Hay que tener en cuenta que podemos anidar un su en otro, y tendremos que hacer tantos exit como seanecesario.su pepito # Cambia al usuario pepitosu # Cambia a root

Al cambiar a otro usuario pedirá su contraseña, salvo si el usuario actual es root (que puede convertirse en losusuarios que quiera).

Si sólo queremos ejecutar un comando como otro usuario, se puede utilizar la opción -c. Por ejemplo, comousuario normal queremos crear un nuevo usuario:su -c “adduser nuevo” # Cambia a root, crea el usuario y vuelve

Es importante poner el comando entre comillas para que lo interprete como un único parámetro.

who: quién 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 deentrada, y si está conectado desde otro ordenador (mediante telnet, por ejemplo) o en una sesión de X-Window(en estos casos, las terminales se llaman pts/0, pts/1, etc.), desde qué ordenador o servidor X (si todavía nosabes qué son estos dos últimos programas pronto los estudiaremos).

Este comando lo puede ejecutar cualquier usuario:$whoroot tty1 01 05 15:32pepe tty2 01 05 17:15

La opción -i añade otra columna que indica cuánto 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 continuación).Tras la información de cada usuario sale un + si los acepta, un - si no, y un ? si no se puede determinar (porqueno se encuentra su terminal).

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 eslegible. En algunos sistemas, /var/run/wtmp contiene información sobre los usuarios que se han conectado alsistema alguna vez.

write: escribir mensajes a otros usuarios

Cuando en un sistema hay varios usuarios conectados, pueden charlar entre ellos con esta orden. La sintaxis eswrite usuario [terminal], o sea, a qué usuario queremos dirigirnos y, si está conectado por más de una terminal,a cuál de ellas queremos hablarle (conviene consultar cuál es la que está utilizando con who -i).

También será necesario especificar la terminal si nos aparece el mensaje de que no tenemos permiso de escritura.

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ísicamenteutilizando las consolas virtuales, bien por red utilizando telnet (que permite trabajar en un ordenador utilizandoel teclado y la pantalla de otro). Más adelante veremos el comando talk, que permite charlar entre distintosordenadores.

mesg: controla la recepción de mensajes

mesg nos permite indicar si queremos recibir mensajes de write (mesg y), si no queremos recibirlos (mesg n) osimplemente consultar si actualmente los podemos recibir (mesg).

Actividad 4. Permisos

El sistema de seguridad en Linux tiene como parte fundamental la asignación de permisos para los diferentesusuarios en ficheros y directorios. Veremos que se trata de un sistema muy detallado y aprenderemos a utilizarlos 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 columnacontiene algo como drwxr-xr-x ó -rw-r--r-- , y de estas diez letras la primera indica el tipo de elemento que se

Page 6: Practica 4 Admin. Sist. Linux

6 Centre d’estudis politècnics 2002-2003

está visualizando (d=directorio; -=fichero normal; l= enlace simbólico, que se explica más abajo; b=dispositivode bloques, como un disco; c=dispositivo de caracteres, como el teclado; p=FIFO con nombre (named pipe),las tuberías que se utilizan para comunicar programas pero en versión súper; S=socket, que permite comunicarvarios 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 término general fichero). Hay que agruparlos de tres en trescaracteres, con lo que tenemos:

• Las tres primeras letras indican los permisos de lectura, escritura y ejecución del fichero para el propietariodel 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 ejecución del fichero para los miembros del grupo delfichero (cada fichero pertenece a un grupo, como indica ls –l, y además ese grupo no tiene por qué ser elgrupo 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.• Ejecución: se puede ejecutar el fichero (aplicable a programas binarios y scripts).

Sin embargo el significado de los permisos de un directorio es ligeramente distinto:• Lectura: se pueden listar los contenidos del directorio(podemos hacer un ls).• Escritura: se pueden crear y borrar ficheros.• Ejecución: 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 escrituraen el directorio que lo contiene, aunque no puedes modificarlo.

Los ficheros ejecutables pueden tener un modificador especial en el permiso de ejecución:• Recordemos que un fichero tiene un propietario, y que los programas también son ficheros. Cuando

ejecutamos un programa normalmente se ejecuta con nuestros privilegios, no con los del propietario. Sinembargo, cuando un fichero tiene el permiso setuid, siempre se ejecutará con los privilegios del propietario.Algunos programas, como el comando /usr/bin/passwd, funcionan de esta manera: se tienen que ejecutar conprivilegios de root (debe modificar /etc/shadow), pero debe poderlas ejecutar cualquier usuario. El bit setuidsólo es aplicable a ficheros. Con ls -l se muestra como una s en el permiso de ejecución del propietario (peroafecta a cualquiera que lo ejecute, no sólo al propietario, claro).

• El permiso setgid es análogo al anterior: se ejecuta con los derechos del grupo al que pertenece, aunque loejecute cualquier otro usuario. Sólo aplicable a ficheros. Se muestra como una s en el permiso de ejecucióndel grupo.

• Por último, el sticky bit, que aplicado a ficheros no es exactamente un permiso, sino que indica que elprograma se almacenará en la partición de intercambio (swap) para que su carga sea más rápida (o sea, comosi estuviera ya cargado en memoria). En directorios indica que los usuarios no pueden borrar los ficheros queno sean suyos (aunque el dueño del directorio puede borrarlos todos). Esto es especialmente útil en directoriosde trabajo compartidos, como /tmp. La aplicación a directorios de este bit no está disponible en todos lossistemas (por ejemplo, en Linux no lo está). En cualquier caso se muestra como una t en el permiso deejecución del resto de usuarios.

Nota: ls -l mostrará una S mayúscula en vez de la minúscula de setuid/setgid cuando estos permisos estén dados enficheros 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 onumérica.

NOTACIÓN NUMÉRICA DE PERMISOSLos 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 demás, de forma que los permisos que quieran darse acada categoría de usuarios serán el resultado de sumar los siguientes valores: 1 para ejecución, 2 para escritura,4 para lectura.751 indica todos los permisos para el propietario (4+2+1=7), lectura y ejecuciónpara los del grupo (4+1=5), y ejecución sólo para los demás (1)

Los permisos especiales se pueden indicar anteponiendo otra cifra octal sumando los valores siguientes: 4 parasetuid, 2 para setgid, 1 para sticky bit.

Page 7: Practica 4 Admin. Sist. Linux

Práctica 3 de redes de área local: Administración de un sistema Linux 7

4755 se debe interpretar como: 4=sticky bit, 7=lectura, escritura y ejecuciónpara el propietario, 5 y 5=lectura y ejecución para el grupo y para los otros.

NOTACIÓN SIMBÓLICA DE PERMISOSEn primer lugar hay que indicar a quién queremos cambiarle los permisos: al propietario (u, de user), al grupo (g),

a los demás (o, de other) o a todos (a, de all).A continuación indicaremos qué queremos hacer con los ficheros: un + añade los permisos indicados, un – los

quita y un = deja sólo los que indiquemos en la orden. Enseguida se ilustrará con ejemplos.Por último hay que indicar qué permisos queremos modificar: lectura (r), escritura (w), ejecución (x).

u+x añade permiso de ejecución al propietario (y deja el resto como estén)go-w quita permiso de escritura al grupo y a los demáso=rx deja sólo lectura y ejecución a los demás (los de propietario y grupo

los deja como estén)o= deja a los demás sin ningún permisoo=g truco para dar a los demás los permisos que tenga el grupoa-w quita permiso de escritura a todos+w da permiso de escritura a todos (si no se indican usuarios, por

defecto es a)

Los permisos especiales se pueden modificar así (normalemente se utilizan con + o -, no con =):u+s añade setuidg+s añade setgido+t añade stickyu-s quita setuid

A continuación veremos las órdenes para manejar todo esto, aunque primero vamos a estudiar una orden que notiene mucha relación pero ayudará a trabajar con permisos, pues permite crear cómodamente ficheros nuevos, ycambiar la fecha de los existentes.

touch: cambiar tiempo y crear fichero

Su función principal es cambiar la fecha y la hora de los ficheros afectados, si bien una utilidad casi másimportante es que, si alguno de los ficheros indicados no existe, lo crea. Respecto a un fichero se almacenantres tiempos diferentes, y esto no sólo afecta a touch sino también a otros comandos como find:

• Tiempo de acceso: cuándo se ha leído por última vez (asociado a la letra a).• Tiempo de cambio de estado: cuándo se ha cambiado sus propiedades por última vez (permisos, propietario,

tiempos, etc.) (asociado a la letra c).• Tiempo de modificación: cuándo se ha modificado por última vez (asociado a la letra m).

Sólo puede utilizarlo el propietario de los ficheros, aunque si lo único que se quiere es cambiar la fecha de accesoy modificación al tiempo actual, puede hacerlo cualquiera que tenga permisos de escritura sobre los ficheros.

touch [opciones] fichero(s)

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-t[AAAA]MMDDhhmm[.ss]

En vez de poner el tiempo actual, le pone elindicado en la expresión (sólo puede usarlo elpropietario)

Como se ve, el tiempo de cambio de estado no se puede cambiar (aunque si "tocamos" un fichero, ese momentopasará a ser el nuevo tiempo de cambio de estado porque hemos cambiado una propiedad del fichero).

touch -a fich # El tiempo de acceso de fich pasa a ser el actualtouch noExisto # Si no existe, crea el fichero noExisto (si existe ya,

# cambia su tiempo de acceso y modificación al actual)touch -m -t200105032215 secreto # Modificado el 3/5/2001 a las 22:15

Page 8: Practica 4 Admin. Sist. Linux

8 Centre d’estudis politècnics 2002-2003

7 Cread un fichero nuevo y ponedle como fecha de modificación el 7/10/2002 a las 19:45. Comprobad que se veesta nueva fecha haciendo ls -l.

chmod (change mode): cambiar permisos

Permite cambiar los permisos de uno o más ficheros o directorios. Sólo puede utilizarlo el propietario de losficheros (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 lassiguientes:

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--reference=fichRef

Asigna al fichero los permisos que tenga fichRef.

Los permisos se pueden indicar de forma simbólica o numérica (incluso se pueden indicar varios permisossepará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 subdirectorioschmod +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 nocambia 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 lospermisos, la opción --reference=fichero, con lo que todos los ficheros indicados a continuación pasarán a tenerlos mismos permisos que este fichero.# Los ficheros lista.txt y a.out pasarán a tener los mismos permisos que# tenga fich1chmod --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 accederlaura 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 antesdejaba 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/.

chown (change owner): cambia el propietario de un fichero

Este comando permite cambiar la posesión de un fichero. En principio un fichero es de quien lo crea, pero amenudo interesa cambiar la propiedad del fichero, o el grupo al que pertenece. Este comando sólo se puedeaplicar a los ficheros sobre los que se tiene permiso de escritura, y sólo te lo puedes asignar a ti mismo (salvo sieres root, ya que entonces lo puedes asignar a quien quieras).chown [opciones] propietarios fichero(s)

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 pepe fich1 # fich1 pasa a ser de pepe y sigue en el mismo grupochown pepe:asi1t fich1 # fich1 pasa a ser de pepe y del grupo asi1tchown pepe: fich1 # fich1 pasa a ser de pepe y del grupo primario de pepe

Page 9: Practica 4 Admin. Sist. Linux

Práctica 3 de redes de área local: Administración de un sistema Linux 9

chown :asi1t fich1 # fich1 sigue siendo del mismo dueño pero pasa al grupo # asi1t (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.

7 Cread el directorio /tmp/trabajo/ para el grupo asi1t. Haced que toni y laura pertenezcan a ese grupo y quepuedan 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 accedertodaví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 sertotalmente 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 también puede hacerse con chown). Las opciones y lasintaxis son las mismas, y también dispone de la variante con --reference=fichero:chgrp [opciones] nuevoGrupo fichero(s)chgrp [opciones] --reference=fichero fichero(s)

umask (user mask): máscara de permisos por defecto

O sea, cuando se crea un nuevo fichero, ¿por defecto con qué permisos se crea? Pues podemos cambiarlo para quenuestro trabajo resulte más cómodo.

# Muestra el estado actual de la máscara de permisos en modo numéricoumask022# Muestra el estado actual de la máscara en modo simbólicoumask -Su=rwx,g=rx,o=rx# Cambia la máscara a 022 (debemos indicarla numéricamente)umask 022

Hay que advertir que la máscara no contiene los valores de los permisos sino su complemento. O sea, lo que se leresta a los permisos totales (777) para obtener los permisos por defecto. Así, si nuestra máscara es 022, lospermisos 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 hablarde ellos por separado.

Un enlace duro es el nombre de un fichero; es un enlace en el sentido de que permite al usuario acceder ainformación que está almacenada en algún lugar “misterioso” del disco duro (ese lugar es el inodo, paraentendernos el número de bloque del disco en que está el fichero; con ls -i podemos ver el número de inodo delos 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, todosellos 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 alfin 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 seborre 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 deenlaces duros llega a cero). Si se hace mv de un fichero (y no cambia de sistema de ficheros, o sea, no loestamos moviendo del disco duro al disquete, por ejemplo) no se mueve el fichero en sí, que permanece en elmismo inodo, sino que se cambia un enlace duro por otro; los demás enlaces duros siguen siendo válidos.

Page 10: Practica 4 Admin. Sist. Linux

10 Centre d’estudis politècnics 2002-2003

7 Pregunta: sabiendo que el número de inodo es lo que indica realmente qué fichero es, o sea, que todos losenlaces duros de un mismo fichero mostrarán el mismo número de inodo, ¿cómo averiguaríais cuáles son losenlaces duros que tiene un fichero?

Por otra parte, un enlace simbólico es un pequeño fichero que hace referencia a un fichero (estrictamentehablando, 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 ejemplohacemos 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 padrerespectivamente.

ln: crea un enlace (link)

Este comando permite crear nuevos enlaces para un fichero dado. Por defecto crea enlaces duros, aunque tiene unaopción para crearlos simbólicos. La sintaxis general y sus opciones son:

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 hacerenlaces duros de directorios).

-f Borra los ficheros existentes si coinciden con losenlaces a crear.

-i Pregunta antes de borrar ficheros si coinciden conlos enlaces a crear.

-s Crea enlaces simbólicos (por defecto son duros).

Hay tres formas básicas 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 hacerln 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 primerocd luisln 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 indicadoln prueba1.txt ../pepe/notas.txt /home/miguel/p1.c /root/# Crea enlaces llamados prueba1.txt, notas.txt y p1.c en /root/

# La siguiente instrucción da error porque hay más de dos nombres y el# último no es un directorioln prueba1.txt ../pepe/notas.txt /home/miguel/p1.c

7 Cread un fichero llamado asignaturas que contenga los nombres de vuestras asignaturas. Cread un enlacesimbólico al mismo en el mismo directorio. Haced ls -l y ved qué muestra (fijaos en el número de enlaces delfichero original). Abrid el enlace con vi y comprobad que abre el fichero original; para verificar que se tratadel mismo fichero, haced un cambio y comprobad que haciendo cat asignaturas se ve el cambio. (Distinguidlode una copia).

7 Borrad el fichero original. ¿Qué pasa con el enlace?

Page 11: Practica 4 Admin. Sist. Linux

Práctica 3 de redes de área local: Administración de un sistema Linux 11

7 Cread un fichero llamado semana con los días de la semana. Cread un enlace duro llamado semana2. Repetidel primer ejercicio con este nuevo enlace y comprobad que el comportamiento es el mismo (hay unadiferencia; ¿cuál?).

7 Repetid el segundo ejercicio. ¿Qué ocurre ahora?

Actividad 6. Montaje y desmontaje de sistemas de ficheros

En Linux, cada partición, unidad de disco, etc., que queramos utilizar es un sistema de ficheros distinto; es lo queen MS-DOS y Windows correspondería a una unidad. La diferencia está en que, en Linux, todos los sistemasde ficheros se ven desde la raíz, o sea, el directorio / ; de hecho, se ven como subdirectorios suyos, y no comounidades independientes.

Para poder acceder a un sistema de ficheros (por ejemplo, a un disquete) hay que montarlo, que quiere decir“engancharlo” en un directorio determinado. Para poder extraer el disquete después de haber accedido a él(aunque sólo hayamos leído, porque igual hace modificaciones, como por ejemplo registrar el tiempo de accesoa ficheros y directorios) es imprescindible desmontarlo primero.

Existe un fichero, /etc/fstab (file systems table) que lista los dispositivos que se montan habitualmente y dónde (enqué 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 sistemaoperativo 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ólopuede montarlos root). Esto es lógico permitirlo por ejemplo en las disqueteras y las unidades de CD. Tambiénestá la opción noauto, que evita que ese sistema de ficheros se monte automáticamente.

mount: monta un sistema de ficheros

Cuando el sistema arranca por defecto tiene montados una serie de sistemas de ficheros, y podemos añadirle máscon esta orden.

# mount sin parámetros muestra las unidades que están montadas# (es una información que está en el fichero /etc/mtab, también)mount

# También permite ver sólo los dispositivos de un tipomount -t vfat

La forma general de mount es la siguiente:mount -t tipo dispositivo directorio

Como por ejemplo:mount -t vfat /dev/fd0 /mnt/floppy/ # Monta un disquete MS-DOSmount -t iso9660 /dev/cdrom /mnt/cdrom # Monta un CD

Sin embargo para los sistemas de ficheros que ya están en /etc/fstab no es necesario indicar el dispositivo y eldirectorio 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 montajemount /dev/fd0 # Equivalente a la anterior

Page 12: Practica 4 Admin. Sist. Linux

12 Centre d’estudis politècnics 2002-2003

Por último podemos hacer que se monten todos los sistemas indicados en /etc/fstab (salvo los que ya esténmontados y los que tengan la opción noauto):mount -a # Todos los que cumplen esas condicionesmount -a -t vfat # Todos los que, además, son de tipo vfat

El resto de opciones disponibles es:mount [opciones] [dispositivo] [directorio de montaje]

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 yescritura). Atención: NO sirve para, por ejemplo, cambiar undisquete. Para eso hay que desmontar, cambiarlo y volver amontar.

-o sync Obliga a que los datos se guarden de forma síncrona en el sistemade ficheros (o sea, en cuanto las aplicaciones lo soliciten, que sealmacenen, en lugar de mantenerse en una memoria temporal;hace más lentas las operaciones pero garantiza más la integridadde los datos, como por ejemplo en una base de datos).

umount: desmonta un sistema de ficheros

Siempre que el sistema en cuestión no se esté utilizando (por algún proceso, o porque algún usuario esté en undirectorio suyo), permite desmontarlo. Se puede indicar el dispositivo a desmontar o el punto de montaje.

umount dispositivo | directorio # La barra vertical es una “O” lógica

7 Coged un disquete, montadlo e intentad leer sus contenidos. Especificad vosotros el tipo, no os sirváis delreconocimiento 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.

Actividad 7. Configuración de LILO

LILO (Linux Loader) es el gestor de arranque predeterminado de Linux, y su objetivo es permitir disponer devarios sistemas operativos en una misma máquina y que el usuario pueda elegir uno en el momento delarranque. LILO se instala en el dispositivo de arranque del ordenador, que puede ser:

• El disco duro, concretamente en el MBR (Master boot record, o sea, sector de arranque principal);• Un disquete

Page 13: Practica 4 Admin. Sist. Linux

Práctica 3 de redes de área local: Administración de un sistema Linux 13

• El disco duro pero al principio de la partición de Linux; en este caso sólo permite elegir opciones dentro delLinux en cuestión, se supone que previamente ha pasado por algún otro gestor de arranque.

En cualquier caso, la configuración de LILO se rige por lo indicado en el fichero /etc/lilo.conf, cuya estructuraconviene conocer para hacer los cambios oportunos o recuperar un sistema de un posible fallo.

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.

Estructura del fichero /etc/lilo.conf:• Opciones globales• Descripción imagen 1• Descripción imagen 2• ...• Descripción imagen n

Opciones globalesOpción Significado Ejemplosboot=dispArranque Nombre del dispositivo de arranque. boot=/dev/fd0

boot=/dev/hdacompact Permite agrupar la información para que arranque más

rápido (por ejemplo si lo hace desde un disquete).compact

default=etiqueta Etiqueta de la imagen por defecto (si no se indica ningunaserá la primera descripción que aparezca).

default=linux

delay=retardo Expresa, en décimas de segundo, lo que LILO esperaráhasta elegir la opción por defecto.

delay=50 # Espera 5s

message=fichero Toma el mensaje de bienvenida (el que aparece antes delas opciones) del fichero indicado. Un Ctrl+L en elfichero permite borrar la pantalla.

message=/root/saludo.txt

optional Las imágenes que no encuentre las omitirá. optionalpassword=contraseña

LILO pide una contraseña antes de permitir el arranque decualquier imagen.

password=lorito

restricted LILO pide la contraseña sólo si el usuario intentaespecificar líneas de comandos (por ejemplo, el famosolinux single).

restricted

Nótese que las tres últimas opciones pueden especificarse individualmente dentro de la descripción de cadaimagen (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 ladirectiva other si se trata de otro sistema operativo.

Opciones para cada imagen:Opción Significado Ejemplosimage=rutaimagen Nombre y ruta del fichero que contiene la imagen (se trata

de una imagen de Linux).image=/boot/vmlinuz

other=dispositivo Dispositivo que contiene otro sistema operativo. other=/dev/hda1label=etiqueta Da un nombre (etiqueta) a esta imagen. label=linuxoptional Si la imagen no está, omitirla en LILO. optionalpassword=contraseña

Pide una contraseña antes de arrancar esta imagen. password=semilla

restricted Pide la contraseña sólo si el usuario intenta especificaruna línea de comandos.

restricted

Opciones si la imagen es de Linux:

Page 14: Practica 4 Admin. Sist. Linux

14 Centre d’estudis politècnics 2002-2003

Opción Significado Ejemplosappend=cadena Pasa las opciones de la cadena al núcleo. append=” single”root=dispositivo Qué dispositivo se montará como raíz del sistema de

ficheros.root=/dev/hda8

vga=modo Qué modo de vídeo se utilizará en el arranque (posterioresparámetros de configuración pueden cambiarlo). El modopuede ser:• normal (visualización habitual de 80x25 caracteres)• extended (visualización a 80x50 caracteres)• ask (pregunta el modo; con Intro muestra la lista de

modos disponibles)• Un número especificando el modo concreto (a partir

de la lista obtenida con ask)Nota: esta opción también puede usarse en la secciónglobal.

vga=normalvga=5vga=ask

lilo: instala o desinstala LILO

Para poder utilizar LILO no es suficiente con configurar el fichero lilo.conf, sino que hay que trasladar esaconfiguración al dispositivo de arranque concreto. De esto se encarga el comando lilo, así como dedesinstalarlo de un dispositivo.

El uso habitual de este comando es el de aplicar los cambios introducidos en lilo.conf; para ello, tras editarapropiadamente este fichero, ejecutaremos lilo (sin más opciones) y se introducirán los cambios en eldispositivo de arranque.

Interesa conocer las opciones -t (test: sólo prueba, no hace los cambios) y -v (modo verbose o prolijo, o sea, quemuestra mucha información sobre lo que va haciendo) para asegurarse de las operaciones antes de aplicarlasrealmente.

También es posible eliminar LILO de una unidad (por ejemplo, del disco duro) con la opción -u; para ello, LILOrecupera 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.

Opción Significado Ejemplos-t Modo prueba (test) lilo -t-v Modo prolijo o charlatán (verbose) lilo -v-u dispositivo Elimina LILO del dispositivo, restaurando su sector de

arranque de la copia /boot/boot.*lilo -u /dev/hda

-b dispositivo Instala LILO en el dispositivo indicado, ignorando ladirectiva boot= que figura en lilo.conf

lilo -b /dev/fd0

7 Personalizad las etiquetas de arranque de vuestro LILO y poned una contraseña a la opción “windows”.å

Actividad 8. Gestión de procesos y trabajos

Una parte esencial en la administración de un sistema Linux es el control de los procesos que hay en el sistema encada momento, y conocer las herramientas necesarias para poderlos eliminar en un momento dado esespecialmente importante. Esto es aún más evidente en un servidor, en el que los procesos no “se ven enpantalla” sino que, en principio, están ocultos, y es importante saber obtener cuáles hay, en qué estado seencuentran y qué consumo de recursos están haciendo.

Los procesos en Linux tienen una relación padre-hijo entre ellos, o sea, el proceso que ejecuta a otro es su padre; sipor ejemplo desde bash (que es un proceso) ejecutamos un find, éste será hijo de aquél.

Los trabajos (jobs) en Linux representan las distintas tareas que está realizando un usuario en un momento dado, yes bastante interesante saber controlarlas para maximizar la productividad en el trabajo y realizar varias tareasa la vez; aunque esto es menos importante al disponer de varias consolas virtuales, en ocasiones no se disponede ellas o hay otras circunstancias que recomiendan la gestión de varios trabajos desde una misma consola.

Page 15: Practica 4 Admin. Sist. Linux

Práctica 3 de redes de área local: Administración de un sistema Linux 15

Un trabajo, que al fin y al cabo es una orden completa de un usuario (o sea, todos los comandos enlazados contuberías en una misma orden, tipo “ls *.exe | grep “prueba” | less”), tiene un número asociado para poderloidentificar posteriormente. Además se puede encontrar en dos estados: se puede estar viendo cómo se ejecutaen su terminal (se dice que está en primer plano o en foreground), o puede estarse ejecutando en la sombra, osea, ejecutándose pero sin que se vean sus resultados; entonces se dice que está en el fondo (background). Haycomandos y opciones de bash para cambiar el estado de los trabajos.

Otro concepto, que se ve con más profundidad en otros créditos, es el de señal, que es un mecanismo decomunicación entre procesos que permite enviar avisos entre distintos procesos. De momento lo usaremos para“matar” procesos, aunque tiene muchos más 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 generales:ps [opciones][pids]

Donde pids es una lista de PIDs (process identifiers, los números que identifican a cada proceso) separada porcomas y sin espacios (ni entre ellos ni respecto a la última opción). Permite ver información sólo de losprocesos indicados:ps a13,42 # La a es la opción utilizada, y 13 y 42 son los procesosps 44,32 # Muestra la información de esos procesos, sin ninguna opción

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 ycada columna una característica suya. El significado de cada columna, según el título que aparece en la primerafila, es el siguiente:

Columna SignificadoUSER 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á utilizandoVSZ 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 puedeentrar 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 porotro, como un depurador que ejecute paso a paso un programa

• Z: zombie, representa un proceso que por algún error haterminado sin que su padre lo esperase, y que se queda en unestado de suspensión llamado zombie

START Momento en que ha comenzadoTIME Tiempo de procesador que lleva consumidoCOMMAND 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 unmomento dado sólo uno de ellos se estará ejecutando (si sólo hay un procesador en el sistema, claro). De hechosi se está ejecutando el ps, no es posible que justo en el mismo momento se esté ejecutando otro proceso; sinembargo, 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 Significadou 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á.

Page 16: Practica 4 Admin. Sist. Linux

16 Centre d’estudis politècnics 2002-2003

x Muestra los procesos no controlados por ninguna terminal (servidores ysimilares).

h No incluye la cabecera en el listado.r Muestra sólo los procesos con STAT=R

7 Encontrad todos los procesos del usuario root.7 Mostrad todos los procesos del sistema ordenados por estado.

Opciones de bash para enviar trabajos al background

Principalmente hay dos formas de enviar un trabajo al fondo:• Poner un & al final de su línea de comandos para que empiece a ejecutarse en el fondo.

find / -nouser -or -nogroup > lista & # Se ejecuta, pero en el fondo

• 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 obtenerinformación de él y volverlo a traer al frente con los comandos que vienen a continuación.[1] 215 # Identificador de trabajo y PID

fg: traer un trabajo al frente (foreground)

El uso de este comando es muy sencillo: especificando un número de trabajo, lo vuelve a poner en ejecución en elfrente:fg %1 # Si 1 es el número de trabajo, lo trae al frente # y lo pone en ejecución%1 # Poner simplemente esto equivale a %1

bg: hacer que continúe ejecutándose un trabajo en el fondo (background)

Cuando suspendemos un trabajo con Ctrl+z podemos seguir ejecutándolo pero en el fondo con bg:bg %2 # Se pone en ejecución, pero en el fondo%2 & # Equivale a lo anterior

jobs: lista de los trabajos del usuario

Este comando muestra qué trabajos tiene el usuario. Concretamente, muestra el número 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 sólo muestra información de ese trabajo:jobs %3[3] Stopped vi lista.txt

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).

kill: envía una señal al proceso

Aunque no siempre es para matarlo, como es su uso más habitual se le ha quedado ese nombre al comando. Sepuede usar especificando un nombre o un número de señal y un proceso o un trabajo:kill -l # Muestra el listado de señales y su númerokill -s SIGKILL 152 # Envía la señal SIGKILL al proceso 152kill -s SIGKILL %4 # Envía la señal SIGKILL al trabajo 4kill -9 152 # Envía la señal 9 al proceso 152kill -9 %4 # Envía la señal 9 al trabajo 4

Page 17: Practica 4 Admin. Sist. Linux

Práctica 3 de redes de área local: Administración de un sistema Linux 17

De todas las señales, es importante conocer SIGTERM (pide a un proceso/trabajo que termine, pero de buenasmaneras; según el programa que sea, se puede negar) y SIGKILL (obliga a que el proceso/trabajo termine; casiningún proceso puede resistirse a esto).

7 Abrid vi y enviadlo al fondo con Ctrl+Z. Enviadle la señal SIGTERM y, si no funciona, enviadle SIGKILLpara terminarlo.

7 Abrid una sesión con algún otro usuario y abrid algún programa (vi). Cambiad a vuestro primer usuario eintentad matar todos los procesos del otro. ¿Podéis hacerlo? Pensad qué tendríais que hacer para poder matarlos 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 laterminal cuatro (o sea, el proceso bash en esa terminal).