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