████████ ██ ██ ██████ ████████ ██░░░░░░ ░██ ░██ ░█░░░░██ ██░░░░░░██ ░██ ░██ ██████ █████ ░██ ██ ███ ██ ██████ ██████ █████ ░█ ░██ ██ ░░ ░█████████ ░██ ░░░░░░██ ██░░░██░██ ██ ░░██ █ ░██ ░░░░░░██ ░░██░░█ ██░░░██ ░██████ ░██ ░░░░░░░░██ ░██ ███████ ░██ ░░ ░████ ░██ ███░██ ███████ ░██ ░ ░███████ ░█░░░░ ██░██ █████ ░██ ░██ ██░░░░██ ░██ ██░██░██ ░████░████ ██░░░░██ ░██ ░██░░░░ ██░█ ░██░░██ ░░░░██ ████████ ███░░████████░░█████ ░██░░██ ███░ ░░░██░░████████░███ ░░██████░██░███████ ░░████████ ░░░░░░░░ ░░░ ░░░░░░░░ ░░░░░ ░░ ░░ ░░░ ░░░ ░░░░░░░░ ░░░ ░░░░░░ ░░ ░░░░░░░ ░░░░░░░░Mirrors for Slackware and some Slackware related projects.
Capítulo 4
4.1 Acerca de Raíces, Sombreros y la Sensación de Poder
4.1.1 La cuenta root
4.1.2 Abusando del sistema
4.1.3 Como proceder con los usuarios
4.1.4 Fijando las reglas
4.1.5 Lo que todo esto significa
4.2.1 Utilizando un
disquete de arranque
4.2.2 Utilizando LILO
4.4.1 Conceptos de
gestión de usuarios
4.4.2 Añadiendo usuarios
4.4.3 Borrando usuarios
4.4.4 Poniendo atributos de usuario
4.4.5 Grupos
4.5 Archivando y Comprimiendo Ficheros
4.5.1 Utilizando tar
4.5.2 gzip y compress
4.5.3 Juntándolo todo
4.6 Usando Disquetes y Haciendo Copias de Seguridad
4.6.1 Utilizando disquetes
para copias de seguridad
4.6.2 Utilizando disquetes como sistemas de ficheros
4.7 Actualizando e Instalando Nuevo Software
4.7.1 Actualizando
el núcleo
4.7.2 Actualizando las librerías
4.7.3 Actualizando gcc
4.7.4 Actualizando otro software
4.8 Gestionando Sistemas de Ficheros
4.8.1 Montando sistemas
de ficheros
4.8.2 Comprobando sistemas de ficheros
4.9 Utilizando un fichero de intercambio
4.10.1 Ficheros de
arranque del sistema
4.10.2 Estableciendo el nombre del ordenador
4.11 Que Hacer En Una Emergencia
4.11.1 Recuperación
utilizando un disquete de mantenimiento
4.11.2 Arreglando la password de root
4.11.3 Arreglando sistemas de ficheros corrompidos
4.11.4 Recuperando ficheros perdidos
4.11.5 Arreglando librerías corrompidas
Administración
del Sistema
Anterior-
Siguiente - Índice
Este capitulo es una visión general de
la administración de un sistema Linux, incluyendo un número de
posibilidades avanzadas que no son, necesariamente, solo para administradores
de sistemas. Igual que cada perro tiene su día, cada sistema tiene su
administrador, y poner en marcha el sistema es un trabajo muy importante y a
veces consume mucho tiempo, incluso si se es el único usuario en el sistema.
Hemos intentado cubrir aquí los
elementos más importantes acerca de la administración de sistemas
que se necesitan conocer cuando se use Linux, en suficiente detalle para empezar
confortablemente. Para mantenerlo corto y agradable, solo hemos cubierto los
niveles más básicos y nos hemos saltado muchos e importantes detalles.
Se debe leer el Linux System Administrator's Guide si se quiere ejecutar Linux
en serio. Le ayudara a comprender mejor como funcionan las cosas y como se ensamblan
juntas. Al menos hojéelo para que pueda conocer que contiene y que tipo
de ayuda puede esperar de él.
4.1 Acerca
de Raíces, Sombreros y la Sensación de Poder
Anterior-
Siguiente - Índice
Como sabe, UNIX distingue entre diferentes usuarios
para que lo que hagan a los demás y al sistema pueda ser regulado (uno
no desearía que nadie pudiese leer nuestras cartas de amor, por ejemplo).
Cada usuario recibe una cuenta que incluye
un nombre de usuario, un directorio inicial, y otras cosas por el estilo. Además
de las cuentas dadas a personas reales, existen cuentas especiales, definidas
por el sistema, que tienen privilegios especiales. La más importante
de estas es la cuenta raíz, con el nombre de usuario root.
4.1.1 La cuenta root
Anterior-
Siguiente - Índice
Los usuarios normales están restringidos
normalmente para que no puedan dañar a nadie mas en el sistema, solo
a ellos mismos. Los permisos de los ficheros en el sistema están preparados
para que los usuarios normales no tengan permitido borrar o modificar ficheros
en directorios compartidos por todos los usuarios (como son /bin y /usr/bin.
Muchos usuarios también protegen sus propios ficheros con los permisos
adecuados para que otros usuarios no puedan acceder o modificar estos ficheros.
Estas restricciones desaparecen para root.
El usuario root puede leer, modificar o borrar cualquier fichero en el sistema,
cambiar permisos y pertenencias en cualquier fichero, y ejecutar programas especiales,
como pueden ser los que particionan un disco o crean sistemas de ficheros. La
idea básica es que la persona o personas que ejecutan y cuidan del sistema
entren como root cuando sea necesario para realizar tareas que no pueden ser
ejecutadas por un usuario normal. Puesto que root puede hacer todo, es fácil
cometer errores que tengan consecuencias catastróficas cuando se trabaja
utilizando esta cuenta.
Por ejemplo, como
un usuario normal, si inadvertidamente se intentase borrar todos los ficheros
en /etc, el sistema no lo permitiría. Sin embargo, como usuario root,
el sistema no diría nada. Es muy simple el dañar el sistema utilizando
root. La mejor forma de evitar accidentes es:
o Pensárselo dos veces antes
de apretar |_return_| en un comando que pueda causar daño. Por ejemplo,
si se va a borrar un directorio, antes de pulsar |_return_|, releer el comando
completo y asegurarse que es correcto.
o No acostumbrarse a utilizar
root. Cuanto más confortable se encuentre uno trabajando con el usuario
root, más seguro que se confundirán los privilegios con los
de un usuario normal.
Por ejemplo, puede uno pensar que
se esta conectado como larry, cuando realmente se esta conectado como root.
o Utilice un marcador distinto
para la cuenta root. Se debe cambiar el fichero .bashrc o el .login de root
para poner el marcador del interprete a algo distinto del marcador de usuario
normal. Por ejemplo, mucha gente utiliza el carácter "$" como marcador
para los usuarios normales, y reserva el carácter "#" como marcador
para el usuario root.
o Conectarse
como root solo cuando sea absolutamente necesario. Y desconectarse tan pronto
como se haya terminado el trabajo. Cuanto menos se use la cuenta root, menos
posibilidades habrá de dañar el sistema.
Por supuesto, existe una variante de hackers
de UNIX que utilizan root para prácticamente todo. Pero cada uno de ellos
ha cometido, en algún momento, algún error tonto como root y corrompido
el sistema. La regla general es que hasta que se familiarice con la falta de
restricciones de root, y este cómodo utilizando el sistema sin dichas
restricciones, procure conectarse como root lo menos posible.
Por supuesto, todo el mundo comete errores.
El mismo Linus Torvalds borró accidentalmente una vez el árbol
de directorios completo del núcleo de su sistema. Horas de trabajo se
perdieron para siempre. Afortunadamente, sin embargo, gracias a su conocimiento
del código del sistema de ficheros, fue capaz de reiniciar el sistema
y reconstruir el árbol de directorios del disco a mano.
Pongámoslo de otra forma, si se
imagina la utilización de la cuenta root como la utilización de
un sombrero mágico especial que le da montones de poderes, pudiendo,
con un gesto de la mano, destruir ciudades enteras, es una buena idea de lo
que es ser un poco cauto con lo que se hace con las manos. Puesto que es fácil
mover la mano de manera destructiva por accidente, no es una buena idea el llevar
el sombrero mágico cuando no es necesario, a pesar de la maravillosa
sensación.
4.1.2 Abusando del sistema
Anterior-
Siguiente - Índice
Junto con el sentimiento de poder llega la tendencia
a hacer daño. Este es uno de los puntos oscuros de la administración
de sistemas UNIX, pero todo el mundo pasa por ello en algún momento.
Muchos usuarios de sistemas UNIX nunca tienen la posibilidad de manejar este
poder en los sistemas UNIX de universidad y de empresas, solo los altamente
cualificados (y altamente pagados) administradores de sistemas llegan a conectarse
como root. De hecho, en muchas de esas instituciones, la clave de root es un
secreto celosamente guardado: es tratado como el Sagrado Grial de la institución.
Se monta mucho jaleo con la conexión como root; esta visto como un sabio
y a la vez espantoso poder, dado solo a un reducido grupo de elegidos.
Este tipo de actitud hacia la cuenta root
es, sencillamente, el tipo de actitud que alimenta la malicia y el desprecio.
Ya que root es tan atractivo, cuando algunos usuarios tienen su primera oportunidad
de conectarse como root (ya sea en un sistema Linux, o en cualquier otro sitio),
la tendencia es a utilizar los privilegios de root de forma descuidada. Yo he
conocido "administradores de sistemas" (por llamarlos de alguna forma) que leen
el correo de otros usuarios, borran ficheros de usuario sin avisar y que, de
forma general, se comportan como niños cuando se les da un "juguete"
poderoso.
Puesto que root tiene tantos privilegios
en el sistema, se necesita una cierta madurez y autocontrol para utilizar la
cuenta de la forma para la que esta diseñada para ejecutar el sistema.
Existe un código de honor no hablado
entre el administrador y los usuarios del sistema. ¿Cómo se sentiría
si su administrador de sistemas leyese su correo electrónico o mirase
sus ficheros? Aun no hay ningún precedente legal firme acerca de la intimidad
electrónica en sistemas de ordenadores de tiempo compartido. En sistemas
UNIX, el usuario root tiene la posibilidad de saltarse todos los mecanismos
de seguridad y privacidad del sistema. Es importante que el administrador del
sistema desarrolle una relación de confianza con los usuarios del sistema.
Es algo en lo que nunca se puede insistir lo suficiente.
4.1.3 Como proceder con
los usuarios
Anterior-
Siguiente - Índice
La seguridad en UNIX es bastante laxa por diseño.
La seguridad del sistema fue un pensamiento posterior, el sistema se desarrollo
originalmente en un entorno donde las intrusiones de un usuario en otro eran
algo inaudito. Por esto, incluso con medidas de seguridad, aun existe la posibilidad
de que usuarios normales hagan daño.
Los administradores de sistemas pueden
tomar dos posturas cuando traten con usuarios abusivos: ser paranoicos o confiados.
El administrador de sistemas paranoico
normalmente causa mas daño que el que previene. Una de mis citas favoritas
es, "nunca atribuyas a la malicia nada que pueda ser atribuido a la estupidez."
Dicho de otra forma, muchos usuarios no tienen la habilidad o el conocimiento
para hacer daño real al sistema. El 90% del tiempo, cuando un usuario
causa problemas en el sistema (por ejemplo, rellenando la partición de
usuarios con grandes ficheros, o ejecutando múltiples instancias de un
gran programa), el usuario simplemente desconoce que lo que esta haciendo es
un problema. He ido a ver a usuarios que estaban causando una gran cantidad
de problemas, pero su actitud estaba causada por la ignorancia no por la malicia.
Cuando se enfrente con usuarios que puedan
causar problemas potenciales no sea acusativo.
La antigua regla de "inocente hasta que
se demuestre lo contrario" sigue siendo valida. Es mejor una simple charla con
el usuario, preguntándole acerca del problema, en lugar de causar una
confrontación. Lo ultimo que se desea es estar entre los malos desde
el punto de vista del usuario.
Esto levantaría un montón
de sospechas acerca de si usted (el administrador de sistemas) tiene el sistema
correctamente configurado. Si un usuario cree que usted le disgusta o no le
tiene confianza, le puede acusar de borrar ficheros o romper la privacidad del
sistema. Esta no es, ciertamente, el tipo de situación en la que quisiera
estar.
Si encontrase que un usuario ha estado
intentando "romper" el sistema, o ha estado haciendo daño al sistema
de forma intencionada, no devuelva el comportamiento malicioso a su vez. En
vez de ello, simplemente, dele un aviso pero sea flexible. En muchos casos,
se puede cazar a un usuario "con las manos en la masa" dañando al sistema,
avísele. Dígale que no lo vuelva a repetir. Sin embargo, si le
vuelve a cazar haciendo daño, entonces puede estar absolutamente seguro
de que es intencionado. Ni siquiera puedo empezar a describir la cantidad de
veces que parecía que había un usuario causando problemas al sistema,
cuando de hecho, era o un accidente o un fallo mío.
4.1.4 Fijando las reglas
Anterior-
Siguiente - Índice
La mejor forma de administrar un sistema no
es con un puño de hierro. Así puede ser como se haga lo militar,
pero UNIX no fue diseñado para ese tipo de disciplina. Tiene sentido
el escribir un conjunto sencillo y flexible de reglas para los usuarios, pero
recuerde, cuantas menos reglas tenga, menos posibilidades habrá de romperlas.
Incluso si sus reglas para utilizar el sistema son perfectamente razonables
y claras, siempre habrá momentos en que los usuarios romperán
dichas reglas sin pretenderlo. Esto es especialmente cierto en el caso de usuarios
UNIX nuevos, que están aprendiendo los entresijos del sistema. No esta
suficientemente claro, por ejemplo, que uno no debe bajarse un gigabyte de ficheros
y enviárselo por correo a todos los usuarios del sistema. Los usuarios
necesitan comprender las reglas y por que están establecidas.
Si especifica reglas de uso para su sistema,
asegúrese de que el motivo detrás de cada regla particular este
claro. Si no lo hace, los usuarios encontraran toda clase de formas creativas
de saltársela y no saber que en realidad la están rompiendo.
4.1.5 Lo que todo esto
significa
Anterior-
Siguiente - Índice
No podemos decirle como ejecutar su sistema
al ultimo detalle. Mucha de la filosofía depende en como se use el sistema.
Si se tienen muchos usuarios, las cosas son muy diferentes de si solo tiene
unos pocos o si se es el único usuario del sistema. Sin embargo, siempre
es una buena idea en cualquier situación comprender lo que ser administrador
de sistema significa en realidad.
Ser el administrador de un sistema no
le hace a uno un mago del UNIX. Hay muchos administradores de sistemas que conocen
muy poco acerca de UNIX. Igualmente, hay muchos usuarios "normales" que saben
mas acerca de UNIX que lo que cualquier administrador de sistemas. También,
ser el administrador de sistemas no le permite el utilizar la malicia contra
sus usuarios. Aunque el sistema le dé el privilegio de enredar en los
ficheros de los usuarios, no significa que se tenga ningún derecho a
hacerlo.
Por ultimo, ser el administrador del sistema
no es realmente una gran cosa. No importa si sus sistema es un pequeño
386 o un super ordenador Cray. La ejecución del sistema es la misma.
El saber la clave de root no significa ganar dinero o fama. Tan solo le permitirá
ejecutar el sistema y mantenerlo funcionando. Eso es todo.
4.2 Arrancando
el Sistema
Anterior-
Siguiente - Índice
Hay varias maneras de arrancar el sistema, bien sea desde disquete o bien desde el disco duro.
4.2.1 Utilizando un disquete
de arranque
Anterior-
Siguiente - Índice
Mucha gente arranca Linux utilizando un "disquete
de arranque" que contiene una copia del núcleo de Linux. Este núcleo
tiene la partición raíz de Linux codificada en el, para que sepa
donde buscar en el disco duro el sistema de ficheros raíz. (El comando
rdev puede ser utilizado para poner la partición raíz en la imagen
del núcleo; ver mas adelante.) Por ejemplo, este es el tipo de disquete
creado por Slackware durante la instalación.
Para crear su propio disquete de arranque,
localice en primer lugar la imagen del núcleo en su disco duro. Debe
estar en el fichero /Image o /etc/Image. Algunas instalaciones utilizan el fichero
/vmlinux para el núcleo.
En su lugar, puede que tenga un núcleo
comprimido. Un núcleo comprimido se descomprime a si mismo en memoria
en tiempo de arranque, y utiliza mucho menos espacio en el disco duro. Si se
tiene un núcleo comprimido, puede encontrarse en el fichero /zImage o
/etc/zImage. Algunas instalaciones utilizan el fichero /vmlinuz para el núcleo
comprimido.
Una vez que se sabe donde esta
el núcleo, hay que poner el nombre de la partición raíz
de un dispositivo raíz en la imagen del núcleo, utilizando el
comando rdev. El formato de este comando es
rdev <nombre-de-nucleo> <dispositivo-raiz>
donde <nombre-del-nucleo> es el nombre de la imagen del núcleo, y <dispositivo-raiz> es el nombre de la partición raíz de Linux. Por ejemplo, para hacer que el dispositivo raíz en el núcleo /etc/Image sea /dev/hda2, utilice el comando
# rdev /etc/Image /dev/hda2
rdev también puede poner otras opciones
en el núcleo, como puede ser el modo SVGA por defecto a utilizar en tiempo
de arranque. Tan solo utilice "rdev -h" para obtener un mensaje de ayuda.
Una vez puesto el dispositivo raíz,
tan solo hay que copiar la imagen del núcleo al disquete.
Siempre que se copia datos a un disquete,
es una buena idea formatear previamente el disquete en MS-DOS. Esto establece
la información de pista y sector en el disquete con la que puede detectarse
como de alta o baja densidad.
Por ejemplo,
para copiar el núcleo en el fichero /etc/Image al disquete en /dev/fd0,
se puede utilizar el comando
# cp /etc/Image /dev/fd0
Este disquete debe arrancar ahora Linux.
4.2.2 Utilizando LILO
Anterior-
Siguiente - Índice
Otro método de arranque es utilizar LILO,
un programa que reside en el sector de arranque del disco duro. Este programa
se ejecuta cuando el sistema se inicia desde el disco duro, y puede arrancar
automáticamente Linux desde una imagen de núcleo almacenada en
el propio disco duro.
LILO puede utilizarse también como
una primera etapa de carga de varios sistemas operativos, permitiendo seleccionar
en tiempo de arranque que sistema operativo (como Linux o MS-DOS) arrancar.
Cuando se arranca utilizando LILO, se inicia el sistema operativo por defecto,
a menos que pulse |_ctrl_|, |_alt_|, o |_shift_| durante la secuencia de arranque.
Si se pulsa cualquiera de estas teclas, se le presentara un indicador de arranque,
donde debe teclear el nombre del sistema operativo a arrancar (como puede ser
"linux" o "msdos"). Si se pulsa la tecla |_tab_| en el indicador de arranque,
se le presentara una lista de los sistemas operativos disponibles.
La
forma mas simple de instalar LILO es editar el fichero de configuración,
/etc/lilo.conf, y ejecutar el comando
# /sbin/lilo
El fichero de configuración de LILO contiene una "estrofa" para cada sistema operativo que se pueda querer arrancar. La mejor forma de mostrarlo es con un ejemplo de un fichero de configuración LILO. El ejemplo siguiente es para un sistema que tiene una partición raíz Linux en /dev/hda1 y una partición MS-DOS en /dev/hda2.
# Le indicamos a LILO que modifique el registro
de arranque de
# /dev/hda (el primer disco duro no-SCSI).
Si se quiere arrancar desde
# una unidad distinta de /dev/hda,
se debe cambiar la siguiente línea
boot = /dev/hda
# Nombre del cargador de arranque. No hay
razón para cambiarlo, a menos
# que se este haciendo una modificación
seria del LILO
install = /boot/boot.b
# Dejemos a LILO efectuar alguna optimización.
compact
# Estrofa para la partición raíz
de Linux en /dev/hda1.
image = /etc/Image # Ubicación
del kernel
label = linux # Nombre del SO (para
el menú de arranque de LILO)
root = /dev/hda1 # Ubicación
de la partición raíz
vga = ask # Indicar al núcleo
que pregunte por modos SVGA
# en tiempo de arranque
# Estrofa para la partición MSDOS
en /dev/hda2.
other = /dev/hda2 # Ubicación
de la partición
table = /dev/hda # Ubicación
de la tabla de partición para /dev/hda2
label
= msdos # Nombre del SO (para el menú de arranque)
La primera "estrofa" de sistema operativo en
el menú del fichero de configuración será el sistema operativo
que arrancara LILO por defecto. Se puede seleccionar otro sistema operativo
en el indicador de arranque de LILO, tal y como se indico anteriormente.
Recuerde que cada vez que actualice la
imagen del núcleo en disco, se debe reejecutar /sbin/lilo para que los
cambios queden reflejados en el sector de arranque de su unidad.
También tenga en cuenta que si
utiliza la línea "root =", no hay motivo para utilizar rdev para poner
la partición raíz en la imagen del núcleo. LILO se encarga
de ponerlo en tiempo de arranque.
Las FAQ (Preguntas frecuentemente formuladas)
(ver Apéndice A) dan mas información sobre LILO, incluyendo como
utilizar LILO con el "OS/2's Boot Manager".
4.3 Cerrando
el Sistema
Anterior-
Siguiente - Índice
Cerrar un sistema Linux tiene algo de truco.
Recuerde que nunca se debe cortar la corriente o pulsar el botón de reset
mientras el sistema este ejecutándose. El núcleo sigue la pista
de la entrada/salida a disco en buffers de memoria. Si se reinicializa el sistema
sin darle al núcleo la oportunidad de escribir sus buffers a disco, puede
corromper sus sistemas de ficheros.
En tiempo de cierre se toman también
otras precauciones. Todos los procesos reciben una señal que les permite
morir airosamente (escribiendo y cerrando todos los ficheros y ese tipo de cosas).
Los sistemas de ficheros se desmontan
por seguridad. Si se desea, el sistema también puede alertar a los usuarios
de que se esta cerrando y darles la posibilidad de desconectarse.
La
forma mas simple de cerrar el sistema es con el comando shutdown. El formato
del comando es
shutdown <tiempo> <mensaje-de-aviso>
El argumento <tiempo> es el momento de
cierre del sistema (en el formato hh:mm:ss), y <mensaje-de-aviso> es un
mensaje mostrado en todos los terminales de usuario antes de cerrar. Alternativamente,
se puede especificar el parámetro <tiempo> como "now", para cerrar
inmediatamente. Se le puede suministrar la opción -r a shutdown para
reinicializar el sistema tras el cierre.
Por
ejemplo, para cerrar el sistema a las 8:00pm, se puede utilizar el siguiente
comando
# shutdown -r 20:00
El comando halt puede utilizarse para forzar
un cierre inmediato, sin ningún mensaje de aviso ni periodo de gracia.
halt se utiliza si se es el único usuario del sistema y se quiere cerrar
el sistema y apagarlo.
3 No apague o reinicialice
el sistema hasta que vea el mensaje:
The system is halted
Es muy importante que cierre el sistema "limpiamente"
utilizando el comando shutdown o el halt.
En algunos sistemas, se reconocerá
el pulsar |_ctrl-alt-del_|, que causara un shutdown; en otros sistemas, sin
embargo, el utilizar el "Apretón de Cuello de Vulcano" reinicializará
el sistema inmediatamente y puede causar un desastre.
4.4 Gestión
de Usuarios
Anterior-
Siguiente - Índice
Independientemente de que tenga muchos usuarios
o no en su sistema, es importante comprender los aspectos de la gestión
de usuarios bajo Linux. Incluso si se es el único usuario, se debe tener,
presumiblemente, una cuenta distinta de root para hacer la mayor parte del trabajo.
Cada persona que utilice el sistema debe
tener su propia cuenta. Raramente es una buena idea el que varias personas compartan
la misma cuenta. No solo es un problema de seguridad, sino que las cuentas se
utilizan para identificar unívocamente a los usuarios al sistema. Se
necesita ser capaz de saber quien esta haciendo que.
4.4.1 Conceptos de gestión
de usuarios
Anterior-
Siguiente - Índice
El sistema mantiene una cierta cantidad de información acerca de cada usuario. Dicha información se resume a continuación.
nombre de usuario El nombre de usuario es el identificador único dado a cada usuario del sistema. Ejemplos de nombres de usuario son larry, karl y mdw. Se pueden utilizar letras y dígitos junto a los caracteres "_" (subrayado) y "." (punto). Los nombres de usuario se limitan normalmente a 8 caracteres de longitud.
user ID El user ID, o UID, es un numero único dado a cada usuario del sistema. El sistema normalmente mantiene la pista de la información por UID, no por nombre de usuario.
group ID El group ID, o GID, es la identificación del grupo del usuario por defecto. En la sección 3.9 discutimos los permisos de grupo; cada usuario pertenece a uno o mas grupos definidos por el administrador del sistema. Mas sobre esto mas adelante.
clave El sistema también almacena la clave encriptada del usuario. El comando passwd se utiliza para poner y cambiar las claves de los usuarios.
nombre completo El "nombre real" o "nombre completo" del usuario se almacena junto con el nombre de usuario. Por ejemplo, el usuario schmoj puede tener el nombre "Jos Schmo" en la vida real.
directorio inicial El directorio inicial es el directorio en el que se coloca inicialmente al usuario en tiempo de conexión. Cada usuario debe tener su propio directorio inicial, normalmente situado bajo /home.
intérprete de inicio El interprete de inicio del usuario es el interprete de comandos que es arrancado para el usuario en tiempo de conexión. Ejemplos pueden ser /bin/bash y /bin/tcsh.
El fichero /etc/passwd contiene la información anterior acerca de los usuarios. Cada línea del fichero contiene información acerca de un único usuario; el formato de cada línea es
nombre:clave encriptada:UID:GID:nombre completo:dir.inicio:interprete
Un ejemplo puede ser:
kiwi:Xv8Q981g71oKK:102:100:Laura Poole:/home/kiwi:/bin/bash
Como puede verse, el primer campo , "kiwi",
es el nombre de usuario.
El siguiente campo, "Xv8Q981g71oKK", es
la clave encriptada. Las claves no se almacenan en el sistema en ningún
formato legible por el hombre. Las claves se encriptan utilizándose a
si mismas como clave secreta. En otras palabras, solo si se conoce la clave,
esta puede ser desencriptada. Esta forma de encriptación es bastante
segura.
Algunos sistemas utilizan "claves en sombra"
en la que la información de las claves se relega al fichero /etc/shadow.
Puesto que /etc/passwd es legible por todo el mundo, /etc/shadow suministra
un grado extra de seguridad, puesto que este no lo es. Las claves en sombra
suministran algunas otras funciones como puede ser la expiración de claves;
no entraremos a detallar estas funciones aquí .
El tercer campo "102", es el UID. Este
debe ser único para cada usuario. El cuarto campo, "100", es el GID.
Este usuario pertenece al grupo numerado 100. La información de grupos,
como la información de usuarios, se almacena en el fichero /etc/group.
Véase la sección 4.4.5 para mas información.
El quinto campo es el nombre completo
del usuario. "Laura Poole". Los dos últimos campos son el directorio
inicial del usuario (/home/kiwi) y el interprete de conexión (/bin/bash),
respectivamente. No es necesario que el directorio inicial de un usuario tenga
el mismo nombre que el del nombre de usuario. Sin embargo, ayuda a identificar
el directorio.
4.4.2 Añadiendo
usuarios
Anterior-
Siguiente - Índice
Cuando se añade un usuario hay varios
pasos a seguir. Primero, se le debe crear una entrada en /etc/passwd, con un
nombre de usuario y UID únicos. Se debe especificar el GID, nombre completo
y resto de información. Se debe crear el directorio inicial, y poner
los permisos en el directorio para que el usuario sea el dueño. Se deben
suministrar ficheros de comandos de inicialización en el nuevo directorio
y se debe hacer alguna otra configuración del sistema (por ejemplo, preparar
un buzón para el correo electrónico entrante para el nuevo usuario).
Aunque no es difícil el añadir
usuarios a mano (yo lo hago), cuando se esta ejecutando un sistema con muchos
usuarios, es fácil el olvidarse de algo. La manera mas simple de añadir
usuarios es utilizar un programa interactivo que vaya preguntando por la información
necesaria y actualice todos los ficheros del sistema automáticamente.
El nombre de este programa es useradd o adduser dependiendo del software que
este instalado. Las paginas man para estos comandos deberían ser suficientemente
autoexplicatorias.
4.4.3 Borrando usuarios
Anterior-
Siguiente - Índice
De forma parecida, borrar usuarios puede hacerse
con los comandos userdel o deluser dependiendo de que software fuera instalado
en el sistema.
Si se desea "deshabilitar" temporalmente
un usuario para que no se conecte al sistema (sin borrar la cuenta del usuario),
se puede prefijar con un asterisco ("*") el campo de la clave en /etc/passwd.
Por
ejemplo, cambiando la línea de /etc/passwd correspondiente a kiwi a
kiwi:*Xv8Q981g71oKK:102:100:Laura Poole:/home/kiwi:/bin/bash
evitara que kiwi se conecte.
4.4.4 Poniendo atributos
de usuario
Anterior-
Siguiente - Índice
Después de que haya creado un usuario,
puede necesitar cambiar algún atributo de dicho usuario, como puede ser
el directorio inicial o la clave. La forma mas simple de hacer esto es cambiar
los valores directamente en /etc/passwd. Para poner clave a un usuario, utilice
el comando passwd.
Por ejemplo,
# passwd larry
cambiara la clave de larry. Solo root puede
cambiar la clave de otro usuario de esta forma. Los usuarios pueden cambiar
su propia clave con passwd también.
En algunos sistemas, los comandos chfn
y chsh están disponibles, permitiendo a los usuarios el cambiar sus atributos
de nombre completo e interprete de conexión. Si no, deben pedir al administrador
de sistemas que los cambie por ellos.
4.4.5 Grupos
Anterior-
Siguiente - Índice
Como hemos citado anteriormente, cada usuario
pertenece a uno o mas grupos. La única importancia real de las relaciones
de grupo es la perteneciente a los permisos de ficheros, como dijimos en la
sección 3.9, cada fichero tiene un "grupo propietario" y un conjunto
de permisos de grupo que define de que forma pueden acceder al fichero los usuarios
del grupo.
Hay varios grupos definidos en el sistema,
como pueden ser bin, mail, y sys. Los usuarios no deben pertenecer a ninguno
de estos grupos; se utilizan para permisos de ficheros del sistema. En su lugar,
los usuarios deben pertenecer a un grupo individual, como users. Si se quiere
ser detallista, se pueden mantener varios grupos de usuarios como por ejemplo
estudiantes, soporte y facultad.
El fichero
/etc/group contiene información acerca de los grupos. El formato de cada
línea es
nombre de grupo:clave:GID:otros miembros
Algunos ejemplos de grupos pueden ser:
root:*:0:
usuarios:*:100:mdw,larry
invitados:*:200:
otros:*:250:kiwi
El primer grupo, root, es un grupo especial
del sistema reservado para la cuenta root. El siguiente grupo, users, es para
usuarios normales. Tiene un GID de 100. Los usuarios mdw y larry tienen acceso
a este grupo. Recuérdese que en /etc/passwd cada usuario tiene un GID
por defecto. Sin embargo, los usuarios pueden pertenecer a mas de un grupo,
añadiendo sus nombres de usuario a otras líneas de grupo en /etc/group.
El comando groups lista a que grupos se tiene acceso.
El tercer grupo, invitados, es para usuarios
invitados, y otros es para "otros" usuarios. El usuario kiwi tiene acceso a
este grupo.
Como se puede ver, el campo "clave" de
/etc/group raramente se utiliza. A veces se utiliza para dar una clave para
acceder a un grupo. Esto es raras veces necesario. Para evitar el que los usuarios
cambien a grupos privilegiados (con el comando newgroup), se pone el campo de
la clave a "*".
Se pueden usar los comandos addgroup o
groupadd para añadir grupos a su sistema. Normalmente es mas sencillo
añadir líneas a /etc/group uno mismo, puesto que no se necesitan
mas configuraciones para añadir un grupo. Para borrar un grupo, solo
hay que borrar su entrada de /etc/group.
4.5 Archivando
y Comprimiendo Ficheros
Anterior-
Siguiente - Índice
Antes de que podamos hablar acerca de copias de seguridad, necesitamos presentar las herramientas utilizadas para archivar ficheros y programas en los sistemas UNIX.
4.5.1 Utilizando tar
Anterior-
Siguiente - Índice
El comando tar es utilizado normalmente para archivar ficheros. El formato del comando tar es
tar <opciones> <fichero1> <fichero2> ...<ficheroN>
donde <opciones> es la lista de comandos
y opciones para tar, y <fichero1> hasta <ficheroN> es la lista de
ficheros a añadir o extraer del archivo.
Por
ejemplo, el comando
# tar cvf backup.tar /etc
empaquetara todos los ficheros de /etc en el
fichero tar backup.tar. El primer argumento de tar ("cvf") es el "comando" tar.
"c" le dice a tar que cree un nuevo fichero de archivo. La opción "v"
fuerza a tar en el modo detallado, imprimiendo los nombres de los ficheros según
se archivan. La opción "f" le dice a tar que el siguiente argumento (backup.tar)
es el nombre del archivo a crear. El resto de los argumentos de tar son los
nombres de ficheros y directorios a añadir al archivo.
El
comando
# tar xvf backup.tar
extraerá el fichero tar backup.tar en
el directorio actual. Esto puede ser peligroso a veces, cuando se extraen ficheros
de un fichero tar, los ficheros antiguos se sobreescriben.
Por
otra parte, antes de extraer ficheros tar es importante conocer donde se deben
desempaquetar los ficheros. Por ejemplo, digamos que se archivaron los siguientes
ficheros: /etc/hosts, /etc/group, y /etc/passwd. Si se uso el comando
# tar cvf backup.tar /etc/hosts /etc/group /etc/passwd
el nombre de directorio /etc se añadió al principio de cada nombre de fichero. Para poder extraer los ficheros en la localización correcta, se necesitara utilizar los siguientes comandos:
# cd /
#
tar xvf backup.tar
Puesto que los ficheros se extraen con el nombre de camino almacenado en el fichero de archivo. Sin embargo, si se archivaron los ficheros con los comandos
# cd /etc
#
tar cvf hosts group passwd
Los nombres de directorio no se salvaron en el fichero de archivo. Por esto se necesitara hacer "cd /etc" antes de extraer los ficheros. Como se puede ver, el cómo haya sido creado un fichero tar marca una gran diferencia en como se extrae. Se puede usar el comando
# tar tvf backup.tar
para mostrar un "índice" del fichero tar antes de desempaquetarlo. De esta forma se puede ver que directorio se utilizo como origen de los nombres de los ficheros, y se puede extraer el archivo desde la localización correcta.
4.5.2 gzip y compress
Anterior-
Siguiente - Índice
A diferencia de los programas de archivo para MS-DOS, tar no comprime automáticamente los ficheros según los archiva. Por ello, si se están archivando dos ficheros de un megabyte, el fichero tar resultante tendrá dos megabytes. El comando gzip puede utilizarse para comprimir un fichero (el fichero a comprimir no necesita ser un fichero tar). El comando
# gzip -9 backup.tar
comprimirá backup.tar y le dejara con
backup.tar.gz, que es la versión comprimida del fichero. La opción
-9 le dice a gzip que utilice el mayor factor de compresión.
El comando gunzip puede ser utilizado
para descomprimir un fichero comprimido con gzip. Equivalentemente, se puede
utilizar "gzip -d". gzip es una herramienta relativamente nueva en la comunidad
UNIX. Durante muchos años, se utilizo en su lugar el comando compress.
Sin embargo, debido a varios factores1, compress se esta volviendo desfasado.
Los ficheros comprimidos con compress
terminan en la extensión .Z. Por ejemplo, backup.tar.Z es la versión
comprimida con compress de backup.tar, mientras que backup.tar.gz es la versión
comprimida con gzip2. El comando uncompress se utiliza para expandir un fichero
comprimido con compress; gunzip sabe también como tratar los ficheros
comprimidos con compress.
4.5.3 Juntándolo
todo
Anterior-
Siguiente - Índice
Por lo tanto, para archivar un grupo de ficheros y comprimir el resultado, se pueden utilizar los comandos:
# tar cvf backup.tar /etc
#
gzip -9 backup.tar
_____________________________________________
1 Estos factores incluyen una disputa por una
patente software contra el algoritmo de compress y el hecho de que gzip es mucho
mas eficiente que compress.
2 Para añadir mas confusión,
durante algún tiempo la extensión .z ("z" minúscula) fue
utilizada para los ficheros comprimidos con gzip. La extensión oficial
de los ficheros gzip ahora es .gz.
El resultado será backup.tar.gz. Para desempaquetar este fichero, se usan los comandos contrarios:
# gunzip backup.tar.gz
#
tar xvf backup.tar
Por supuesto, asegúrese siempre de que
esta en el directorio correcto antes de desempaquetar un fichero tar.
Se
pueden utilizar algunas mañas UNIX para hacer todo esto en una sola línea
de comando, como por ejemplo:
# tar cvf - /etc | gzip -9c > backup.tar.gz
Aquí estamos enviando el fichero tar
a "-", que representa la salida estándar de tar. Esto es encolado hacia
gzip, que comprime el fichero tar de entrada, y el resultado se salva en backup.tar.gz.
La
opción -c de gzip le dice que envíe su salida hacia la salida
estándar, que es redirigida a backup.tar.gz.
Un comando único para desempaquetar
este archivo seria:
# gunzip -c backup.tar.gz | tar xvf -
De nuevo, gunzip descomprime el contenido de
backup.tar.gz y envía el fichero tar resultante hacia la salida estándar.
Esta es redirigida hacia tar, que lee de "-", refiriéndose esta vez a
la entrada estándar de tar.
Felizmente, el comando tar también
incluye la opción z para comprimir/descomprimir automáticamente
los ficheros al vuelo, utilizando el algoritmo de compresión de gzip.
Por
ejemplo, el comando
# tar cvfz backup.tar.gz /etc
es equivalente a
# tar cvf backup.tar /etc
#
gzip backup.tar
Igual que el comando
# tar xvfz backup.tar.Z
se puede utilizar en vez de
# uncompress backup.tar.Z
#
tar xvf backup.tar
Remítase a las paginas man para obtener mas información acerca de tar y gzip.
4.6 Usando
Disquetes y Haciendo Copias de Seguridad
Anterior-
Siguiente - Índice
Los disquetes son utilizados normalmente como
medio para copias de seguridad. Si no se tiene una unidad de cinta conectada
al sistema, se pueden utilizar disquetes (a pesar de que sean mas lentos y ligeramente
menos seguros).
También puede utilizar disquetes
para contener sistemas de ficheros individuales, de esta forma, se puede montar
mount el disquete para acceder a los datos contenidos en el.
4.6.1 Utilizando disquetes
para copias de seguridad
Anterior-
Siguiente - Índice
La forma mas simple de hacer una copia
de seguridad es con tar. El comando
# tar cvfzM /dev/fd0 /
hará una copia de seguridad completa de su sistema utilizando el disquete /dev/fd0. La opción "M" de tar permite que la copia de seguridad sea una copia multi-volumen; esto es, cuando un disquete esta lleno, tar pedirá el siguiente. El comando
# tar xvfzM /dev/fd0
ser utilizado para recuperar la copia de seguridad
completa. Este método puede ser utilizado también si se tiene
una unidad de cinta (/dev/rmt0) conectada al sistema.
Existen otros programas para hacer copias
de seguridad multi-volumen; el programa backflops disponible en tsx-11.mit.edu
puede ser útil.
Hacer una copia de seguridad completa
del sistema puede ser costoso en tiempo y recursos. Muchos administradores de
sistemas utilizan una política de copias de seguridad incrementales,
en la que cada mes se hace una copia de seguridad completa, y cada semana solo
se copian aquellos ficheros que hayan sido modificados en esa semana. En este
caso, si el sistema se viene abajo a mitad de mes, solo tiene que restaurar
la ultima copia de seguridad mensual completa y, después, las ultimas
copias semanales según el caso.
El comando find puede ser útil
para localizar ficheros que hayan cambiado desde una cierta fecha.
Se pueden encontrar varios ficheros de
comandos para manejar copias de seguridad incrementales en sunsite.unc.edu.
4.6.2 Utilizando disquetes
como sistemas de ficheros
Anterior-
Siguiente - Índice
Puede crearse un sistema de ficheros en un disquete igual que lo haría en una partición de un disco duro. Por ejemplo,
# mke2fs /dev/fd0 1440
crea un sistema de ficheros en el disquete en
/dev/fd0. El tamaño del sistema de ficheros debe corresponder al tamaño
del disquete. Los disquetes de alta densidad de 3.5" tienen un tamaño
de 1.44 megabytes, o 1440 bloques. Los disquetes de alta densidad de 5.25" tienen
1200 bloques.
Para poder acceder a un disquete,
se debe montar mount el sistema de ficheros que contiene. El comando
# mount -t ext2 /dev/fd0 /mnt
montara el disquete en /dev/fd0 en el directorio
/mnt. Ahora todos los ficheros del disquete aparecerán bajo /mnt en su
unidad. "-t ext2" especifica el tipo de sistema de ficheros como ext2fs. Si
crea otro tipo de sistema de ficheros en el disquete, necesitara especificárselo
al comando mount.
El "punto de montaje" (el directorio donde
esta montando el sistema de ficheros) debe existir en el momento de utilizar
el comando mount. Si no existiese, deba crearlo con el comando mkdir.
Para
mas información sobre sistemas de ficheros, montaje y puntos de montaje,
ver sección 4.8.3 Tenga en cuenta que cualquier entrada/salida al disquete
se gestiona con buffers igual que si fuese de disco duro. Si cambia datos en
el disquete, puede que no vea encenderse la luz de la unidad hasta que el núcleo
decida vaciar sus buffers. Es importante que no quite un disquete antes de haberlo
desmontado; esto puede hacerse con el comando
# umount /dev/fd0
No cambie los disquetes como se hace en un sistema MS-DOS; siempre que cambie disquetes, desmonte umount el primero y monte mount el siguiente.
4.7 Actualizando
e Instalando Nuevo Software
Anterior-
Siguiente - Índice
Otra tarea del administrador de sistemas es
la actualización e instalación de nuevo software.
La comunidad Linux es muy dinámica.
Las versiones nuevas del núcleo aparecen cada pocas semanas, y otros
programas se actualizan casi tan a menudo. Por esto, los nuevos usuarios de
Linux sienten a menudo la necesidad de actualizar sus sistemas constantemente
para mantener el paso de los cambios. No solo esto no es necesario, sino que
es una perdida de tiempo. Para mantenerse al di a de todos los cambios del mundo
Linux, debería utilizar todo su tiempo actualizando en vez de usando
su sistema.
Pero entonces, ¿cuando se debe actualizar?.
Alguna gente piensa que se debe actualizar cuando se libera una nueva versión
de distribución, por ejemplo, cuando Slackware presenta una nueva versión.
Muchos usuarios Linux reinstalan completamente sus sistemas con la nueva versión
Slackware, cada vez. Esto, también, es una perdida de tiempo. En general,
los cambios de las versiones Slackware son pequeños. Bajarse y reinstalar
30 discos cuando solo ha cambiado un 10% del software es, por supuesto, inútil.
La mejor forma de actualizar su sistema
es haciéndolo a mano: actualizando solo aquellos paquetes de software
que sepa que hay que actualizar. Esto asusta a un montón de gente: quieren
saber que actualizar y como, y que se romperá si no actualizan. Para
tener éxito con Linux, es importante superar los temores del "hágalo
usted mismo", que es lo que Linux es, a fin de cuentas.
De hecho, una vez que tenga su sistema
trabajando y todo el software correctamente configurado, la reinstalación
de una nueva versión no dudara en limpiar toda la configuración
y todo estará roto otra vez, igual que la primera vez que instalo su
sistema. Volver atrás de esta forma no es necesario, todo lo que se necesita
es algún conocimiento acerca de como actualizar el sistema y de cómo
hacerlo bien.
Se encontrara con que cuando actualice
un componente de su sistema, no tienen por que fallar los demás. Por
ejemplo, la mayor parte del software de mi sistema se quedo en una instalación
antigua basada en el nivel 0.96 MCC Interim. Ciertamente, utilizo la versión
mas reciente del núcleo y de las librerías con este software sin
problemas. Realmente, la actualización insensata para "mantenerse en
la ola" no es tan importante. Esto no es MS-DOS o Microsoft Windows. No hay
ninguna razón importante para ejecutar la versión mas reciente
de todo el software. Si encuentra que desea o necesita funciones de una versión
nueva, entonces actualice. Si no, no lo haga. En otras palabras, actualice solo
lo que tenga que hacerlo y cuando tenga que hacerlo. No actualice solo por el
mero hecho de actualizar. Hacerlo solo gastaría un montón de tiempo
y esfuerzo intentando mantenerse al día.
El software mas importante para actualizar
en su sistema es el núcleo, las librerías y el compilador gcc.
Estas son las tres partes esenciales de su sistema, y en algunos casos cada
uno depende de las otras para que todo funcione bien. La mayor parte del resto
del software de su sistema no necesita ser actualizado periódicamente.
4.7.1 Actualizando el núcleo
Anterior-
Siguiente - Índice
Actualizar el núcleo es simplemente asunto
de coger los fuentes y compilarlos uno mismo. Debe compilar el núcleo
por si mismo para poder activar o desactivar ciertas funciones, además
de asegurarse de que el núcleo estará optimizado para correr en
su maquina. El proceso es casi indoloro.
Los fuentes del núcleo pueden obtenerse
de cualquiera de los servidores FTP de Linux (para una lista, véase Apéndice
C). En sunsite.unc.edu, por ejemplo, los fuentes del núcleo se encuentran
en /pub/Linux/kernel. Las versiones del núcleo se numeran utilizando
un numero de versión y un nivel de "parche". Por ejemplo, la versión
de núcleo 0.99, nivel de parche 11 es nombrada como 0.99.pl11, o simplemente
0.99.11.
Los fuentes del núcleo se presentan
en un fichero tar comprimido con gzip3. Por ejemplo, el fichero conteniendo
los fuentes del núcleo 0.99.pl11 es linux-0.99.11.tar.gz.
Se desempaqueta este fichero tar desde
el directorio /usr/src; esto crea el directorio /usr/src/linux que contiene
los fuentes del núcleo. Se debe borrar o cambiar de nombre el directorio
/usr/src/linux existente antes de desempaquetar la nueva versión.
Una
vez que se han desempaquetado los fuentes, es necesario asegurarse que dos enlaces
simbólicos son correctos. Para crear estos enlaces, se utilizan los comandos:
_____________________________________________
3 A menudo, se suministra un fichero de parches para la versión actual del núcleo, que permite parchear los fuentes actuales desde el nivel anterior al actual (utilizando el programa patch). En muchos casos, sin embargo, es normalmente mas sencillo el instalar la nueva versión de los fuentes del núcleo completa.
# ln -sf /usr/src/linux/include/linux /usr/include/linux
#
ln -sf /usr/src/linux/include/asm /usr/include/asm
Una vez creados estos enlaces una vez, no hay
razón para crearlos de nuevo cuando se instale la siguiente versión
de los fuentes del núcleo. (Véase sección 3.10 para mas
información sobre enlaces simbólicos.)
Hay que advertir, que para poder compilar
el núcleo, se debe tener gcc y g++, compiladores C y C++, instalados
en el sistema. Puede necesitar tener la versión mas reciente de estos
compiladores: ver sección 4.7.3, mas adelante, para mas información.
Para compilar el núcleo, primero
cambie de directorio usando cd a /usr/src/linux. Ejecute el comando make config.
Este comando le ira preguntando por un numero de opciones de configuración,
como puede ser que tipos de sistemas de ficheros se desea incluir en el nuevo
núcleo.
Después, edite /usr/src/linux/Makefile.
Asegúrese que la definición para ROOT_DEV sea correcta, define
el dispositivo utilizado como sistema de ficheros raíz en tiempo de arranque.
La definición normal es
ROOT_DEV = CURRENT
A menos que este cambiando el dispositivo raíz
del sistema de ficheros, no hay razón para cambiar esto.
Después, ejecute el comando make
dep para asegurar que se cumplen todas las dependencias del fuente. Este es
un paso muy importante.
Finalmente, se esta listo para compilar
el núcleo. El comando make Image compilara el núcleo y dejara
la nueva imagen del núcleo en el fichero /usr/src/linux/Image. Alternativamente,
el comando make zImage compilara una imagen comprimida del núcleo, que
se descomprime a si misma en tiempo de arranque y utiliza menos espacio en el
disco.
Una vez que esta el núcleo compilado,
se necesita, o bien copiarlo a un disquete de arranque (con un comando como
"cp Image /dev/fd0") o bien instalarlo utilizando LILO para arrancar desde el
disco duro. Ver sección 4.2.2 para mas información.
4.7.2 Actualizando las
librerías
Anterior-
Siguiente - Índice
Como se menciono antes, la mayor parte del software
del sistema esta compilado para que utilice las librerías compartidas,
que contienen subrutinas comunes compartidas entre distintos programas.
Si
le aparece el mensaje
Incompatible library versión
cuando se intenta ejecutar un programa, entonces
necesita actualizar a la versión de las librerías que el programa
requiere. Las librerías son compatible-ascendentes; esto es, un programa
compilado para utilizar una versión antigua de las librerías,
debe trabajar con la nueva versión de las librerías instalada.
Sin embargo, lo contrario no es cierto.
La ultima versión de las librerías
se puede encontrar en los servidores FTP de Linux. En sunsite.unc.edu, están
disponibles en /pub/Linux/GCC. Los ficheros de "versión" que se encuentran
ahí deben explicar que ficheros se necesita obtener y como instalarlos.
Rápidamente, se deben coger los ficheros image-version.tar.gz y inc-version.tar.gz
donde versión es la versión de las librerías a instalar,
por ejemplo 4.4.1. Son ficheros tar comprimidos con gzip; el fichero image contiene
las imágenes de las librerías a instalar en /lib y /usr/lib. El
fichero inc contiene los ficheros de inclusión a instalar en /usr/include.
El fichero release-version.tar.gz debe
explicar el método de instalación detalladamente (las instrucciones
exactas varían para cada versión). En general, se necesita instalar
los ficheros de librerías .a y .sa en /usr/lib. Estas son las librerías
utilizadas en tiempo de compilación.
Además, los ficheros imagen de
las librerías compartidas libc.so.version se instalan en /lib. Estas
son las imágenes de las librerías compartidas que son cargadas
en tiempo de ejecución por los programas que utilizan las librerías.
Cada librería tiene un enlace simbólico utilizando el numero de
versión mayor de la librería en /lib
Por ejemplo, la versión 4.4.1 de
la librería libc tiene un numero de versión mayor de 4. El fichero
que contiene la librería es libc.so.4.4.1. Existe un enlace simbólico
del nombre libc.so.4 en /lib apuntando a este fichero. Por ejemplo, cuando se
actualiza de libc.so.4.4 a libc.so.4.4.1, necesita cambiar el enlace simbólico
para apuntar a la nueva versión.
3 Es muy importante que se cambie el enlace
simbólico en un solo paso, como se indica mas abajo.
Si
de alguna forma borrase el enlace simbólico libc.so.4, los programas
que dependen del enlace (incluyendo utilidades básicas como ls y cat)
dejaran de funcionar. Utilice el siguiente comando para actualizar el enlace
simbólico libc.so.4 para que apunte al fichero libc.so.4.4.1:
# ln -sf /lib/libc.so.4.4.1 /lib/libc.so.4
Se necesita también cambiar el enlace
simbólico libm.so.version de la misma forma. Si se esta actualizando
a una versión diferente de las librerías, sustituya lo anterior
con los nombres adecuados.
La nota de la versión de la librería
debe explicar los detalles. (Ver sección 3.10 para mas información
acerca de los enlaces simbólicos).
4.7.3 Actualizando gcc
Anterior-
Siguiente - Índice
El compilador de C y C++ gcc se utiliza para
compilar software en su sistema, siendo el mas importante el núcleo.
La versión mas reciente de gcc se encuentra en los servidores FTP de
Linux.
En sunsite.unc.edu se encuentra en el
directorio /pub/Linux/GCC (junto con las librerías). Debe existir un
fichero reléase para la distribución gcc detallando que ficheros
se necesitan obtener y como instalarlos.
4.7.4 Actualizando otro
software
Anterior-
Siguiente - Índice
La actualización de otro software solo
suele consistir en obtener los ficheros apropiados e instalarlos.
Mucho software para Linux se distribuye
como ficheros tar comprimidos con gzip, incluyendo, ya sea fuentes, ejecutables
o ambos. Si los ejecutables no se incluyen con la versión, puede ser
necesario recompilarlos uno mismo; normalmente esto significa teclear make en
el directorio que tiene los fuentes.
Leer el newsgroup de USENET comp.os.linux.announce
en busca de anuncios de nuevas versiones de software es la mejor manera de enterarse
de la aparición de nuevo software. Siempre que busque software en un
servidor FTP bájese el fichero de índice ls-lR del servidor FTP
y utilice grep para encontrar los ficheros en cuestión, es la forma mas
simple de localizar software. Si tiene la posibilidad de utilizar archie, este
puede servirle de ayuda. Si no tiene archie, puede conectarse con telnet a un
servidor archie como puede ser archie.rutgers.edu, identificarse como "archie"
y utilizar el comando "help". Véase Apéndice A para mas detalles.
Una fuente útil de software para
Linux, son las imágenes de los discos de la distribución Slackware.
Cada disco contiene varios ficheros .tgz
que son simples ficheros tar comprimidos con gzip. En vez de bajarse los discos,
puede bajar solo los ficheros .tgz deseados de los directorios Slackware del
servidor FTP e instalarlos directamente. Si puede ejecutar la distribución
Slackware, puede utilizar el comando setup para cargar e instalar automáticamente
una serie completa de discos.
Insistimos, normalmente no es una buena
idea el actualizar reinstalando desde cero la versión mas reciente de
Slackware, u otra distribución. Si se reinstala de esta forma, no lo
dude, arruinara su instalación actual. La mejor forma de actualizar software
es por partes; esto es, si hay un programa que se usa a menudo y tiene una nueva
versión, actualícelo. Si no, no se moleste. Regla practica: Si
no tiene nada roto, no lo repare. Si su software actual funciona, no hay motivo
para actualizar.
4.8 Gestionando
Sistemas de Ficheros
Anterior-
Siguiente - Índice
Otra tarea del administrador de sistemas es el cuidado de los sistemas de ficheros. Mucho de este trabajo se basa en comprobaciones periódicas del sistema de ficheros en busca de ficheros dañados o corrompidos; muchos sistemas comprueban automáticamente los sistemas de ficheros en tiempo de arranque.
4.8.1 Montando sistemas
de ficheros
Anterior-
Siguiente - Índice
Para empezar, algunos conceptos acerca de sistemas
de ficheros. Antes de que un sistema de ficheros sea accesible al sistema, debe
ser montado en algún directorio. Por ejemplo, si se tiene un sistema
de ficheros en un disquete, se debe montar bajo algún directorio, digamos
/mnt, para poder acceder a los ficheros que contiene (véase la sección
4.6.2). Tras montar el sistema de ficheros, todos los ficheros en dicho sistema
aparecen en ese directorio. Tras desmontar el sistema de ficheros, el directorio
(en este caso, /mnt) estará vacío.
Lo mismo es valido para los sistemas de
ficheros del disco duro. El sistema monta automáticamente los sistemas
de ficheros del disco duro en tiempo de arranque. El así llamado "sistema
de ficheros raíz" es montado en el directorio /. Si se tiene un sistema
de ficheros separado para /usr, por ejemplo, se monta en /usr. Si solo se tiene
un sistema de ficheros raíz, todos los ficheros (incluyendo los de /usr)
existen en ese sistema de ficheros.
El
comando mount se utiliza para montar un sistema de ficheros. El comando
mount -av
se ejecuta desde el fichero /etc/rc (que es el fichero de inicialización del sistema, ejecutado en tiempo de arranque; véase la sección 4.10.1). El comando mount -av obtiene información de los sistemas de ficheros y puntos de montaje del fichero /etc/fstab. Este es un ejemplo de fichero fstab:
# dispositivo directorio tipo opciones
/dev/hda2 / ext2 defaults
/dev/hda3 /usr ext2 defaults
/dev/hda4 none swap sw
/proc
/proc proc none
El primer campo es el dispositivo, el nombre de la partición a montar. El segundo campo es el punto de montaje. El tercero es el tipo de sistema de ficheros, como puede ser ext2 (para ext2fs) o minix (para sistemas de ficheros Minix). La tabla 4.1 lista los distintos tipos de sistemas de ficheros disponibles en Linux.4 Puede que no todos estos tipos de sistemas de ficheros estén disponibles en su sistema; el núcleo debe tener soporte para ellos compilado en el. Véase sección 4.7 para información sobre como construir un núcleo.
Sistema de ficheros |
Nombre de tipo |
Comentarios |
Second Extended Filesystem |
ext2 |
Sistema de ficheros mas común en Linux. |
Extended Filesystem |
ext |
Reemplazado por ext2. |
Minix Filesystem |
minix |
Sistema de ficheros Minix original; pocas veces usado. |
Xia Filesystem |
xia |
Como ext2, pero raras veces usado. |
UMSDOS Filesystem |
umsdos |
Usado para instalar Linux en una partición MS-DOS. |
MS-DOS Filesystem |
msdos |
Utilizado para acceder a ficheros MS-DOS. |
/proc Fliesystem |
proc |
Suministra información de proceso para ps, etc. |
ISO 9660 Filesystem |
iso9660 |
Formato utilizado por muchos CD-ROMs. |
Xenix Filesystem |
xenix |
Sistema de ficheros Xenix. |
System V Filesystem |
sysv |
Variantes del System V para el x86. |
Coherent Filesystem |
coherent |
Acceso a ficheros de Coherent. |
HPFS Filesystem |
hpfs |
Acceso en lectura a particiones HPFS (DoubleSpace) |
Tabla 4.1: Tipos de Sistemas de Ficheros en
Linux
El ultimo campo del fichero fstab contiene
las opciones del comando mount, normalmente, esta puesto a "defaults" (defecto).
Como
se puede ver, las particiones de intercambio están incluidas en /etc/fstab
también. Tienen un punto de montaje de none y tipo swap. El comando swapon
-a, que se ejecuta también desde /etc/rc, se utiliza para activar el
intercambio en todos los dispositivos de intercambio listados en /etc/fstab.
__________________________________
4 Esta tabla es valida a la versión de
núcleo 1.1.37.
El fichero fstab contiene una entrada
especial para el sistema de ficheros /proc. Tal y como se menciono en la sección
3.11.1, el sistema de ficheros /proc se utiliza para almacenar información
acerca de los procesos del sistema, memoria disponible, y otros datos del mismo
tipo. Si /proc no esta montado, no funcionaran comandos como ps.
3 El comando mount solo puede ser utilizado
por root. Esto es así para garantizar la seguridad del sistema; no es
deseable que usuarios normales estén montando y desmontando sistemas
de ficheros a su antojo. Existen varios paquetes disponibles que permiten a
los usuarios normales montar y desmontar sistemas de ficheros (disquetes en
particular) sin comprometer la seguridad del sistema.
El comando mount -av realmente monta todos
los sistemas de ficheros excepto el sistema de ficheros raíz (en la tabla
anterior, /dev/hda2). El sistema de ficheros raíz es montado automáticamente
en tiempo de arranque por el núcleo.
En
vez de utilizar el comando mount -av, se puede montar un sistema de ficheros
a mano. El comando
# mount -t ext2 /dev/hda3 /usr
es equivalente a montar el sistema de ficheros
con la entrada /dev/hda3 del ejemplo de fichero fstab anterior.
En general, nunca se debe montar o desmontar
sistemas de ficheros a mano. El comando mount -av en /etc/rc se encarga de montar
los sistemas de ficheros en tiempo de arranque. Los sistemas de ficheros son
desmontados por los comandos shutdown o halt antes de cerrar el sistema.
4.8.2 Comprobando sistemas
de ficheros
Anterior-
Siguiente - Índice
Normalmente es una buena idea el comprobar de
vez en cuando los sistemas de ficheros en busca de ficheros dañados o
corrompidos. Algunos sistemas comprueban automáticamente sus sistemas
de ficheros en tiempo de arranque (con los comandos apropiados en /etc/rc).
El
comando utilizado para comprobar un sistema de ficheros depende del tipo de
sistema de ficheros en cuestión. Para sistemas de ficheros ext2fs (el
tipo mas utilizado normalmente), el comando es e2fsck. Por ejemplo, el comando
# e2fsck -av /dev/hda2
comprobara el sistema de ficheros ext2fs de
/dev/hda2 y corregirá automáticamente cualquier error.
Normalmente
es una buena idea el desmontar un sistema de ficheros antes de comprobarlo.
Por ejemplo, el comando
# umount /dev/hda2
desmontara el sistema de ficheros en /dev/hda2,
tras lo cual podrá ser comprobado. La única excepción es
que no se puede desmontar el sistema de ficheros raíz. Para poder comprobar
el sistema de ficheros raíz cuando esta desmontado, se debe utilizar
un disquete de arranque/raíz (véase la sección 4.11.1).
Tampoco se puede desmontar un sistema de ficheros si alguno de sus ficheros
esta "ocupado", esto es, siendo utilizado por un proceso en ejecución.
Por ejemplo, no se puede desmontar un sistema de ficheros si el directorio de
trabajo de algún usuario esta en ese sistema de ficheros. Se recibirá
un error "Device busy" (dispositivo ocupado) si se intenta desmontar un sistema
de ficheros que este en uso.
Otros tipos de sistemas de ficheros utilizan
formas diferentes del comando e2fsck, como pueda ser efsck y xfsck. En algunos
sistemas, se puede utilizar el comando fsck, que determina el tipo de sistema
de ficheros y ejecuta el comando apropiado.
3 Es importante que se reinicialice el
sistema inmediatamente después de comprobar un sistema de ficheros montado,
si es que se hizo alguna corrección al sistema de ficheros. (Sin embargo,
en general, no se deben comprobar sistemas de ficheros que estén montados.)
Por ejemplo, si e2fsck informa que ha corregido algún error en el sistema
de ficheros, se debe apagar el sistema con shutdown -r para rearrancarlo. Esto
permite al sistema resincronizar su información acerca del sistema de
ficheros cuando e2fsck lo modifica.
El sistema de ficheros /proc no necesita
nunca ser comprobado de esta forma. /proc es un sistema de ficheros en memoria,
gestionado directamente por el núcleo.
4.9 Utilizando
un fichero de intercambio
Anterior-
Siguiente - Índice
En vez de reservar una partición individual
para espacio de intercambio, se puede usar un fichero.
Sin embargo, hay que instalar todo Linux
y hacer todas las tareas de configuración antes de crear el fichero de
intercambio.
Si tiene un sistema Linux
instalado, puede utilizar los siguientes comandos para crear un fichero de intercambio.
A continuación vamos a crear un fichero de intercambio de 8208 bloques
de tamaño (unos 8 megas).
# dd if=/dev/zero of=/swap bs=1024 count=8208
Este comando crea el fichero de intercambio propiamente dicho. Reemplace "count=" con el tamaño del fichero de intercambio en bloques.
# mkswap /swap 8208
Este comando inicializará el fichero de intercambio swap; como antes, se debe cambiar el nombre y tamaño del fichero de intercambio a los valores apropiados.
# /etc/sync
#
swapon /swap
Ahora, tras sincronizar, lo que asegura que
el fichero haya sido escrito a disco, ya estamos utilizando el fichero /swap
que habíamos creado como fichero de intercambio.
El principal inconveniente de utilizar
un fichero de intercambio de esta forma es que todos los accesos al fichero
de intercambio se realizan a través del sistema de ficheros. Esto significa
que los bloques que forman el fichero de intercambio pueden no ser contiguos.
Por esto, el rendimiento no puede ser tan alto como cuando se utiliza una partición
de intercambio, en la que los bloques están siempre contiguos y las peticiones
de entrada/salida se hacen directamente al dispositivo.
Otra desventaja a la hora de utilizar
un fichero de intercambio es la posibilidad de corromper los datos del sistema
de ficheros _cuando se utilizan grandes ficheros de intercambio, existe la posibilidad
de que se pueda corromper el sistema de ficheros si algo va mal. Manteniendo
los sistemas de ficheros y particiones de intercambio separados prevendrá
la posibilidad de que esto llegue a ocurrir.
La utilización de un fichero de
intercambio puede ser muy útil si se tiene una necesidad temporal de
mas espacio de intercambio. Por ejemplo, si se esta compilando un gran programa
y se quiere acelerar las cosas, se puede crear un fichero de intercambio de
forma temporal y utilizarlo conjuntamente con el espacio habitual de intercambio.
Para
eliminar un fichero de intercambio, primero se usa swapoff de esta forma
# swapoff /swap
Y ahora se puede borrar de forma segura el fichero.
# rm /swap
Recuerde que cada fichero de intercambio (o partición) puede ser de hasta 16 megabytes, pero se pueden usar hasta 8 ficheros o particiones de intercambio en un sistema.
4.10
Tareas Varias
Anterior-
Siguiente - Índice
Lo crea o no, hay un numero de tareas domesticas para el administrador de sistemas que no caen en ninguna categoría principal.
4.10.1 Ficheros de arranque
del sistema
Anterior-
Siguiente - Índice
Cuando el sistema arranca, se ejecutan automáticamente
una serie de ficheros de comandos (scripts) en el sistema, antes de que ningún
usuario entre. Aquí tenemos una descripción de lo que ocurre:
En tiempo de arranque, el núcleo
arranca el proceso /etc/init. init es un programa que lee su fichero de configuración,
/etc/inittab, y arranca otros procesos basados en el contenido de este fichero.
Uno de los procesos mas importantes arrancado desde inittab es el proceso /etc/getty,
arrancado en cada consola virtual. El proceso getty dispone la consola virtual
para ser utilizada y arranca un proceso login en ella. Esto le permite conectarse
a cada consola virtual; si /etc/inittab no contiene un proceso getty para una
consola virtual determinada, no se podrá conectar nadie a ella.
Otro proceso ejecutado desde /etc/inittab
es /etc/rc, el fichero de inicialización principal del sistema. Este
fichero es simplemente un fichero de comandos que ejecuta cualquier comando
de inicialización necesario en tiempo de arranque, como es montar los
sistemas de ficheros (véase sección 4.8) e inicializar el espacio
de intercambio (memoria virtual).
Su sistema puede ejecutar otros ficheros
de comandos de inicialización también, como puede ser /etc/rc.local.
/etc/rc.local contiene normalmente comandos de inicialización específicos
de su sistema, como puede ser el establecimiento del nombre del ordenador (véase
la siguiente sección).
rc.local puede ser arrancado desde /etc/rc
o directamente desde /etc/inittab.
4.10.2 Estableciendo
el nombre del ordenador
Anterior-
Siguiente - Índice
En un entorno de red el nombre del ordenador
es utilizado para identificar unívocamente una maquina particular, mientras
que en un entorno autónomo, el nombre del ordenador da a la maquina personalidad
y encanto. Es como darle nombre a un animal domestico: siempre puede dirigirse
a su perro como "El perro", pero es mucho mas interesante asignarle al perro
un nombre como "Mancha" o "Tes". Poner el nombre del sistema se limita a utilizar
el comando hostname. Si se esta en una red, su nombre debe ser el nombre completo
de su maquina, por ejemplo, goober.norelco.com. Si no se esta en una red de
ningún tipo, se pueden escoger nombre de ordenador y de dominio arbitrarios,
como por ejemplo loomer.vpizza.com, shoop.nowhere.edu, o floof.org.
Cuando se pone el nombre del ordenador,
dicho nombre debe aparecer en el fichero /etc/hosts, que asigna una dirección
IP a cada ordenador. Incluso si su ordenador no esta en una red, se debe incluir
el nombre del ordenador en /etc/hosts.
Por
ejemplo, si no se esta en una red TCP/IP, y el nombre del ordenador es floof.org,
incluya la línea siguiente en /etc/hosts:
127.0.0.1 floof.org localhost
Esto asigna el nombre del ordenador, floof.org,
a la dirección de bucle 127.0.0.1 (utilizada si no se esta en una red).
El alias localhost se asigna también a dicha dirección.
Si
se esta en una red TCP/IP, sin embargo, su dirección y nombre de ordenador
real deben aparecer en /etc/hosts. Por ejemplo, si su nombre de ordenador es
goober.norelco.com y su dirección IP es 128.253.154.32, añada
la siguiente línea a /etc/hosts:
128.253.154.32 goober.norelco.com
Si el nombre de su ordenador no aparece en /etc/hosts no será posible establecerlo. Para establecer el nombre de su ordenador, utilice el comando hostname. Por ejemplo, el comando
# hostname -S goober.norelco.com
pone el nombre del ordenador a goober.norelco.com. En muchos casos, el comando hostname se ejecuta en alguno de los ficheros de inicialización del sistema, como puede ser /etc/rc o /etc/rc.local. Edite estos ficheros y cambie el comando hostname existente para poner su propio nombre de ordenador; al rearrancar el sistema, el nombre del ordenador cambiara al nuevo valor.
4.11
Que Hacer En Una Emergencia
Anterior-
Siguiente - Índice
En algunas ocasiones, el administrador de sistemas
se encuentra con el problema de recuperarse de un desastre completo, como puede
ser el olvidarse la palabra clave del usuario raíz, o el enfrentarse
con sistemas de ficheros dañados. El mejor consejo es, obrar sin pánico.
Todo el mundo comete errores estúpidos, esta es la mejor forma de aprender
sobre administración de sistemas: la forma difícil.
Linux no es una versión inestable
de UNIX. De hecho, he tenido menos problemas con cuelgues de sistemas Linux
que con versiones comerciales de UNIX en muchas plataformas. Linux también
se beneficia de un fuerte complemento de asistentes que pueden ayudar a salir
del agujero.
El primer paso al investigar cualquier
problema es intentar arreglarlo uno mismo. Hurgue alrededor, vea como funcionan
las cosas. Demasiadas veces, un administrador de sistemas pondrá un mensaje
desesperado rogando ayuda antes de investigar el problema. Muchas de las veces,
encontrara que arreglar problemas por uno mismo es realmente muy fácil.
Este es el camino que debe seguir para convertirse en un gurú.
Hay pocos casos en los que sea necesario
reinstalar el sistema desde cero. Muchos nuevos usuarios borran accidentalmente
algún fichero esencial del sistema, e inmediatamente acuden a los discos
de instalación. Esta no es una buena idea. Antes de tomar medidas drásticas
como esa, investigar el problema y preguntar a otros ayudara a solucionar las
cosas. En prácticamente todos los casos, podrá recuperar el sistema
desde un disquete de mantenimiento.
4.11.1 Recuperación
utilizando un disquete de mantenimiento
Anterior-
Siguiente - Índice
Una herramienta indispensable para el administrador
de sistemas es el llamado "disco arranque/raíz" ("boot/root disk") _un
disquete desde el que se puede arrancar un sistema Linux completo, independiente
del disco duro. Los discos de arranque/raíz son realmente muy simples,
se crea un sistema de ficheros raíz en el disquete, se ponen todas las
utilidades necesarias en el y se instala LILO y un núcleo arrancable
en el disquete. Otra técnica es usar un disquete para el núcleo
y otro para el sistema de ficheros raíz. En cualquier caso, el resultado
es el mismo: Ejecutar un sistema Linux completamente desde disquete.
El ejemplo mas claro de un disco de arranque/raíz
son los discos de arranque Slackware5. Estos disquetes contienen un núcleo
arrancable y un sistema de ficheros raíz, todo en disquete. Están
diseñados para usarse en la instalación de la distribución
Slackware, pero vienen muy bien cuando hay que hacer mantenimiento del sistema.
El
disco de arranque/raíz de H.J Lu, disponible en /pub/Linux/GCC/rootdisk
en sunsite.unc.edu, es otro ejemplo de este tipo de discos de mantenimiento.
O, si se es ambicioso, se puede crear uno su propio disco. En muchos casos,
sin embargo, la utilización de un disco de arranque/raíz prefabricado
es mucho mas simple y probablemente será mas completo.
_____________________________________________
5 Véase la sección 2.1.1 para
la información sobre como obtener esta desde Internet. Para este procedimiento,
no se necesita obtener la versión completa de Slackware, solo los disquetes
de arranque y raíz.
La utilización de un disco de arranque/raíz es muy simple. Tan
solo arranque el sistema con el disco, y haga login como root (normalmente sin
password). Para poder acceder a los ficheros del disco duro, se necesitara montar
el sistema de ficheros a mano. Por ejemplo, el comando
# mount -t ext2 /dev/hda2 /mnt
montara un sistema de ficheros ext2fs existente en /dev/hda2 bajo /mnt. Recuerde que / es ahora el propio disco de arranque/raíz; se necesitara montar los sistemas de ficheros de su disco duro bajo algún directorio para poder acceder a los ficheros. Por lo tanto, el fichero /etc/passwd de su disco duro es ahora /mnt/etc/passwd si se monto el sistema de ficheros raíz bajo /mnt.
4.11.2 Arreglando la
password de root
Anterior-
Siguiente - Índice
Si se olvida de la password de root, no hay problema. Solo hay que arrancar del disco de arranque/raíz, montar su sistema de ficheros raíz en /mnt, y eliminar el campo de password de /root en /mnt/etc/passwd, como por ejemplo:
root::0:0:root:/:/bin/sh
Ahora root no tiene password; al rearrancar
desde el disco duro debería ser capaz de hacer login como root y poner
la password que desee utilizando passwd.
¿No le gusto el haber aprendido a utilizar
vi? En su disco de arranque/raíz probablemente no estarán disponibles
otros editores como pueda ser Emacs, pero vi debería estarlo.
4.11.3 Arreglando sistemas
de ficheros corrompidos
Anterior-
Siguiente - Índice
Si se corrompiese de alguna forma el sistema
de ficheros, se puede ejecutar e2fsck (si se usa el sistema de ficheros ext2fs,
por supuesto) para corregir desde disquete cualquier dato dañado en el
sistema de ficheros. Otros tipos de sistemas de ficheros utilizan diferentes
formas de comando fsck; véase la Sección 4.8 para mas detalles.
Cuando se comprueba el sistema de ficheros
desde disquete, es mejor que no este montado.
Una causa común de daño
en un sistema de ficheros es la corrupción del super bloque. El super
bloque es la "cabecera" del sistema de ficheros que contiene información
acerca del estado del sistema de ficheros, tamaño, bloques libres, y
demás. Si se corrompe el super bloque (por ejemplo, escribiendo accidentalmente
datos directamente a la partición del sistema de ficheros), el sistema
no puede reconocer nada del sistema de ficheros. Cualquier intento de montar
el sistema de ficheros fallara y e2fsck no será capaz de arreglar el
problema.
Felizmente, el tipo de sistema
de ficheros ext2fs salva copias del super bloque en los limites de "grupos de
bloques" en el disco _normalmente cada 8K bloques. Para poder decirle al e2fsck
que utilice una copia del super bloque, se puede utilizar un comando tal que
# e2fsck -b 8193 <partición>
donde <partición> es la partición en la que reside el sistema de ficheros. La opción -b 8193 le dice al e2fsck que utilice la copia del super bloque almacenada en el bloque 8193 del sistema de ficheros.
4.11.4 Recuperando ficheros
perdidos
Anterior-
Siguiente - Índice
Si accidentalmente se borrasen ficheros importantes
del sistema no habría forma de "desborrarlos".
Sin
embargo, se pueden copiar los ficheros relevantes desde el disquete al disco
duro. Por ejemplo, si se hubiese borrado /bin/login de su sistema (que le permite
hacer login), simplemente arranque del disquete de arranque/raíz, monte
el sistema de ficheros raíz en /mnt, y use el comando
# cp -a /bin/login /mnt/bin/login
La opción -a le dice a cp que conserve los permisos en los ficheros que se están copiando. Por supuesto, si los ficheros que se borraron no fueses ficheros esenciales del sistema que tengan contrapartidas en el disquete de arranque/raíz, se habrá acabado la suerte. Si se hicieron copias de seguridad, siempre se podrá recuperar de ellas.
4.11.5 Arreglando librerías
corrompidas
Anterior-
Siguiente - Índice
Si accidentalmente se llegasen a corromper las
librerías de enlaces simbólicos en /lib, es mas que seguro que
comandos que dependan de estas librerías no vuelvan a funcionar (Véase
la sección 4.7.2).
La solución
mas simple es arrancar del disquete de arranque/raíz, montar el sistema
de ficheros raíz y arreglar las librerías en /mnt/lib.