Вы находитесь на странице: 1из 61

FORMACIÓN

Linux
Sumario

1 Introducción______________________________________________________3

2 Nomenclatura de archivos y directorios ________________________________4

3 Estructura de directorios en Linux ____________________________________5

etc : Configuración del sistema local a la máquina. ______________________________ 6

La Jerarquía /var __________________________________________________________ 7

La jerarquía /usr __________________________________________________________ 8

dev Archivos de dispositivos. _________________________________________________ 8

home: Directorios hogar de los usuarios _______________________________________ 9

lib: Librerías compartidas y módulos de kernel _________________________________ 9

mnt: Punto montaje sistemas archivos temporales _______________________________ 9

proc: Información de procesos y del kernel. ___________________________________ 10

root: Directorio de usuario root (opcional) ____________________________________ 10

sbin: Binarios del Sistema __________________________________________________ 10

tmp: Archivos temporales __________________________________________________ 11

4 Metacaracteres ___________________________________________________12

5 Redirección entrada/salida _________________________________________15

6 Comandos básicos ________________________________________________16

7 Comandos para la Administración de FS _____________________________21

8 Comandos para la gestión de permisos________________________________23

9 Niveles de ejecución INIT __________________________________________26

10 Conexionas remotas ______________________________________________28

11 El editor vi ______________________________________________________30

12 Gestores de arranque ______________________________________________31

13 Configuración de red ______________________________________________37

-1- Bull (España) S.A


14 Administración de paquetes (RPM) __________________________________40

15 Dispositivos _____________________________________________________42

16 Controladores de dispositivos _______________________________________43

Cargar un módulo: modprobe, lsmod e insmod ________________________________ 43

etc/modules, /etc/conf.modules ______________________________________________ 44

17 Los discos y las particiones en Linux _________________________________45

18 Usuarios y grupos ________________________________________________47

19 Network File System ______________________________________________51

20 SWAP __________________________________________________________52

21 Sistema de LOGs _________________________________________________54

22 Tareas Programadas ______________________________________________56

23 Ficheros importantes ______________________________________________58

24 Entorno Gráfico _________________________________________________59

-2- Bull (España) S.A


1 Introducción

Historia
Los sistemas UNIX, de los que existen distintas variantes, nacieron en ambientes académicos y de
investigación, pensados para máquinas grandes que debían ser utilizadas por muchos usuarios. En
consecuencia, sus mecanismos de protección y cooperación entre grupos de trabajo están muy
desarrollados, y sus sistemas de ficheros (FS) cuidan especialmente los aspectos de propiedad y
privilegios sobre ficheros y directorios (quién puede hacer qué cosas sobre ellos). En consecuencia, los
ficheros y directorios tienen más atributos que en los sistemas FAT.

Linux se inspiró en Minix, un dialecto simplificado de UNIX, del que tomó su FS "tal cual" (sin
modificación). Sin embargo, el FS de este último adolecía de conocidas deficiencias. Principalmente
16
que su sistema de anotación de bloques es de 16 bits, lo que limita su capacidad a 2 = 65.536
bloques; que el número de entradas por directorio es fijo, y que el tamaño máximo para los nombres es
de 14 caracteres.

La popularización de Linux puso rápidamente en evidencia la necesidad de mejorar su FS. La


propuesta más afortunada fue el sistema extendido de ficheros Ext FS Extended File System, aparecido
en Abril de 1992 con el kernel 0.96c. Posteriormente fue sometido a una revisión en profundidad que
dio lugar en Enero de 1993 a la versión Alfa del Second Extended File System (Ext2 FS) que a la
presente (2006) se ha convertido en el sistema más utilizado en las distribuciones Linux y que ha sido
objeto de sucesivas revisiones. La última ha consistido en dotarlo de características "Journaling", y ha
dado lugar al Ext3 FS.

Características generales
En los FS UNIX, los metadatos están contenidos en estructuras denominadas inodes, y al igual que en
los sistemas FAT, los directorios son ficheros cuyos datos contienen información sobre otros ficheros.
Una característica distintiva es que cada fichero pertenece a un usuario y a un grupo propietario Otra
característica distintiva es que los dispositivos de E/S están representados por ciertos ficheros
especiales (pseudo-ficheros). De forma que las operaciones de E/S con los periféricos se virtualizan
como operaciones de lectura/escritura en estos ficheros.

Existen cuatro tipos de ficheros: los regulares o normales (que responden al concepto tradicional de
contenedor de datos de usuario); directorios (con información sobre otros ficheros); ficheros de
dispositivo ("Device files") y enlaces simbólicos ("Symbolic links"). Estos últimos no tienen contrapunto
en los sistemas MS-DOS, aunque si en Windows y siguientes; son los denominados accesos directos.

-3- Bull (España) S.A


2 Nomenclatura de
archivos y directorios

La sucesión de directorios atravesados hasta alcanzar un nombre de archivo se denomina ruta o vía
(path). Ejemplo: /home/alberto/documentos/carta01.txt.

Una ruta es absoluta cuando arranca del directorio raíz: /bin/elvis. El directorio donde está trabajando un
usuario en el momento se denomina directorio actual. Una ruta es relativa cuando arranca del directorio
actual: documentos/carta01.txt.

No existen limitaciones para dar nombre a los archivos, salvo no usar el carácter / o caracteres nulos.
Para usar espacios en blanco, los nombres deben encerrarse entre comillas, ya que el espacio en
blanco actúa como separador en los comandos.

touch "nuevo archivo"

crea un archivo del nombre indicado, con un espacio en blanco entre las dos palabras. Para realizar
cualquier operación sobre este archivo será necesario usar las comillas, o escapar el carácter en blanco
usando \:

rm "nuevo archivo"

rm nuevo\ archivo

Ambos comandos borran el archivo.

Ejemplos:
Supongamos que tenemos un archivo cuyo nombre es listado en el directorio /home/pepe.
Queremos ver en pantalla el contenido de dicho archivo utilizando la orden cat.
Si utilizamos el modo absoluto, teclearemos:
cat /home/pepe/listado

En cambio, si queremos utilizar el modo relativo:

Estando en / teclearíamos: cat home/pepe/listado


Estando en /home teclearíamos: cat pepe/listado
Estando en /home/pepe teclearíamos: cat listado
Estando en /etc teclearíamos: cat ../home/pepe/listado

-4- Bull (España) S.A


3 Estructura de
directorios en Linux

Directorios principales
/ Es el directorio raíz, de él cuelgan todos los sistemas de archivos locales,
remotos, CD-Roms, etc.
/boot Archivos estáticos arranque del sistema (boot loader)
/etc Contiene los archivos de configuración del sistema.
/usr Mandatos, programas, librerías y datos que el usuario habitualmente no
modifica o que son de uso compartido.
/var Se almacenan datos variables.
/dev Archivos de definición de dispositivos.
/home Directorios para los archivos de cada usuario.
/mnt Punto de montaje de sistemas de ficheros temporales
/tmp Ficheros Temporales.

-5- Bull (España) S.A


Directorio raiz “/”

bin Binarios de comandos esenciales


boot Archivos estáticos de cargador de arranque(boot-loader)
bev Archivos de dispositivos
etc Configuración del sistema local-máquina
home Directorios home de los usuarios
lib Librerías compartidas
mnt Punto de montaje de particiones temporales
root Directorio hogar del usuario root
sbin Binarios del sistema esenciales
tmp Archivos temporales
usr Segunda jerarquía mayor
var Información variable

Cada directorio listado será discutido en detalle en una subsección separada más delante. /usr y /var,
cada uno tiene en su propia sección en este documento.

El kernel de Linux estaría localizado en, ya sea / ó en /boot. Si está localizado en / recomendamos usar
el nombre VMLINUX o VMLINUZ, nombres que han sido usados en paquetes fuentes del kernel de
Linux recientes. Más información de la localización del kernel se puede encontrar en la sección acerca
de / más delante.

/boot: Archivos estáticos del cargador de arranque


Este directorio contiene todo para arrancar excepto los archivos de configuración. En su sentido más
sencillo /boot es para cualquier cosa que se utiliza antes de que el kernel ejecute /sbin/init. Ésto incluye
sectores maestros de arranque (master boot sectors) guardados, archivos de mapeo de sectores y
cualquier otra cosa que no es editada directamente a mano. Los programas necesarios para hacer que
el cargador de arranque sea capaz de arrancar un archivo (tal como el instalador de mapas lilo) estarán
localizados en /sbin. Los archivos de configuración para cargadores de arranque podrían estar
localizados en /etc.
Como se expuso arriba, el kernel de Linux puede estar localizado en / ó en /boot

/etc : Configuración del sistema local a la máquina.

etc contiene archivos y directorios que son locales al sistema actual.

Ningún binario debe ir directamente dentro de /etc. Los binarios que en el pasado se encontraban en
/etc, irán en /sbin ó /usr/sbin. Ésto incluye archivos tales como init, getty y update. Los binarios tales
como hostname que son utilizados por usuarios ordinarios y por root no irían en /sbin sino en /bin.

/etc --- Configuracion de sistemas locales de máquina.

X11 Archivos deconfiguracion para el x11


skel Esqueletos de configuracion de usuarios

-6- Bull (España) S.A


/etc/skel es la localidad para los llamados archivos esqueletos de usuarios, que le son dados por
defecto cuando un nuevo usuario recibe una cuenta, este directorio puede contener subdirectorios para
diferentes grupos de usuarios (ej: /etc/skell/apoyo, /etc/skell/usuarios).

/etc/X11 es el lugar recomendado para todos los archivos de configuración de X11 locales a la máquina.
Este directorio es necesario para permitir el control local si /usr se monta sólo-lectura. Los archivos que
deben ir en este directorio incluyen Xconfig (y/o XF86Config) y Xmodmap.

Los subdirectorios de /etc/X11 pueden incluir aquellos para xdm y para cualquier otro programa (como
algunos gestores de ventanas por ejemplo) que lo necesiten. Recomendamos que los gestores de
ventanas con un solo archivo de configuración que es un archivo .*wmrc por defecto, que lo llamen
system.*wmrc (a menos que exista una alternativa ampliamente aceptada) y que no utilice un
subdirectorio. Cualquier subdirectorio de un gestor de ventanas se llamaría idéntico al binario del gestor
de ventanas.

La Jerarquía /var
/var Información variable

adm Info administrativa del sistema (obsoleto).


catman Páginas del manual formateadas localmente
lib Información del estado de aplicaciones
local Información variable del software de /usr/local
lock Archivos de bloqueo
log Archivos de bitácora
named Archivos DNS, sólo red
nis Archivos base de datos NIS
preserve Archivos almacenados después de una falla de ex ó vi
run Archivos relevantes a procesos ejecutándose
spool Directorios de trabajos para realizarse después
tmp Archivos temporales, para mantener /tmp pequeño

/var contiene archivos con información variable. Esto incluye archivos y directorios con información
administrativa, archivos temporales y transitorios.

Algunas porciones de /var son no-compartibles entre diferentes sistemas. Por ejemplo, /var/log,
/var/lock y /var/run. Otras porciones son compartibles, notablemente /var/spool/mail y /var/spool/news.

/var se especifica aquí para hacer posible el montar /usr sólo-lectura. /Todo aquello que alguna vez fué
en /usr que es escrito durante la operación normal del sistema (pero no durante la instalación y el
mantenimiento del software) debe ir en /var.

Si /var no puede ser una participación separada, es preferible mover /var fuera de la participación raíz
pero dentro de la partición /usr (esto se hace algunas veces para reducir el tamaño de la partición raíz o
cuando hay poco espacio en la partición raíz). Como sea, /var no debe ser enlazada a /usr, porque hace
que la separación entre /usr y /var sea más difícil y seguramente creará un conflicto de nombres, en vez
de eso usar enlace /var a / usr/var.

-7- Bull (España) S.A


La jerarquía /usr

/usr es la segunda mayor sección del sistema de archivos. /usr es información compartible, de sólo-
lectura, esto significa que /usr, debe ser /compartible entre varias máquinas que corren Linux y no se
debe /escribir. Cualquier información que es local a una máquina o varía con el /tiempo, se almacena en
otro lugar.

Los siguientes enlaces simbólicos a directorios pueden estar presentes. Esta posibilidad se basa en la
necesidad de preservar la compatibilidad con sistemas anteriores hasta que en todas las
implementaciones se pueda asumir el uso de la jerarquía /var.

/usr/adm ------------------> /var/adm


/usr/preserve -------------> /var/preserve
/usr/spool ----------------> /var/spool
/usr/tmp ------------------> /var/tmp
/usr/spool/locks ----------> /var/lock

/usr --- Segundo mayor punto de montaje (permanente)

X11R6 Sistema X Window Versión 11 release 6


X386 Sistema X Windows Versión 11 release 5 en plataformas X 86
bin La mayoría de los comandos de usuario
dict Listas de palabras
doc Documentación miscelánea
etc Configuración del Sistema (todo el site)
games Juegos y binarios educacionales
include Archivos header incluidos por programas C
info Directorio primario del sistema GNU Info
lib Librerías
local Jerarquía local (vacía justo después de la instalación
principal)
man Manuales en línea
sbir Binarios de Administración del Sistema No-Vitales
share Información independiente de la arquitectura
src Código fuente

/dev Archivos de dispositivos.

Éste es el directorio de los dispositivos. Contendría un archivo por cada dispositivo que el kernel de
Linux puede soportar.

dev también contiene un script llamado MAKEDEV el cual puede crear /dispositivos cuando se
necesiten. Puede contener un MAKEDEV local para /dispositivos sólo-local.

MAKEDEV debe hacer previsión para crear cualquier archivo de dispositivo especial listado en la lista
de números mayores/menores, no sólo aquellos de una distribución particular.

Los enlaces simbólicos no se deben distribuir en sistemas Linux, sino sólo como se preveé en la lista
de dispositivos de Linux. Esto es porque las instalaciones locales seguro diferirán de aquellas de la
máquina del desarrollador. Además si un script de instalación configura enlaces simbólicos en la
instalación, estos enlaces seguramente no se actualizarán si se hacen cambios locales en el hardware.

-8- Bull (España) S.A


/home: Directorios hogar de los usuarios

/home es un concepto algo estándar, pero es claramente un sistema de archivos específico de un site.
El arreglo diferirá de máquina a máquina. Esta sección describe una localización sugerida para los
directorios hogar (home) de los usuarios, aun así, recomendamos que todas las distribuciones Linux
usen este lugar como la localización por defecto de los directorios de usuarios.

En sistemas pequeños, cada directorio de usuario es uno de los subdirectorios debajo de /home, p.ej.
/home/smith, /home/torvalds, /home/operador, etc.

En sistemas grandes (especialmente cuando los directorios /home son compartidos entre varias
máquinas usando NFS) es útil subdividir los directorios de usuario. La subdivisión puede ser llevada a
cabo utilizando subdirectorios tales como /home/apoyo, /home/huéspedes, /home/estudiantes, etc.

Muchas personas prefieren poner las cuentas de los usuarios en una variedad de lugares. Por tanto,
ningún programa deberá confiar en esta localización. Si usted desea encontrar el directorio hogar de
cualquier usuario, debería usar la función de librería getpwent(3) en vez de contar con /etc/passwd, por
que la información puede estar almacenada remotamente usando usando sistemas como NIS.

/lib: Librerías compartidas y módulos de kernel

El directorio /lib contiene aquellas imágenes de las librerías compartidas que se necesitan para arrancar
el sistema y ejecutar los comandos en el sistema de archivos raíz.

/lib --- librerías compartidas y módulos de kernel esenciales. Modulos de kernel cargables.

Esto incluye /lib/libc.so.*, /lib/libm.so.*, el enlazador dinámico compartido /lib/ld.so.*, y otras librerías
compartidas requeridas por binarios en /bin y /sbin.

Las librerías que son necesitadas sólo por los binarios en /usr (como cualquier binario de X Window) no
pertenecen a /lib. Sólo las librerías compartidas requeridas para ejecutar los binarios dentro de /bin y
/sbin deben estar aquí. La librería libm.so.* podría estar localizada en /usr/lib si no es requerida por
nada en /bin ó /sbin.

Por razones de compatibilidad, /lib/cpp necesita existir como una referencia al pre-procesador C
instalado en el sistema. La localización usual del binario es /usr/lib/gcc-lib/<target>/<version>/cpp.
Puede existir un enlace/lib/cpp apuntando a este binario o a cualquier otra referencia a este binario que
exista en el sistema de archivos. (Por ejemplo, /usr/bin/cpp se usa frecuentemente).

La especificación para /lib/modules está aún por aparecer.

/mnt: Punto montaje sistemas archivos temporales

Este directorio se ha provisto para que el administrador pueda montar temporalmente sistemas de
archivos cuando lo necesite. El contenido de este directorio es un asunto local y no debe afectar la
manera en la cual se ejecuta ningún programa.

Recomendamos la no utilización de este directorio por programas de instalación, y sugerimos utilizar un


directorio temporal adecuado que no este en uso por el sistema.

-9- Bull (España) S.A


/proc: Información de procesos y del kernel.

El sistema de archivos /proc se está convirtiendo en el estándar de facto para el manejo de información
de procesos y de sistema en vez de /dev/kmem y otros métodos similares. Recomendamos
fuertemente esto para el almacenamiento y obtención de información de procesos asi como otra
información del kernel y de memoria.

/root: Directorio de usuario root (opcional)

El directorio / es tradicionalmente el directorio home del usuario root en los sistemas UNIX. /root se usa
en muchos sistemas Linux y en algunos sistemas UNIX. El directorio hogar de la cuenta de el usuario
root puede ser determinada por el desarrollador o por preferencias locales. Las posibilidades obvias
incluyen /, /root, y /home/root.

Si el directorio hogar de root no está almacenado en la partición raíz, será necesario asegurarse que
tome / por defecto si no puede ser localizado.

/sbin: Binarios del Sistema

Los útiles (programas) usados por la administración del sistema (y otros comandos que sólo root utiliza)
están almacenados en /sbin, /usr/sbin, y /usr/local/sbin. /sbin típicamente contiene binarios esenciales
para arrancar el sistema además de los binarios en /bin. Cualquier cosa que se ejecuta después de que
se sabe que /usr se ha montado (cuando no hay problemas) debería estar en /usr/sbin. Los binarios de
administración de sistema sólo-locales deben estar localizados en /usr/local/sbin.

Decidir que cosa va en los directorios de /sbin es sencillo: Si un usuario necesitará ejecutarlo, debe de ir
en otro lado. Si sólo será ejecutado por el administrador del sistema o por root como scripts de
administración, entonces debe ir en /sbin (o en /usr/sbin o en /usr/local/sbin, si el archivo no es vital para
la operación del sistema).

Archivos que los usuarios usan sólo ocasionalmente deben aun estar en /usr/bin. Ej. ping aunque es
absolutamente necesario para el root (recuperación de la red y diagnóstico) es tambien frecuentemente
usado por los usuarios y por esa razón debe ir en /bin.

Los usuarios ordinarios no tendrán que poner ninguno de los directorios sbin en su búsqueda (path).

Recomendamos que los usuarios tengan permisos de lectura y ejecución en todo lo que se encuentra
en /sbin excepto tal vez ciertos programas; setuid y setgid. La división entre /sbin y /bin no fue creada
por motivos de seguridad o para evitar que los usuarios vieran el sistema operativo, sino para proveer
una buena partición entre binarios que todos usan y los que se usan, principalmente las tareas de
administración. No hay ganancia inherente en seguridad en hacer que /sbin este fuera del alcance de
los usuarios.

- 10 - Bull (España) S.A


/tmp: Archivos temporales

tmp se utiliza para archivos temporales, preferentemente en un dispositivo rápido (un sistema de
archivos basado en memoria por ejemplo)

La "persistencia" de la información que es almacenada en /tmp es diferente de aquella que sea


almacenada en /var/tmp. /tmp puede ser limpiada en cada arranque o a intervalos relativamente
frecuentes. Por tanto, no se debe esperar que la información almacenada en /tmp permanezca por
algún periodo largo de tiempo.

Los programas deben utilizar /tmp ó /var/tmp (que era originalmente /usr/tmp) de acuerdo a los
requerimientos esperados de la información, pero no deben confiar en alguna persistencia temporal
particular en cualquier directorio de almacenamiento temporal.

Los administradores de sistemas pueden elegir enlazar /tmp a algún otro directorio, tal como /var/tmp;
esto es útil, por ejemplo, para conservar espacio en la partición raíz. Si esto se lleva a cabo, entonces la
persistencia de archivos en /var/tmp debe ser al menos tan larga como la de /tmp.

/tmp puede estar en la memoria RAM. /var/tmp no debe nunca localizarse en algún dispositivo RAM.

- 11 - Bull (España) S.A


4 Metacaracteres

Además de ejecutar los comandos que nosotros le indicamos, el shell interpreta ciertos caracteres
especiales, a estos caracteres los llamamos metacaracteres.

Cuando nosotros utilizamos algún metacaracter, los comandos no lo reciben, sino que el shell lo
reemplaza por lo que corresponda, y le pasa al comando ejecutado el resultado de ese reemplazo.

Eso es lo que entendemos por interpretar: reemplazar el caracter por otro caracter o por una cadena de
caracteres, según corresponda.

Metacaracteres relacionados con archivos

*
Cuando el shell encuentra un *, lo reemplaza por una lista de los archivos que concuerdan con
la expresión indicada.
Por ejemplo: echo * nos mostrará todos los archivos del directorio. echo a* nos mostrará
todos los archivos del directorio que comiencen con a. echo *o nos mostrará todos los
archivos que terminen con o. echo /usr/local/* nos mostrará todos los archivos que estén
en ese directorio.

En el caso de que no hubiera ningún archivo que concuerde con la expresión, generalmente,
nos mostrará la expresión que hayamos escrito.
?
Al encontrar un ? el shell lo reemplaza por cualquier otro caracter. Es decir que la expresión
que escribamos se reemplazará por todos los archivos que en esa posición tengan cualquier
caracter, y en el resto de la cadena tengan lo que hemos escrito.
Por ejemplo: echo ?ola nos podría mostrar archivos como hola, sola, Pola. echo a??a,
podría mostrar alla, arca, asia.

Al igual que con el *, si ningún archivo concuerda con el patrón, generalmente, nos muestra la
misma expresión que hemos escrito.
[]
Encerrados por los corchetes, podemos escribir un rango de caracteres con los cuales
queremos que el shell concuerde.
Por ejemplo, ls [af]* nos mostrará todos los archivos que comienzan con a o con f.

Podemos además especificar un rango de caracteres, con un guión en el medio. Por ejemplo,
a-z (letras minúsculas), 0-9 (números), etc. y combinarlos con caracteres individuales siempre
que no sea ambigua la interpretación. (Considerar la concordancia con el caracter -).

Por ejemplo, podemos querer sólo los archivos que comienzan con números seguidos de un -,
en ese caso escribiríamos ls [0-9]-*} o ls [0-9][0-9]-*, si comienzan con dos
números seguidos de un -.

- 12 - Bull (España) S.A


[]
Cuando al comienzo de la cadena que está encerrada por los corchetes encontramos el
caracter ^, estamos indicando que debe concordar los caracteres que no se encuentran en el
rango.
Por ejemplo, ls [^0-9]*, nos listará todos los archivos que no comiencen con un número.

Metacaracteres relacionados con comandos

Ejecutar un comando es tan sencillo como escribir el comando y apretar ENTER. Sin embargo,
utilizando algunos de los metacaracteres de shell podemos combinar los comandos entre sí, y lograr
resultados mucho más importantes.

;
El ; es un separador de comandos, nos permite ejecutar un comando a continuación de otro,
equivalente a lo que sucedería si ejecutáramos primero uno, y al terminar ejecutáramos el
siguiente.
Es decir si escribimos ls; echo Hola veremos la salida del echo a continuación de la del
ls.
()
Los paréntesis sirven para encerrar grupos de comandos, y tratarlos como si fueran uno solo.
&
El & manda el comando a background, esto quiere decir, que nos devuelve la línea de
comandos inmediatamente después de apretar Enter, mientras el comando sigue ejecutándose
en segundo plano.
La ejecución de tareas en segundo plano ya se ha estudiado anteriormente, cuando se vieron
los comandos relacionados con procesos. Este metacaracter funciona de manera equivalente, y
sus resultados pueden corroborarse utilizando el comando jobs.

Para ver un ejemplo, vamos a usar un nuevo comando, sleep, (un comando simple que
espera una determinada cantidad de segundos). Por ejemplo sleep 5, espera 5 segundos
antes de devolvernos la línea de comandos.

Ahora, utilizando &: (sleep 20; echo Hola) &. Al escribirlo nos mostrará el PID del
comando que estamos ejecutando, y nos devolverá el shell; 20 segundos después, veremos
aparecer "Hola" en nuestra línea de comandos.

Antes de que termine de ejecutarse, podemos ejecutar jobs y observar que el proceso se está
ejecutando, o bien ps y observar que el comando en ejecución es sleep.

Ejercicio: hacer un comando equivalente que nos avise que ya pasaron los cinco minutos
necesarios para que hierva una pava de agua.

Además, el & nos puede servir para separar comandos: cada vez que lo utilizamos para separar
comandos, mandará al comando que esté a su izquierda a background.

- 13 - Bull (España) S.A


Otros metacaracteres

'...'
Al encontrar una cadena encerrada entre ' ', el shell tomará el contenido de la cadena
literalmente, es decir, sin interpretar los metacaracteres contenidos en ella.
Por ejemplo, echo '* ?* [A-Z-]*' nos mostrará * ?* [A-Z-]*.

Notar que si no cerramos las comillas y apretamos ENTER, el shell nos mostrará una línea en
blanco esperando que sigamos ingresando nuestro comando, hasta que cerremos las comillas.

Utilizamos una \ para escapar el siguiente caracter. Escapar significa que el shell no lo
interpretará como un metacaracter.
Por ejemplo echo \* nos mostrará un *.
#
El # es el señalador de comentario. Si el shell encuentra un # al comienzo de una palabra,
descartará todos los caracteres hasta en final de línea. Por ejemplo, echo 3.1416 # Pi con
un error de 0.0001 nos mostrará únicamente 3.1416.

- 14 - Bull (España) S.A


5 Redirección
entrada/salida

Redirección de entrada y salida UNIX tiene un extenso manejo de entrada y salida, es una de las
características principales que nos permite combinar pequeñas herramientas para lograr resultados
más complejos.

La mayoría de los comandos UNIX que nosotros utilizamos tienen una entrada estándar, una salida
estándar y una salida para errores estándar. Las denominamos stdin, stdout y stderr respectivamente.
La entrada estándar por omisión es el teclado, mientras que la salida estándar y la salida de errores
son, por omisión, la pantalla.

Un comando genérico, lee datos de la entrada estándar, los procesa de alguna manera, y luego emite el
resultado por la salida estándar. En el caso de que durante el proceso hubiera algún error, emitirá una
aviso de ese error por la salida de errores.

El Shell se encarga de relacionar estos tres, lo cual no impide que un determinado programa maneje su
entrada y su salida de una manera diferente.

El caracter > nos permite direccionar la salida estándar de un comando a un archivo. De


manera que ps ax > procesos guardará en el archivo procesos la salida del ps.

El caracter < nos permite direccionar la entrada estándar de un comando desde un archivo. Por
ejemplo, el comando mail nos sirve para mandar mensajes a otros usuarios, si escribimos
mail user < archivo mandará un mensaje con el contenido del archivo al usuario user.

Usar un >> en lugar de un > nos permite direccionar la salida estándar a un archivo, sin
sobreescribirlo, sino que le agrega los datos que nosotros queramos al final. Si ahora hacemos
ps ax >> procesos tendremos el listado de procesos dos veces en un mismo archivo.

2
Utilizar 2> nos permite redirigir la salida de errores a un archivo. Por ejemplo, si ejecutamos ls
archivo-feo 2> test, el error del ls, indicándonos que el archivo-feo no existe se
almacenará en test.

Para relacionar la salida estándar de un comando, con la entrada estándar de otro comando,
utilizamos el caracter |. Por ejemplo, podemos relacionar la salida de ls con la entrada de wc.
Haciendo ls | wc, la salida d este comando será la cantidad de líneas, palabras y caracteres.
Este comando recibe el nombre de pipe, que en inglés significa cañería o tubería. Es decir que
es un comando que entuba la salida de un comando con la entrada de otro.

- 15 - Bull (España) S.A


6 Comandos básicos

ls

Lista el contenido de un directorio. Si lo ejecutamos sin parámetros nos listará el contenido del
directorio en que nos encontremos. Si lo ejecutamos pasándole como parámetro la ruta (relativa o
absoluta) de otro directorio nos listará ese otro.

Modificadores:
-l Listado detallado
-al Listado detallado y mostrando archivos ocultos (los archivos ocultos en UNIX son todos
aquellos cuyo nombre empiece por un punto (.)

Ejemplos:
Si estamos en /home/pepe:

ls lista el contenido de /home/pepe


ls .. lista el contenido del directorio anterior, en este caso /home
ls /home lo mismo que el caso anterior
ls /etc lista el contenido de /etc
ls -al lista el contenido de /home/pepe con detalles y archivos ocultos

cd

Cambia de directorio. Si lo ejecutamos sin ningún parámetro nos lleva a nuestro directorio
home. Si como parámetro le damos el nombre de un directorio nos lleva hasta ese directorio.

Ejemplos:
Si estamos en /home/pepe:

cd nos lleva a nuestro home, sea el que sea.


cd .. nos lleva al directorio anterior, en este caso /home

pwd

Muestra en pantalla el directorio de trabajo actual. Es una orden muy útil sobre todo cuando
vamos a hacer alguna operación delicada. Está bien, por ejemplo, antes de eliminar todos los archivos
del directorio actual, asegurarse de cuál es ese directorio.

- 16 - Bull (España) S.A


mkdir

Crea un directorio. Le pasamos como parámetro el nombre del directorio que queremos crear.

Ejemplos:
Si estamos en /home/pepe:

mkdir tmp crea un directorio llamado tmp en /home/pepe


mkdir ../tmp crea un directorio llamado tmp en /home
mkdir /tmp crea un directorio llamado tmp en /

rmdir

Elimina un directorio. Para poder eliminar un directorio con esta orden es necesario que el
directorio esté vacío.

Ejemplos:
Estando en /home/pepe:

rmdir tmp elimina el directorio /home/pepe/tmp


rmdir ../tmp elimina el directorio /home/tmp
rmdir /tmp elimina el directorio /tmp

cp origen destino

Copia uno o más archivos. Se pueden copiar de un directorio a otro, cambiarles el nombre y
copiarlos sobre el mismo directorio, etc.

Ejemplos:
cp /etc/passwd /home/pepe
Copia el archivo /etc/passwd en el directorio /home/pepe con nombre passwd.

cp /etc/passwd /home/pepe/p
Copia el archivo /etc/passwd en el directorio /home/pepe con nombre p.

cp * /home/pepe
Copia todos los archivos del directorio actual en /home/pepe.

cp /home/pepe/* .
Copia todos los archivos de /home/pepe en nuestro directorio actual.

mv origen destino

El funcionamiento es el mismo que para el comando cp con la diferencia que en vez de copiar
los archivos, se mueven. A no ser que se esté muy seguro de la orden es totalmente correcta es mejor
optar siempre por copiar los archivos con cp y después eliminarlos con rm.

- 17 - Bull (España) S.A


rm

Elimina uno o más archivos. Esta orden no tiene vuelta atrás así que es conveniente
asegurarse de cuál va a ser el resultado de la operación antes de usarla.

Modificadores:
-i Solicita confirmación antes de eliminar cada archivo.

Ejemplos:
rm –i * Elimina todos los archivos del directorio actual con
confirmación.
rm .* Elimina todos los archivos ocultos del directorio actual.
y todos los no ocultos del directorio anterior.
rm *.model Elimina todos los archivos .model del directorio actual.
rm /home/pepe/* Elimina todos los archivos del directorio /home/pepe.

ln -s archivo link

Crea un link de un archivo o directorio. Lo que hace esta orden es crear un archivo o directorio
virtual que en realidad apunta a donde el archivo o directorio real esta almacenado. De este modo
podemos, por ejemplo, hacer que se acceda a un mismo archivo o directorio desde varios lugares del
sistema.

Modificadores:
-s El tipo de link que utilizamos necesita el parámetro –s para ser creado (soft)

Ejemplos:
ln -s /DBCATIA/ENV/PRJ01.env PRJ01
Crea un link en el directorio actual hacia el archivo /DBCATIA/ENV/PRJ01.env

ln -s /disco2/DBCATIA /DBCATIA
Crea un link en /DBCATIA que apunta al directorio /disco2/DBCATIA

tar

El programa tar es un empaquetador/desempaquetador de archivos, es decir, que junta varios


archivos en uno solo. No comprime, solo los empaqueta.

Modificadores:
-cvf Este modificador indica que lo que queremos es empaquetar archivos.
-xvf Este modificador indica que queremos hacer la operación contraria.
-tvf Este modificador nos permite comprobar el contenido de un paquete sin
desempaquetarlo.

Ejemplos:
tar -cvf /tmp/paquete.tar *
Empaqueta todos los archivos y directorios del directorio actual en /tmp/paquete.tar

tar -cvf /tmp/paquete.tar *.model

- 18 - Bull (España) S.A


Empaqueta todos los *.model del directorio actual en /tmp/paquete.tar

tar -xvf /tmp/paquete.tar


Desempaqueta el archivo paquete.tar en el directorio actual.

tar -tvf /tmp/paquete.tar


Muestra en pantalla el contenido del archivo paquete.tar.

su - usuario

Cambia de usuario. Si el usuario en que queremos convertirnos (pepe por ejemplo) tiene
password, el sistema nos lo solicitará.

Ejemplos:

su - pepe Nos convertimos en el usuario pepe


su Al no especificar usuario nos convertimos en root

ps

Muestra por pantalla los procesos que se están ejecutando en ese momento.

Los procesos en Unix se caracterízan por:


• pid: número identificador de proceso (único)
• ppid: nº de identificador del proceso padre
• user: dueño del proceso

Modificadores:
-ef Nos muestra los procesos de todos los usuarios y no solo los de nuestro usuario.

Ejemplos:
La salida típica de este comando en pantalla es la siguiente:

#ps -ef
UID PID PPID CPU STIME TTY TIME CMD
juperez 17882 5458 0 10:19:25 - 0:00 /bin/bsh /bin/bsh /bin/bsh
juperez 18584 1 0 Jul 18 - 0:02 dtfile
root 19978 7224 0 15:21:45 - 0:00 telnetd -a
root 21264 7224 0 17:03:44 - 0:00 telnetd -a
juperez 21730 18584 0 15:18:55 ? 0:00 dtterm -e /usr/dt/bin/dtexec
juperez 24068 24794 0 15:18:05 - 0:01 /usr/dt/bin/dtterm

El primer campo nos muestra el usuario al que pertenece cada proceso.


El segundo campo es el número de proceso y nos servirá cuando queramos matar un proceso
que se haya quedado colgado o que esté dando problemas.

- 19 - Bull (España) S.A


kill

Lo usaremos siempre con el parámetro -9 y nos servirá para matar procesos que se hayan
quedado colgados. Para ello primero averiguamos el número de proceso que queremos matar
utilizando el comando ps y a continuación lo matamos haciendo kill -9 #proceso.

Ejemplos:
kill -9 18584 Con esta línea mataríamos el proceso dtfile de la lista anterior.

more (cat, less, head, tail)

Muestra pantalla a pantalla el contenido de un archivo. Si pulsamos la barra espaciadora,


avanza una pantalla; con intro, una línea y pulsando la q salimos del visualizador.

Ejemplo:
more /var/ifor/nodelock Muestra en pantalla el contenido del archivo

date

Muestra o cambia la fecha y hora del sistema. Para cambiarla es necesario ser root.

Modificadores:
MMddhhmmAA M=mes, d=dia, h=hora, m=minuto, A=año

Ejemplos:
date Muestra la fecha y la hora en pantalla.
date 0125150000 Pone la fecha a 25 de enero de 2000 a las 15:00 horas.

Comandos para búsqueda de archivos


● find (busca ficheros en directorios)
● locate (busca patrones en bases de datos)
● whereis (busca el binario, el fuente y la página de ayuda de un fichero)
● which (busca comandos en el PATH)

- 20 - Bull (España) S.A


7 Comandos para la
Administración de FS

Montaje.

Un sistema de archivos contiene un directorio principal, subdirectorios y archivos


soportados en un área de disco. Pueden adjuntarse otros sistemas de archivos al
árbol de directorios principal aplicando sobre un directorio del árbol principal el
directorio superior del sistema de archivos que se adjunta. El punto del árbol principal
donde se "cuelga" el sistema de archivos adjuntado se llama punto de montaje. Este
artificio permite disponer de un árbol único de directorios formado por partes en
distintos soportes locales o remotos. El comando mount habilita la operación de
"colgar" un sistema de archivos a un directorio del árbol principal.

#df -k

Nos muestra todos los sistemas de archivos que hay montados y información sobre ellos. La
salida típica de este comando en una máquina IBM de producto es la siguiente:

root@ITW:/> df -k
Sist_archivos Bloq-1024 Libre %Uso Ius %Ius Montado en
/dev/hd4 49152 36720 26% 1990 9% /
/dev/hd2 1425408 403516 72% 34421 10% /usr
/dev/hd9var 16384 14180 14% 551 14% /var
/dev/hd3 32768 29936 9% 66 1% /tmp
/dev/hd1 16384 7908 52% 62 2% /home
/dev/PEPE 131072 14420 89% 2329 8% /home/pepe
srvprod:/DBCATIA 512000 402304 22% 2659 3% /DBCATIA
ctbar1:/F/PRODUCTE2 4095980 2742504 34% 0 0% /PRODUCTE2

La primera columna nos indica el nombre del sistema de archivos y en el caso de que sea
remoto (/DBCATIA y /PRODUCTE2) nos indica la máquina en la que se encuentra físicamente
almacenado (srvprod y ctbar1).
La segunda columna nos indica el tamaño del sistema en Kbytes y la tercera cuántos de esos
Kbytes están libres.
La cuarta columna nos indica el porcentaje de utilización del FS.
La última columna nos indica el punto de montaje de dicho sistema de ficheros.

#mount /dev/sda0 /usuarios

coloca el sistema de archivos almacenado en el disco /dev/sda0 bajo el directorio /usuarios; para ver el
contenido del sistema de archivos en disco, en lo sucesivo se hará ls /usuarios.

Un sistema de archivos se desvincula del árbol principal con el comando umount.

- 21 - Bull (España) S.A


#umount /usuarios

desmonta el sistema de archivos anterior del directorio /usuarios, impidiendo el acceso a los archivos
contenidos en el disco. Para poder ejecutar umount no debe haber archivos abiertos, ni usuarios en
directorios de la rama a desmontar, ni procesos corriendo cuyos ejecutables residan en él.

En la extensión semántica ya indicada, el término sistema de archivos se emplea así para designar la
totalidad del árbol de directorios, formado en realidad por partes de diferente organización lógica y
naturaleza física.

La lista de archivos montados en un sistema UNIX figura en el archivo /etc/fstab, /etc/vfstab o


/etc/checklist según la variedad de UNIX.

#fsck -p

verifica la integridad de todos los sistemas de archivos según figuran en /etc/fstab (o su equivalente);

#mount -a

monta todos los sistemas de archivos en /etc/fstab (o su equivalente).

Si el intento de desmontar un sistema de archivos fracasa por encontrarse éste ocupado, el comando
fuser indicará los números de proceso y los nombres de usuario que lo ocupan.

Utilidades para manejo de sistemas de ficheros EXT2/3


Linux dispone de varias utilidades para el manejo de los sistemas de ficheros ext2 (consulte los
manuales correspondientes para una explicación detallada de sus opciones y manejo):

• mke2fs. Crear un sistema de ficheros ext2 en una partición vacía. Equivale a la utilidad
format en los sistemas FAT.

• tune2fs. Una herramienta para usuarios avanzados que permite ajustar determinados
parámetros de funcionamiento del sistema de ficheros ext2.

• dumpe2fs. Imprimir información sobre el superbloque y otros metadatos del sistema de


ficheros ext2 instalado en un dispositivo.

• e2fsck. Comprobar la integridad del sistema de ficheros. Esta utilidad es capaz de detectar y
corregir numerosas inconsistencias. Resulta especialmente útil después de una incidencia. Por
ejemplo, un apagado imprevisto. Es el equivalente ext2 a la utilidad scandisk de los sistemas
FAT DOS/Windows.

• debugfs. Es una herramienta de bajo nivel que permite examinar y modificar distintos
aspectos de un sistema de ficheros ext2. Atención, debugfs puede resultar tan peligrosa
como su homónima debug del DOS ( DEBUG). Por lo que no es aconsejable hacer pruebas
con ella sobre un sistema de explotación.

- 22 - Bull (España) S.A


8 Comandos para la
gestión de permisos

En UNIX cada archivo o directorio existente tiene unos permisos de acceso. Esos permisos se
pueden definir de modo independiente para el usuario propietario del archivo, para su grupo y para el
resto de usuarios que no pertenecen a ese grupo.

Si en un directorio ejecutamos el comando ls -l observamos una salida similar a la siguiente:

-r-x------ 1 root system 844 15 jul 10:32 reconfig1


-r-x------ 1 root system 754 15 jul 10:32 reconfig2
-r-x------ 1 root system 754 15 jul 10:32 reconfig3
-rw------- 1 root system 0 04 jul 05:00 rpcbind.file
-rw-r--r-- 1 root system 21 26 jun 03:44 sh9034.1
-rw-r--r-- 1 root system 24 26 jun 03:44 sh9034.2
drwxr-xr-x 2 root system 512 15 jul 09:50 TEMP
drwxr-xr-x 3 root system 512 15 jul 10:38 vgdata
-rw-r--r-- 1 root system 390 18 jul 07:00 xlogfile

La primera columna de letras y guiones es la que define cuáles son los permisos de cada archivo o
directorio.

El primer carácter de esa columna nos dice si la entidad es un archivo (-), directorio (d) o link (l). Los
siguientes tres caracteres son los permisos del propietario (en este caso siempre root). Los tres
siguientes los del grupo (system) y los tres últimos los del resto de usuarios que no son root ni
pertenecen a system.

Cada grupo de tres letras significan lo siguiente:

r permiso de lectura
w permiso de escritura
x permiso de ejecución (si es un archivo)
permiso de entrada (si es un directorio)

Por tanto si nos encontramos que un directorio tiene los permisos del siguiente modo "drwxr-xr-x"
podemos ver que su propietario podrá leer, escribir y entrar en ese directorio y tanto los miembros de
su grupo como el resto de usuarios solamente podrán entrar en el directorio y leer su contenido pero
no escribir en el.
Para poder gestionar y cambiar los permisos de archivos y directorios primero hay que traducir
la cadena tipo "rwxrw-r--" a un número. El funcionamiento de la conversión es el siguiente:

El número siempre tendrá tres cifras y cada una de ellas se obtiene con un grupo de tres letras o
guiones.
rwx = 7 -wx = 3
rw- = 6 -w- = 2
r-x = 5 --x = 1
r-- = 4 --- = 0

- 23 - Bull (España) S.A


Atributo Significado en un fichero Significado en un directorio

r Permiso de lectura: el fichero puede Permiso de lectura: el usuario puede inspeccionar su


ser leído y copiado. contenido (ver que ficheros y subdirectorios contiene)

w Permiso de escritura: el contenido Permiso de escritura: el usuario puede crear, renombrar o


puede ser modificado o borrado. añadir ficheros en el directorio.

x Permiso de ejecución: en el Permiso de ejecución: puesto que los directorios no pueden


supuesto de que el fichero sea ser ejecutados en el mismo sentido que los ficheros, este
ejecutable, puede ser llamado a permiso se refiere a la posibilidad de efectuar búsquedas en
ejecución. él y hacerlo el directorio de trabajo, y acceder a cualquier
fichero o subdirectorio.

- 24 - Bull (España) S.A


chmod
Cambia los permisos de los archivos al modo que hemos especificado

Modificadores:
-h Cambia también los permisos de archivos y directorios apuntados por un link.
-R Cambia el propietario y el grupo recursivamente en todos los archivos y directorios a
partir del punto en que ejecutamos la orden.

Ejemplos:
chmod 777 cube.model
Cambia los permisos de cube.model a rwxrwxrwx

chmod 644 cube.model


Cambia los permisos de cube.model a rw-r--r--

chmod 777 *
Cambia todos los archivos a rwxrwxrwx

chown
Cambia el propietario y el grupo al que pertenecen uno o más archivos o directorios.

Modificadores:
-h Cambia también el propietario y el grupo de archivos y directorios apuntados por un link.
-R Cambia el propietario y el grupo recursivamente en todos los archivos y directorios a
partir del punto en que ejecutamos la orden.

Ejemplos:
chown catadm:catia *
Todos los archivos y directorios pertenecerán al usuario catadm y al grupo catia.

- 25 - Bull (España) S.A


9 Niveles de ejecución
INIT

La idea detrás de diferentes sistemas operativos puede ser usada de diversas maneras. Alguno
servicios no pueden ser usados hasta que el sistema esté de un determinado modo, o mode, como por
ejemplo más de un usuario o que tenga disponibilidad de red.

Existen veces en las que desea operar con el sistema en un modo bajo, como por ejemplo al establecer
problemas de corrupción de disco en el nivel de ejecución 1, en los que ningún usuario puede estar en
el sistema o puede dejar un servidor en un nivel de ejecución 3 sin ejecutar un sesión X. En estos
casos, ejecutar servicios que dependan de un modo de sistema más alto para su funcionamiento no
tiene sentido porque no funcionarán correctamente de ninguna de las maneras. Teniendo asignado
cada servicio para iniciar cuando se alcanza su nivel de ejecución en concreto, le asegura un proceso
de arranque ordenado puede cambiar de forma rápida el modo de la máquina sin preocuparse sobre los
servicios que inician y paran manualmente.

Lista de los niveles de ejecución disponibles en Linux:

• 0 — Parar

• 1 — Modo de usuario único

• 2 — Sin usar (usuario-definible)

• 3 — Modo de multi-usuario completo

• 4 — Sin usar (usuario-definible)

• 5 — Modo de multi-usuario completo(con una pantalla de registro X)

• 6 — Rearrancar

El nivel de ejecución por defecto para que un sistema arranque y se pare está configurado en
/etc/inittab.

Si lo desea puede configurar niveles de ejecución 2 y 4. Muchos usuarios configuran aquellos niveles de
ejecución en un modo que tiene mucho más sentido y dejan los niveles de ejecución estándar 3 y 5
solos. Esto permite que se muevan en el interior de la configuración personalizada sin interrumpir la
configuración normal de las características en los niveles de ejecución estándar.

Si su máquina llega a un punto en el que no arranca debido a un /etc/inittab o no le deja


registrarse porque posee un /etc/passwd o si sencillamente ha olvidado su contraseña, puede
arrancar en modo de usuario único.

Si está usando LILO como gestor de arranque, puede arreglar el fichero inittab reiniciando el equipo,
accediendo al intérprete de comandos boot::

- 26 - Bull (España) S.A


Si está usando GRUB como gestor de arranque, puede arreglar el fichero inittab con los siguientes
pasos.

• En la pantalla gráfica del gestor de arranque GRUB, seleccione la etiqueta de arranque por
ejemplo: Red Hat Linux y pulse [e] para editarla.

• Pulse la flecha hacia abajo hasta la línea del kernel y presione [e] para editarla.

• En el intérprete de comandos, teclee single y pulse [Intro].

• Volverá a la pantalla de GRUB con la información del kernel. Pulse [b] para arrancar el sistema
en modo monousuario.

Arrancará un sistema muy escueto y dispondrá de una shell de comandos desde la que puede hacer
ajustes.

Si esto no funciona, necesitará arrancar escribiendo linux init=/bin/bash en el intérprete de


comandos de LILO boot:. Esto le posiciona en un intérprete de comandos de la shell, observe que
ningún sistema de ficheros más que el sistema de ficheros de root está montado y el sistema de
ficheros de root está montado sólo en modo lectura. Para montarlo en modo lectura-escritura (para
permitir la modificación de /etc/inittab, por ejemplo, lleve a cabo lo siguiente:

mount -n /proc
mount -o rw,remount /

Utilidades initscript
La utilidad /sbin/chkconfig proporciona una herramienta de línea de comandos sencilla para
mantener la jerarquía del directorio /etc/rc.d/init.d. Evita que los administradores del sistema
tengan que manipular de forma directa los numerosos enlaces simbólicos en los directorios bajo
/etc/rc.d.

Además, existe /sbin/ntsysv que proporciona una interfaz basada en texto mucho más sencilla de
usar que la interfaz de la línea de comandos chkconfig.

En Red Hat si prefiere una interfaz gráfica, use el programa Herramienta de configuración de
servicios, que puede ser invocado usando el comando redhat-config-services.

Todas estas utilidades pueden ser ejecutadas como root.

- 27 - Bull (España) S.A


10 Conexionas remotas

Uso de Telnet
Telnet es un comando que nos permite iniciar una sesión en una máquina remotamente
utilizando el puerto 23. Simplemente tenemos que escribir el comando telnet nombre de maquina o ip y
estaremos conectando a esa máquina remotamente como si estuvieramos sentados delante de ella.
Una vez hayamos iniciado una sesión telnet podemos utilizar todos los comandos que hemos visto
hasta el momento para el manejo de archivos, directorios, permisos, sistemas de ficheros, etc.

Uso de ftp
Ftp es la abreviatura de File Transfer Protocol. Es una orden que nos sirve para enviar archivos
o recibirlos desde otra máquina utilizando el puerto 21. Antes de ejecutar la orden ftp nombre o ip de
máquina es conveniente que nos situemos, en la máquina local, en el directorio donde queramos recibir
o desde el que queramos enviar los ficheros en cuestión.

La siguiente cuestión que debemos plantearnos al realizar un FTP es si los ficheros que vamos
a enviar o recibir son binarios o de texto. Un modelo de catia, por ejemplo, es binario. Un archivo de
declaraciones (dcls) es de texto. Si no sabemos si el archivo es binario o de texto no tenemos más que
mostrarlo por pantalla utilizando la orden cat. Si es binario en la pantalla aparecerán símbolos extraños
y posiblemente la máquina pitará. Si es de texto, lógicamente, saldrá por pantalla un texto legible.

Una vez ejecutemos la orden ftp nombre_o_ip_de_maquina se nos pedirá un nombre de


usuario y un password y entraremos en una interfaz de usuario donde podemos utilizar los siguientes
comandos:

ascii Pasa a modo de transferencia de texto


bin Pasa a modo de transferencia binario
cd Cambia de directorio en la máquina remota
lcd Cambia de directorio en la máquina local
ls Lista el contenido del directorio remoto
!ls Lista el contenido del directorio local
get Recibe un archivo de la máquina remota
put Envía un archivo a la máquina remota
mget Recibe varios archivos de la máquina remota
mput Envia varios archivos a la máquina remota
close Cierra la conexión con la máquina remota
open Abre una nueva conexión
bye Finaliza la sesión de ftp

Nota:
Si un usuario no tiene password no puede hacerse un ftp con ese usuario.

- 28 - Bull (España) S.A


Protocolo SSH
SSH™ permite a los usuarios registrarse en sistemas de host remotamente. A diferencia de rlogin o
telnet SSH encripta la sesión de registro imposibilitando que alguien pueda obtener una contraseña.

SSH está diseñado para reemplazar los métodos comunes para registrarse remotamente en otro
sistema a través de la shell de comando. El programa scp reemplaza otros programas diseñados para
copiar ficheros entre hosts como por ejemplo ftp o rcp. Ya que estas aplicaciones antiguas no
encriptan contraseñas entre el cliente y el servidor, las evita siempre que sea posible. El uso de
métodos seguros para registrarse remotamente a otros sistemas hará disminuir los riesgos de
seguridad para ambos sistemas y el sistema remoto.

Una gran cantidad de programas de cliente y servidor puede usar el protocolo SSH, incluyendo muchas
aplicaciones open source a disposición gratuita. Hay varias versiones de cliente diferentes de SSH a
disposición para casi todos los sistemas operativos más importantes en uso actualmente.

Ficheros de configuración OpenSSH

OpenSSH tiene dos conjuntos diferentes de ficheros de configuración, uno para los programas del
cliente (ssh, scp, y sftp) y el otro para los servicios del servidor (sshd), ubicados en dos sitios
diferentes.

La información de configuración SSH para todo el sistema está almacenada en el directorio /etc/ssh

La información para la configuración SSH específica para el usuario está almacenada en el directorio
principal ~/.ssh/:

SCP
SCP es un comando para copiar ficheros entre distintas maquinas utilizando como protocolo de
comunicación SSH.

Ejemplos:

• Copiar “fichero” en la home de “usuario” en servidor:


scp fichero usuario@servidor:
• Copiar un directorio recursivamente en /tmp del servidor:
scp rdir usuario@servidor:/tmp
• Copiar fichero2 desde el servidor a mi home:
scp usuario@servidor:fichero2 ~
• Copiar de máquina B a máquina C:
scp usuarioB@servidorB:fichero usuarioC@servidorC:

- 29 - Bull (España) S.A


11 El editor vi

El editor vi es con toda probabilidad el editor de textos menos amigable e intuitivo que pueda
existir pero en contrapartida tiene una gran ventaja. Es el único editor de textos que podemos asegurar
que estará instalado en cualquier sistema UNIX que nos encontremos por ahí así que vale la pena
conocer su uso aunque sea de modo básico.

Para editar un archivo o crear un archivo nuevo con vi escribiremos:

vi nombre_archivo

Este comando nos lleva a la pantalla de edición donde se nos muestra el contenido del archivo
o bien a una pantalla vacía si el archivo es nuevo.

Modo comandos:
Cuando vi arranca se encuentra en modo comandos, esto significa que el editor esta preparado
para recibir una orden, no para que escribamos. Si estamos escribiendo podemos pasar también al
modo comandos pulsando la tecla <ESC> del teclado.

Los comandos básicos para la edición son los siguientes:

i Pasa a modo inserción.


x Elimina un carácter a la izquierda del cursor.
X Elimina un carácter a la derecha del cursor.
dd Borra la línea actual.
xdd Borra x líneas, desde la actual hasta x más abajo.
o Abre una linea en blanco bajo la actual y pasa a modo inserción.
u Deshace la última orden aplicada.

:x Nos traslada a la linea x del archivo.


:$ Nos traslada al final del archivo.
:q! Sale del archivo sin guardar cambios (muy útil si nos equivocamos).
:wq Sale del archivo guardando cambios.

Modo inserción:
En modo inserción el editor se comporta de forma 'normal' y nos deja teclear texto.

Tanto en modo inserción como en modo comandos las flechas del cursor nos permiten movernos por el
documento.

- 30 - Bull (España) S.A


12 Gestores de arranque

Antes de poder ejecutar Linux en un sistema, deberá iniciar un programa especial llamado gestor de
arranque. El programa de gestor de arranque existe en el disco duro primario del sistema o en los
dispositivos de medios y es responsable de la carga del kernel de Linux y de los ficheros necesarios, o,
en algunos casos, de otros sistemas operativos en la memoria.

Cada arquitectura del sistema que pueda ejecutar Linux usa un gestor de arranque diferente. Por
ejemplo, la arquitectura Alpha usa el gestor de arranque aboot, mientras que la arquitectura Itanium
usa el gestor de arranque ELILO. Este capítulo explica comandos y opciones de configuración para los
dos cargadores de arranque para la arquitectura x86: GRUB y LILO. Son los mas comunes.

GRUB

GNU GRand Unified Boot loader o GRUB consiste en un programa que habilita al usuario a seleccionar
qué sistema operativo instalado o kernel descargar en el tiempo de arranque del sistema. Permite
también que el usuario transmita argumentos al kernel.

GRUB se carga a sí mismo en la memoria en las diferentes etapas:

1. La etapa 1 o cargador de arranque primario se lee en la memoria con el BIOS desde el MBR[1].
El gestor de arranque primario existe en menos de 512 bytes de espacio en disco entre el MBR.
Lo único que hace es cargar el gestor de arranque de la etapa 1.5 o la etapa 2.

2. El gestor de arranque de la etapa 1 lee en la memoria al gestor de arranque de la etapa 1.5.


Determinado hardware requiere un paso intermedio para obtener el cargador de arranque de la
etapa 2. Esto sucede a menudo cuando la partición /boot está por encima de 1024 cilindros
de disco duro o cuando se usa el modo LBA. Este cargador de arranque de la etapa 1.5 se
encuentra en la partición /boot o en una pequeña parte del MBR y la partición /boot.

3. La etapa 2 o el gestor de arranque secundario se lee en la memoria. El gestor de arranque


secundario visualiza el menú GRUB y el entorno del comando. Esta interfaz le permite
seleccionar qué sistema operativo o kernel de Linux arrancar, pasar argumentos al kernel o ver
los parámetros del sistema, tales como la RAM disponible.

4. El gestor de arranque secundario lee el sistema operativo o el kernel y initrd en la memoria.


Una vez que GRUB determina qué sistema operativo iniciar, éste lo carga en al memoria y
controla la máquina de dicho sistema operativo.

El método de arranque usado para arrancar Red Hat Linux se conoce como método de carga directa
porque el gestor de arranque carga el sistema operativo directamente. No existe punto medio entre el
gestor de arranque y el kernel.

El proceso de arranque usado por otros sistemas operativos será diferente. Por ejemplo, los sistemas
operativos de Microsoft DOS y Windows, así como otros sistemas operativos de propiedad, se cargan
mediante un método de arranque de carga de cadena. Bajo este método, el MBR señala el primer
sector de la partición al sostener el sistema operativo. A continuación encuentra los ficheros necesarios
para arrancar ese sistema operativo.

- 31 - Bull (España) S.A


Terminología de GRUB
Una de las cuestiones más importantes que deben entenderse antes de utilizar GRUB es cómo el
programa hace referencia a los dispositivos, por ejemplo, a los discos duros y a las particiones. Esta
información es muy importante si desea configurar GRUB para arrancar varios sistemas operativos.

Nombres de dispositivos
GRUB denominará al primer disco duro de un sistema (hd0). A la primera partición de dicho disco, le
denominará (hd0,0) y a la quinta partición del segundo disco duro (hd1,4). En general, la
nomenclatura utilizada para los sistemas de ficheros al usar GRUB se desglosa del siguiente modo:

(<tipo-de-dispositivo><número-dispositivo-
bios>,<número-partición>)

Los paréntesis y las comas son muy importantes en el nombre. <tipo-de-dispositivo> hace
referencia a si es un disco duro (hd) o una unidad de disquete (fd).

<número-dispositivo-bios> es el número de dispositivo según la BIOS del sistema, empezando


desde 0. El disco duro IDE principal tiene asignado el número 0 y el disco duro IDE secundario el
número 1. El orden es aproximadamente equivalente al modo en el que el kernel de Linux organiza los
dispositivos con letras, donde la letra a en hda corresponde al número 0, y la letra b en hdb
corresponde al número 1, y así sucesivamente.

<número-partición> hace referencia al número de una partición concreta en dicho dispositivo. Al


igual que en el caso de <número-dispositivo- bios>, la numeración de las particiones empieza
por 0. Aunque la mayoría de las particiones se especifican con números, si el sistema usa particiones
BSD a éstas se hará referencia con letras, por ejemplo a o c.

Nombres de ficheros
Al escribir comandos en GRUB que hagan referencia a un fichero, como una lista de menús que debe
usarse para permitir el arranque de varios sistemas operativos, debe incluir el fichero inmediatamente
después de especificar el dispositivo y la partición. Una especificación de fichero de ejemplo que haga
referencia a un nombre de fichero absoluto se organiza del modo siguiente:

(<tipo-de-dispositivo><número-dispositivo-
bios>,<número-
partición>)/ruta/a/fichero

- 32 - Bull (España) S.A


Comandos de GRUB
GRUB permite varios comandos en su línea de comandos. Algunos de los comandos aceptan opciones
después del nombre y estas opciones deben ir separadas del comando por comas y de otras opciones
de esa línea por caracteres de espacio.

En la lista siguiente se indican los comandos más útiles:

• boot — Arranca el sistema operativo o gestor de encadenamiento que se ha especificado y


cargado previamente.

• chainloader <nombre-fichero> — Carga el fichero especificado como gestor de


encadenamiento. Para extraer el fichero en el primer sector de la partición especificada, puede
utilizar +1 como nombre de fichero.

• displaymem — Muestra el uso actual de memoria, en función de la información de la BIOS.


Esto es útil si no está seguro de la cantidad de RAM que tiene un sistema y todavía tiene que
arrancarlo.

• initrd <nombre-fichero> — Le permite especificar un disco RAM inicial para utilizarlo al


arrancar. initrd es necesario cuando el kernel necesita ciertos módulos para poder arrancar
adecuadamente, tales como cuando la partición se formatea con el sistema de ficheros ext3.

• install <nivel-1> <instalar-disco> <nivel- 2> p <fichero-configuración> —


Instala GRUB en el registro MBR.

• Este comando se puede configurar de distintas maneras. Sin embargo, debe especificar el valor
<nivel- 1>, que representa un dispositivo, una partición y un fichero donde se puede
encontrar la imagen del gestor de arranque principal, por ejemplo (hd0,0)/grub/stage1.
Además, debe especificar el disco en el que el gestor de arranque del Nivel 1 deberá instalarse,
por ejemplo (hd0).

• La sección <nivel-2> indica al gestor de arranque del Nivel 1 la ubicación del gestor de
arranque del Nivel 2, por ejemplo (hd0,0)/grub/stage2. La opción p Indica al comando
install que se ha especificado un fichero de configuración en la sección <fichero-
configuración>, por ejemplo (hd0,0)/grub/grub.conf.

• kernel <nombre-fichero-kernel> <opción-1> <opción- N> — Especifica el fichero


kernel que debe cargarse desde el sistema de ficheros raíz de GRUB cuando se usa la carga
directa para arrancar el sistema operativo. Las opciones pueden ir seguidas del comando
kernel, que se transferirá al kernel al cargarse.

Para el sistema Red Hat Linux, es probable que tenga una línea similar a la siguiente:
kernel /vmlinuz root=/dev/hda5
Esta línea especifica que el fichero vmlinuz se carga desde un sistema de ficheros raíz de
GRUB, por ejemplo, (hd0,0). También se transfiere una opción al kernel que especifica que el
sistema de ficheros raíz del kernel del Linux debe encontrarse, al cargarse, en hda5,la quinta
partición en el primer disco duro IDE. Después de esta opción se pueden insertar varias
opciones, si es necesario.

• root <dispositivo-y- partición> — Configura la partición raíz de GRUB para que sea
el dispositivo y la partición concreta, por ejemplo, (hd0,0), y monta la partición de modo que
se puedan leer los ficheros.

- 33 - Bull (España) S.A


• rootnoverify <dispositivo-y- partición> — Realiza la misma función que el
comando root, pero sin montar la partición.

Hay otros comandos disponibles aparte de los indicados. Escriba info grub para obtener una lista
completa de los comandos

Fichero de configuración de menú de GRUB


El fichero de configuración de GRUB es /boot/grub/grub.conf. Los comandos para configurar las
preferencias para la interfaz del menú están ubicados al inicio del fichero, seguido de las diferentes
entradas para cada sistema operativo o kernels listados en el menú.

Los comandos siguientes sólo pueden usarse en el fichero de configuración de menú de GRUB:

• color <color-normal> <color-seleccionado> — Le permite configurar los


colores específicos que se usarán en el menú. Los dos colores se configuran
como color de fondo y de primer plano. Puede usar simplemente los nombres
de colores, como red/black. Una línea de ejemplo sería similar a la siguiente:
color red/black green/blue

• default <nombre-título> — Nombre del título por defecto de la entrada que


se cargará si se supera el tiempo de actividad de la interfaz de menú.
• fallback <nombre-título> — Si se utiliza, el nombre de título de la entrada
que deberá probarse si falla el primer intento.
• hiddenmenu — Si se utiliza, no se podrá mostrar la interfaz de menú de GRUB
ni cargar la entrada default si caduca el período timeout. El usuario puede ver
el menú estándar de GRUB si pulsa la tecla [Esc].
• password <contraseña> — Si se utiliza, el usuario que no conozca la
contraseña no podrá modificar las entradas de esta opción de menú.
Opcionalmente, puede especificar un fichero de configuración de menú
alternativo después de la <contraseña>,de modo que, si se conoce la
contraseña, GRUB reiniciará el Nivel 2 del gestor de arranque y utilizará este
fichero de configuración alternativo para crear el menú. Si se omite este fichero
alternativo del comando, el usuario que sepa la contraseña podrá modificar el
fichero de configuración actual.
• timeout — Si se utiliza se establece la cantidad de tiempo, en segundos, antes
de que GRUB cargue la entrada designada por el comando default.

• splashimage — Especifica la ubicación de la imagen de pantalla splash que se


utilizará al arrancar.
• title — Establece el título que se utilizará con un grupo de comandos
concreto para cargar un sistema operativo.
El carácter # se puede usar para insertar comentarios en el fichero de configuración de menú.

- 34 - Bull (España) S.A


LILO

LILO es un acrónimo de LInux LOader y se usado siempre para arrancar linux en sistemas x86 para
muchos años. Aunque GRUB es el gestor de arranque por defecto, algunos prefieren usar LILO porque
les es más familiar y otros porque GRUB puede causar problemas al arrancar determinado tipo de
hardware.

LILO se carga a sí mismo en la memoria casi de forma idéntica a GRUB, con la diferencia de que es un
gestor de dos etapas.

1. La etapa 1 o el gestor de arranque primario se lee en al memoria por la BIOS desde el MBR[1].
El gestor de arranque primario existe en menos de 512 bytes de espacio en disco dentro del
MBR. Su función es cargar la etapa 2 del gestor de arranque y pasarle la información de la
geometría del disco.

2. La etapa 2 o el gestor de arranque secundario se lee en memoria.. El gestor de arranque


secundario visualiza la pantalla inicial de Red Hat Linux. Esta pantalla le permite seleccionar el
sistema operativo o el kernel de Linux que desee arrancar.

3. La etapa 2 lee el sistema operativo o el kernel y lleva a cabo initrd en memoria. Una vez que
LILO determina qué sistema operativo iniciar, éste lo carga en la memoria y lleva el control de la
máquina a ese sistema operativo.

Una vez que se ha llevado a cabo la etapa 2 en memoria, LILO visualiza la pantalla inicial de Red Hat
Linux con los diferentes sistemas operativos o kernel que han sido configurados para arrancar. Si posee
Red Hat Linux instalado y no ha cambiado nada en el fichero de configuración de LILO, verá tan sólo
linux como una opción. Si instala el soporte del kernel SMP, verá linux-up como una opción. Si ha
configurado LILO para arrancar otro sistema operativo, esta pantalla le da la posibilidad de seleccionar
qué sistema operativo arrancará. Use las teclas de flechas para evidenciar el sistema operativo y pulse
[Enter].

Si desea tener un intérprete de comandos para introducir un comando a LILO, pulse [Ctrl]-[X]. LILO
visualiza un intérprete LILO: en la pantalla y espera la entrada desde el usuario.

Opciones en /etc/lilo.conf
El comando /sbin/lilo -v -v accede al fichero de configuración de LILO, /etc/lilo.conf, para
determinar lo que desea escribir en el MBR. Necesitará saber cómo modificar este fichero.
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
message=/boot/message
lba32
default=linux
image=/boot/vmlinuz-2.4.0-0.43.6
label=linux
initrd=/boot/initrd-2.4.0-0.43.6.img
read-only
root=/dev/hda5

other=/dev/hda1
label=dos

- 35 - Bull (España) S.A


Este ejemplo le muestra un sistema configurado para arrancar dos sistemas operativos: Red Hat Linux
y DOS. A continuación unas cuantas líneas de este fichero:

• boot=/dev/hda advierte a LILO para instalar el primer disco duro en el primer controlador
IDE.

• map=/boot/map localiza el fichero del mapa. En uso normal, éste debería ser modificado.

• install=/boot/boot.b hace que LILO instale el fichero específico como el nuevo sector de
arranque de boot. En un uso normal, esto no debería ser alterado. Si falta la línea install,
LILO asumirá /boot/boot.b predeterminado como el fichero que se usará.

• La existencia de prompt hace que LILO le muestre cualquier cosa que haga referencia a la
línea message. No se le recomienda que elimine la línea prompt, si la elimina, podrá obtener
un intérprete manteniendo pulsada la tecla [Shift] mientras que su máquina empieza a arrancar.

• timeout=50 configura la cantidad de tiempo que LILO esperará la entrada del usuario antes
de proceder con el arranque de la entrada de la línea default. Esto se mide en décimas de
segundo, con 50 por defecto.

• message=/boot/message se refiere a la pantalla que LILO visualiza para permitirle


seleccionar el sistema operativo o el kernel a arrancar.

• lba32 describe la geometría del disco duro para LILO. Otra entrada común es linear. No
debería cambiar esta línea a menos de que sea consciente de lo que está haciendo. De lo
contrario, pondría su sistema en un estado de no arranque.

• default=linux se refiere al sistema operativo por defecto para LILO para arrancar desde las
opciones listadas bajo esta línea. El nombre linux se refiere a la línea label en cada una de
las opciones de arranque.

• image=/boot/vmlinuz-2.4.0-0.43.6 especifica el kernel de linux para arrancar con esta


opción de arranque en particular. option.

• label=linux nombra la opción del sistema operativo en la pantalla de LILO. En este caso, es
también el nombre al que se refiere la línea default.

• initrd=/boot/initrd-2.4.0-0.43.6.img se refiere a la imagen initial ram disk que se


usa en el tiempo de arranque para inicializar los dispositivos que hacen que el inicio del kernel
sea posible. El disco ram inicial es una colección de drivers específicos de cada máquina
necesarios para operar una tarjeta SCSI, una unidad de disco duro o cualquier otro dispositivo
necesario para cargar el kernel. No debería intentar compartir los discos ram iniciales entre las
máquinas.

• read-only especifica que la partición de root (vea root line below) sea sólo-lectura y no
pueda ser alterada durante el proceso de arranque.

• root=/dev/hda5 advierte a LILO de la partición del disco a usar como la partición de root.

- 36 - Bull (España) S.A


13 Configuración de red

Las comunicaciones de red acontecen entre interfaces, que son dispositivos de networking conectados
al sistema, configurados de un modo determinado y usando un protocolo, al menos, para intercambiar
datos con otros sistemas.

Los ficheros de configuración para las diferentes interfaces de red y scripts para activarlos o
desactivarlos están ubicados en el directorio /etc/sysconfig/network-scripts. Mientras que la
existencia de ficheros de interfaces particulares puede diferir de sistema a sistema dependiendo del
uso, los tres tipos de ficheros diferentes que existen en este directorio, ficheros de configuración de
interfaz, scripts de control de interfaz y ficheros de función de red, funcionan conjuntamente para
habilitar Linux para el uso de diversos dispositivos de red disponibles.

Ficheros de configuración de red


Antes de revisar los ficheros de configuración de interfaz estudiemos los ficheros de configuración
principales que usa Red Hat Linux para configurar la red. La comprensión del papel que desempeñan
en la configuración de la red es fundamental para configurar el sistema.

Los principales ficheros de configuración de la red son los siguientes:

• /etc/hosts — El principal propósito de este fichero es resolver los nombres de hosts que no
se pueden resolver en otra manera. Se puede usar solamente para resolver nombres de hosts
en pequeñas redes sin servidor DNS. Sin tener en cuenta el tipo de red que el ordenador use,
este fichero contiene un línea que especifica la dirección IP del dispositivo loopback
(127.0.0.1) como por ejemplo localhost.localdomain. Para mayor información consulte
la página man del host.

• /etc/resolv.conf — Este fichero especifica las direcciones IP de los servidores DNS y el


dominio de búsqueda. A menos que se haya configurado para algo diferente, los scripts de
inicialización de la red llenan este fichero. Para mayor información consulte la página man
resolv.conf.

• /etc/sysconfig/network — Especifica la información del routing y del host para todas las
interfaces de red.

• /etc/sysconfig/network-scripts/ifcfg-<interface-name> — Para cada interfaz


de red del sistema Red Hat Linux existe un script de configuración de interfaz para una interfaz
de red determinada.

Ficheros de configuración de interfaz


Los ficheros de configuración de interfaz controlan la operación de un dispositivo de interfaz de red
particular. Cuando su sistema Red Hat Linux arranca, utiliza estos ficheros para saber qué interfaces
utilizar automáticamente y cómo configurarlas para que operen correctamente. Estos ficheros

- 37 - Bull (España) S.A


habitualmente se conocen como ifcfg-<device>, donde <device> hace referencia al nombre del
dispositivo que controla el fichero de configuración.

Uno de los ficheros de interfaz más comunes es ifcfg-eth0, que controla el primer NIC de un
sistema. En un sistema con muchos NICs, tendrá ficheros ifcfg-eth múltiples, cada uno con nun
número al final del nombre del fichero. Como cada dispositivo tiene su propio fichero de configuración,
llevará un gran control sobre el modo en que funciona cada interfaz.

Un ejemplo ifcfg-eth0 para un sistema que usa una dirección IP fija sería de la siguiente manera:

DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
NETWORK=10.0.1.0
NETMASK=255.255.255.0
IPADDR=10.0.1.27
USERCTL=no

Los valores que se requieren en un fichero de configuración de interfaz pueden cambiar basándose en
otros valores. Por ejemplo, el fichero ifcfg-eth0 para una interfaz que use DHCP aparecerá
diferente, debido al hecho de que la información IP viene proporcionada por el servidor DHCP:

DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes

La mayoría del tiempo, deseará utilizar una utilidad GUI, como por ejemplo Configurador de red de
Red Hat (redhat-config-network) o netconfig para hacer cambios en los diversos ficheros de
configuración de interfaz.

También puede modificar el fichero de configuración de un determinado dispositivo de red a mano. A


continuación, le mostramos los parámetros que necesita para modificar el fichero de configuración.

Dentro de cada uno de los ficheros de configuración de la interfaz, son comunes los siguientes valores:

• BOOTPROTO=<protocol>, donde <protocol> es uno de los siguientes:

o none — No se debería utilizar ningún protocolo de tiempo de arranque.

o bootp — Se debería utilizar el protocolo BOOTP.

o dhcp — Se debería utilizar el protocolo DHCP.

• BROADCAST=<address>, donde <address> es la dirección de broadcast.

• DEVICE=<name>, donde <name> es el nombre del dispositivo físico (a excepción de los


dispositivos PPP asignados de forma dinámica donde es el nombre lógico).

• DNS{1,2}=<address>, donde <address> es la dirección del servidor de nombres que se


tiene que colocar en /etc/resolv.conf si la directiva PEERDNS está activada.

• IPADDR=<address>, donde <address> es la dirección IP.

- 38 - Bull (España) S.A


• NETMASK=<mask>, donde <mask> es el valor de la máscara de red.

• NETWORK=<address>, donde <address> es la dirección de red. Esta opción ya no se usa.

• ONBOOT=<answer>, donde <answer> es uno de los siguientes:

o sí — El dispositivo debería activarse en el momento de arranque.

o no — Este dispositivo no debería activarse en el momento de arranque.

• PEERDNS=<answer>, donde <answer> es uno de las siguientes:

o sí — Modificar /etc/resolv.conf si la directiva DNS está activada. Si está usando


DCHP, la opción sí es la predeterminada.

o no — No modificar /etc/resolv.conf.

o SRCADDR=<address>, donde <address> es la dirección IP de una fuente específica


para los paquetes externos.

o USERCTL=<answer>, donde <answer> es uno de los siguientes:

 verdadero — Se les permite controlar este dispositivo a todos los usuarios,


aunque éstos no sean root.

 falso — No se les permite controlar este dispositivo a los usuarios que no


sean root.

- 39 - Bull (España) S.A


14 Administración de
paquetes (RPM)

Administradores de paquetes y paquetes

Un paquete de software es una serie de programas que se distribuyen conjuntamente. Algunas de las
razones para ello suelen ser que el funcionamiento de cada uno complementa o requiere a los demás,
que sus objetivos están relacionados o como estrategia de márketing nomás.

Muchos sistemas operativos modernos emplean sistemas de control de paquetes que permiten que
el administrador del sistema instale o desinstale estos, sin que en ningún momento queden programas
instalados que no funcionen por falta de otros incluidos en su paquete.

Gracias al administrador de paquetes de software de la distribución de linux que usemos, podremos


directamente seleccionar el programa que necesitemos para resolver nuestra necesidad y éste se
encargará de descargarlo de un lugar llamado "repositorio" usando la conexión a Internet, descargar
los programas necesarios para que el nuestro funcione correctamente (dependencias) e instalará todo.

En los años que tiene de existencia Linux, se han formado Distribuciones y muchas de estas, han
hecho su propio sistema de paquetes, dándole distinto sistema y coeficiente de compresión, forma de
ordenamiento de los archivos dentro de él, etc.

De esta forma, la distribución Red Hat, creo el sistema de paquetes RPM y el administrador YUM. La
distribución Debian, el sistema DPKG y el administrador APT. Slackware, el sistema TGZ

Gestión de paquetes con RPM

El gestor de paquetes de Red Hat (Red Hat Package Manager, RPM), es un sistema abierto de gestión
de paquetes de programas disponible para ser utilizado por cualquier usuario. Funciona tanto en Red
Hat Linux como en otros sistemas Linux y UNIX. Red Hat Software pretende conseguir que otros
fabricantes analicen RPM y consideren usarlo en sus propios productos.

Para el usuario final, RPM ofrece muchas características que hacen el mantenimiento de un sistema
bastante más fácil de lo que ha sido hasta ahora. Instalar, desinstalar y actualizar paquetes RPM son
tareas que se llevan a cabo con sólo una orden en la línea de comandos, todos los detalles complejos
del proceso son controlados automáticamente. RPM mantiene una base de datos de paquetes
instalados y de los ficheros que los forman, lo que permite realizar complejas consultas y verificación del
sistema. Durante las actualizaciones, RPM trata los ficheros de configuración de forma especial, para
evitar que se pierdan las diferentes modificaciones que se hayan podido realizar en ellos - característica
ésta que resulta imposible de realizar directamente con ficheros .tar.gz.

Para el programador, RPM permite tomar el código fuente de los programas y archivarlo en paquetes
de código fuente y programas binarios destinados al usuario final. Este proceso es bastante sencillo y

- 40 - Bull (España) S.A


está basado en un único fichero y parches opcionales creados por el programador. Esta clara
delimitación entre código fuente original y parches e instrucciones de compilación facilita el
mantenimiento del paquete a medida que van apareciendo nuevas versiones del programa.

Consulta de RPMs INSTALADOS


Para saber que paquetes .RPM están instalados, será tan fácil como escribir:
rpm -qa

Pero, claro, esta información aparecerá un tanto desordenada, porque que podemos forzar su
información y una fácil consulta escribiendo:

rpm -qa|sort|less

Te recordamos, que esto te dirá todos los programas que están instalados vía .RPM, es decir, que los
que hubieran sido instalados como .tgz, (o .tar.gz, que es lo mismo), o .deb, o cualquier otro tipo de
paquete que no fuera compatible con el .rpm, no mostrará esta información.

Consulta de un paquete INSTALADO


• Para saber cierta información sobre un paquete, bastara poner:

rpm -qi nombre

• Para consultar donde está instalado...

rpm -qil nombre

• Para consultar un paquete QUE NO ESTÁ INSTALADO, y ahora mismo lo tienes delante:

rpm -qpi nombre.xxx.xx.rpm

• Si quieres saber donde se instalará

rpm -qpil nombre.xxx.xx.rpm

Forzar una instalación:


• Para forzar una instalación que deseamos a toda costa, bastará con poner:

rpm -U programa.xxx.xx.rpm

• para forzarlo use: --force

rpm -U --force programa.xxx.xx.rpm

Para desinstalar a toda costa, usa --nodeps, para que no dependa de las dependencias instaladas
(esta opción no es muy aconsejable)

- 41 - Bull (España) S.A


15 Dispositivos

Linux tiene varios ficheros especiales en /dev. Estos ficheros se llaman ficheros de dispositivo pero no
se comportan como los ficheros habituales. Los tipos más comunes de ficheros de dispositivos son los
de dispositivos de bloques o de caracter. Estos ficheros son una interfaz al controlador de dispositivo
(parte del núcleo de Linux) que a su vez le permite el acceso al hardware. Un tipo de archivo de
dispositivo menos frecuente son las pipe (N. del T., a veces traducido como «tubería»). En la tabla
mostrada a continuación se lista los ficheros de dispositivo más importantes.

fd0 Primera unidad de disquetes

hda Disco duro IDE / CD-ROM en el primer puerto IDE (Maestro)

hdb Disco duro IDE / CD-ROM en el primer puerto IDE (Esclavo)

hda1 Primera partición del primer disco duro IDE hda

hdb15 Decimoquinta partición del cuarto disco duro IDE hdb

sda Disco duro SCSI con el menor ID SCSI (por ejemplo 0)

sdb Disco duro SCSI con el siguiente ID SCSI (por ejemplo 1)

sda1 Primera partición del primer disco duro SCSI sda

sdb10 Décima partición del cuarto disco duro SCSI sdb

sr0 CD-ROM SCSI con el ID SCSI más bajo

sr1 CD-ROM SCSI con el siguiente ID SCSI

ttyS0 Puerto serie 0, COM1 en MS-DOS

ttyS1 Puerto serie 1, COM2 en MS-DOS

psaux Ratón de tipo PS/2

gpmdata Pseudo-dispositivo, repite los datos generados por el demonio GPM (ratón)

cdrom Enlace simbólico a la unidad de CD-ROM

mouse Enlace simbólico al fichero de dispositivo del ratón

null Todo lo que se escriba en este dispositivo desaparecerá

zero Se pueden leer continuamente ceros desde este dispositivo

- 42 - Bull (España) S.A


16 Controladores de
dispositivos

Introducción
Los nuevos usuarios de Linux escuchan a menudo que este sistema operativo tiene un excelente
soporte para toda clase de tarjetas y que los controladores de dispositivos (device drivers, en inglés)
son estables y rápidos. Aunque a veces, la configuración de dispositivos bajo Linux no es tan conectar-
y-usar (plug-and-play).

Todo es un archivo
Los controladores de dispositivos de Linux trabajan con el código del núcleo (o kernel) que acceden
directamente al hardware. Para hacer disponible los servicios que la tarjeta u otros dispositivos ofrecen
a los programas de usuario normal, el núcleo utiliza los archivos especiales que se encuentran ubicados
en la carpeta /dev.

Un extremo de los archivos en /dev/ puede ser abierto y utilizado normalmente por el usuario o los
programas, y el otro extremo esta unido al núcleo. Esto es obviamente una simplificación: hardware,
núcleo o kernel, archivos especiales, programas de usuario. Hay dos formas de agregar estas
porciones de software al núcleo: con los controladores compilados integrados que están
permanentemente en el núcleo, y los módulos que pueden ser cargados dinámicamente.

Los módulos
Otra ventaja muy anunciada en Linux es que no necesita ser reiniciado tan a menudo como otros
sistemas operativos. Podría pensar que esto es debido a la estabilidad del sistema. Puede pensar que
tal vez se deba a la buena programación (calidad) de los controladores de dispositivos. Pero la razón
principal por la que los controladores en Linux llevan a menos reinicios se debe a que podemos re-
configurar , descargar o recargarlos sin la necesidad de reiniciar el sistema.

Para lograr esto se utilizan los controladores modulares.

Cargar un módulo: modprobe, lsmod e insmod


Si quiere cargar un módulo después de haber iniciado el sistema, entonces la forma más fácil es:
modprobe hfs
Este ejemplo carga el controlador de subsistema de disco de los Mac de Apple (llamado hfs) con el
comando "modprobe". Si el módulo requiere parametros, como numeros IRQ, entonces pueden ser
especificados en el mismo comando.

- 43 - Bull (España) S.A


Para ver que módulos son cargados y ver información de cómo ellos dependen de cada otro, utilizados
el comando "lsmod". Ejemplo:

Module Size Used by


gus 45016 0
mad16 6564 0
sb 31416 0
ad1848 15112 0 [mad16]
uart401 5588 0 [mad16 sb]
sound 54368 0 [gus mad16 sb ad1848 uart401]

En este ejemplo el controlador de dispositivo del núcleo "mad16" depende del controlador "ad1848", Si,
realmente existe un controlador llamado "mad16". Pertenece a un chipset de una tarjeta de sonido.

/etc/modules, /etc/conf.modules
En el curso normal de los eventos los módulos que nos fueron consultados durante la instalación son
cargados durante el tiempo de arranque del sistema. El archivo "/etc/modules" es utilizado para esta
función. Este archivo contiene una lista de los módulos que serán cargados.

Las opciones para los modulos se encuentran almacenadas en "/etc/conf.modules". Por favor no edite
este archivo. Puede utilizar utilidades como "update-modules" para realizar modificaciones. Utilice
"man" para más detalles.

- 44 - Bull (España) S.A


17 Los discos y las
particiones en Linux

Particiones

Una partición en un disco duro es la creación de divisiones "no físicas" o lógicas, que permite tener la
sensación de "dos o más discos en uno".

Una de las funciones del particionado, es que a partir de un solo disco duro se pueden tener tantos
sistemas operativos como particiones haya. Otra podría ser asegurarnos que si una partición se ve
afectada por problemas de seguridad, solo esa se dañe, permitiendonos seguir teniendo el resto de los
datos en las otras particiones que están intactas.

Partición primaria

Cuando se ideó el sistema de particiones de disco, hace ya mucho tiempo, se pensó en que 4
particiones serían más que suficientes para cubrir todas las necesidades. Esto cambió bastante y
(también hace mucho tiempo) se tuvo que pensar en una solución al problema, esa solución se llamó
Partición extendida.

Partición lógica o extendida

Las particiones extendidas se crearon con el fin de superar el límite de 4 particiones primarias por disco.
Con ellas, ya no existe límite en la cantidad de particiones lógicas que se pueden generar en un disco.
Sin este tipo de particiones no se podría dar el hecho de que se pueden instalar tantos sistemas
operativos como particiones haya.

Tabla de particiones

La tabla de particiones está alojada en el MBR del disco, a partir del byte 446 del sector de arranque y
ocupa 64 bytes, contiene descriptores para 4 particiones (de 16 byte cada una), llamadas particiones
primarias, cada registro ocupa 16 bytes y en ese registro se almacena todo lo relacionado con la
partición, si es arrancable, si no lo es, el formato, el tamaño y el sector de inicio.

- 45 - Bull (España) S.A


MBR

El registro de arranque maestro (Master Boot Record), es un sector de 512 bytes al principio del disco
rígido que contiene una secuencia de comandos necesarios para cargar un sistema operativo. Es decir,
es el primer registro del disco duro, el cual contiene un programa ejecutable y una tabla donde están
definidas las particiones del disco duro.

Es el primer sector físico (Cilindro 0, Cabeza 0, Sector 1) asignado a un disco rígido en un sistema.
Cada disco duro tiene un MBR, pero no todas los BIOS pueden arrancar el sistema operativo desde
cualquiera de los discos. Cuando se arranca desde el disco rígido, el BIOS copia el contenido del MBR
en una dirección fija de la memoria para luego darle el control. Este código arrancará seguidamente el
sistema operativo, ya sea desde la primera partición primaria del disco o desde un Boot-Loader o
cargador, algo más complejo pero que permite cargar el sistema desde cualquier partición.

Herramientas para gestión de particiones:

Linux permite elegir entre distintas herramientas de particionado de disco. Las opciones son:
• Disk Druid 823 - Esta es la utilidad de gestión de disco de Red Hat Linux en la instalación.
Puede crear y borrar particiones de disco, de acuerdo con los requisitos proporcionados por el
usuario, además de gestionar puntos de montaje para cada partición.

• fdisk - esta es la herramienta tradicional de particionado de disco de Linux. Mientras que es


algo más flexible que Disk Druid, fdisk asume que usted tiene alguna experiencia con el
particionado de discos, y que está cómodo con su sobria interfaz.

• Parted - La utilidad parted es un programa de libre acceso que puede modificar las dimensiones
de las particiones, crear nuevas, eliminar, mover, etc

Referencia a volúmenes lógicos


• /dev/loop0: Simulación de volumen en fichero:
– losetup /dev/loop0 fichero
• /dev/md0: RAID (metadisco) construido con discos físicos.
• /dev/vg/vl: LVM (gestión de volúmenes lógicos), para gestionar dinámicamente.

- 46 - Bull (España) S.A


18 Usuarios y grupos

Linux es un sistema multiusuario por lo que es necesario la administración (segura) de los distintos
usuarios que van a hacer uso de los recursos del sistema. De momento no vamos a dar grandes
nociones de seguridad, pero sí una introducción a los tipos de usuarios y qué privilegios deben tener.

Dentro de un sistema existen al menos 3 tipos de usuarios.

• Usuarios normales con más o menos privilegios que harán uso de los recursos del sistema.
Son generalmente inexpertos y propensos a causar problemas. Simplemente deben poder usar
algunos programas y disponer de un directorio de trabajo.

• Usuarios de Sistema son aquellos encargados de los demonios del sistema, recordemos que
para Linux todo es un fichero, el cual tiene un dueño y ese dueño tiene privilegios sobre él. Así,
es necesario que algún usuario del sistema posea los procesos de los demonios, como
veremos más adelante.

Resumiendo, es necesario que para algunos servicios del sistema se creen usuarios
(generalmente para demonios). Como puede ser el caso de Mail, irc... Estos usuarios tendrán
los privilegios necesarios para poder hacer su tarea, gestionar estos usuarios es de gran
importancia. No obstante, este tipo de usuarios no necesita que se le asigne un shell, puesto
que simplemente poseerán los demonios, pero no será necesario que hagan login en el
sistema.

• ROOT Este es dios ;-) Como ya habéis leído en capítulos anteriores cuidado con lo que se hace
al entrar en el sistema como root. Él lo puede todo, en principio no hay restricciones para ÉL
(aunque algunos programas nos avisarán de que estamos haciendo una auténtica burrada
desde el punto de vista de la seguridad).

Además del criterio anterior, existe un criterio secundario para clasificar a los usuarios de un sistema.
Ya vamos conociendo la tendencia de los UNIX y Linux, primero, por hacer que casi todo sea un
fichero, y segundo, por hacer que absolutamente todo tenga un dueño (como iremos descubriendo a
medida que usamos el sistema, nada se deja al azar en este aspecto), incluidos los procesos que se
están ejecutando en el sistema. Otro concepto que lleva a esta segunda clasificación es, el de los
usuarios de los servicios del host. Este tipo de usuarios simplemente accede remotamente a algunos
servicios de nuestra máquina, tales como correo-electrónico o FTP. Esto nos lleva a definir:

• Usuarios de login. Estos primeros, pueden hacer login en el sistema y usar una shell en él. Es
decir, tienen una shell válida de inicio (como se indica más abajo), generalmente, /bin/bash.

• Usuarios sin login. Este tipo de usuarios, bien son usuarios de sistema, o bien usuarios de los
servicios del host. En ambos casos no pueden hacer login en el sistema directamente ni usar
un shell. En otras palabras, no tienen asignado un shell válido. Su misión, es "poseer" algunos
archivos y directorios del sistema, y manejarlos restringidamente a través de algunos
programas (el servidor FTP, el servidor de correo electrónico, etc. darán a los usuarios de los
servicios del host los privilegios suficientes: almacenar mensajes, etc.). En el caso de los
usuarios de sistema, poseerán además algunos procesos (en el capítulo de procesos
aprenderemos más acerca de este sub-tipo especial de usuarios).

- 47 - Bull (España) S.A


Administración de Usuarios
La administración de usuarios se realiza en todas las distribuciones de manera muy parecida, dada la
herencia UNIX, aunque en el fondo todas hacen lo mismo. Según la política que lleven lo pueden
realizar de una manera u otra, por lo que aquí veremos la forma la forma interna de trabajar de los
programas a la hora de añadir o quitar usuarios, y al final expondremos ejemplos concretos de las
distros más conocidas.

¿Cómo añadir un usuario al sistema? Hay que seguir una serie de pasos que relatamos a continuación.
Pero antes veremos la estructura de los archivos que vamos a tocar.

• /etc/password - Archivo que mantiene la base de datos de los usuarios del sistema y tiene la
siguiente forma:

nombre_de_usuario:password(si es shadow será x):uid:gid:comentario:home_del_usuario:shell

Estos campos son:

o Nombre de Usuario - Es el nombre con el que entrará en el sistema.

o Password - La palabra de paso necesaria para entrar (cifrada). Si nuestro sistema usa
shadow (explicado después), este campo será una x

o UID - (User ID) Número que lo identifica en el sistema, recordemos que los
ordenadores se llevan mejor con los números.

o GID - (Group ID) Número que identifica al grupo principal al que pertenece el usuario.

o Comentario - Opcional, si es necesario aclarar algo, esto solo es para el administrador,


pues el sistema no lo usa.

o home_del_usuario - Ruta absoluta del directorio de trabajo del usuario.

o Shell - Intérprete de comandos del usuario, que será el que use inmediatamente
después de entrar en el sistema, por defecto es /bin/bash. Para usuarios sin login,
aunque puede que ahora no lo necesites, la shell no válida típica para poner en este
campo es /bin/false.

• /etc/group - Archivo de los grupos del sistema; de su administración y uso hablaremos en el


siguiente apartado. El archivo tiene la siguiente estructura:

nombre_grupo:password:GID:lista_usuarios

o Nombre del Grupo - Por defecto con los comandos habituales se crea un grupo con el
mismo nombre que el usuario creado, aunque pueden existir otros grupos con nombres
específicos.

o password - Se usa para dar a una serie de individuos un mismo directorio con una
cuenta común.

o GID - (Group ID) Número de Identificación en el Sistema del grupo.

o lista de usuarios que pertenecen al grupo, separados por comas.

• /etc/shadow - Para sistemas que usen shadow, que no es más que una medida de seguridad.
Los sistemas que no usan shadow guardan el password en /etc/passwd pero este archivo tiene
la peculiaridad de que debe ser legible por todo el mundo, si no, no podría ni hacerse un ls.
Este archivo podría caer en manos de un usuario ilegítimo y este ejercer técnicas de crackeo

- 48 - Bull (España) S.A


sobre las claves. Como solución del problema lo que se hace es almacenar todos los datos de
los usuarios en el /etc/password menos sus contraseñas; que se almacenan en /etc/shadow, el
cual sí tiene restringidos los permisos y no es accesible por los usuarios normales.

usuario:password:días del último cambio: días antes del cambio:Dias después del cambio:
tiempo de aviso:dias antes de la inhabilitación: periodo que lleva caducado:reservado:

o Usuario - Nombre del usuario

o password - Aquí sí, es el password cifrado.

o Tiempo del último cambio de password - Pero el tiempo cuenta desde el 1 de enero de
1970, comienzo de la era UNIX.

o Días antes del cambio - Periodo (en días) donde el password debe ser cambiado.

o Dias después del cambio - En los días después donde debe ser cambiado.

o Tiempo del aviso - Periodo en el que el sistema tiene que avisar de la necesidad del
cambio.

o Inhabilitación - Días antes de la inhabilitacion de la cuenta.

o Periodo caducado - Días desde el 1 de enero de 1970 en el que la cuenta está


deshabilitada.

o Campo reservado

Comandos
who/whoami/id  (muestra información de usuarios)
su/sudo  (cambia de usuario o privilegios)

Gestión de Usuarios:

● adduser (crear usuarios)


● usermod (modificar usuarios)
● deluser (eliminar usuarios)

Gestión de Grupos:

● addgroup (añade grupo o usuario a grupo)


● groupmod (modifica grupo)
● delgroup (elimina grupo o usuario de grupo)

De la misma manera que puede utilizar herramientas como useradd o groupadd para crear un nuevo
usuario desde un intérprete de comandos de la shell, una manera bastante conocida de manejar
usuarios y grupos en Red Hat Linux es a través de redhat-config-users.

- 49 - Bull (España) S.A


Ficheros de usuario

.bash_history
Guarda los últimos 500 comandos usados en Bash Shell .

.bash_logout
Scripts usados al desconectar la sesión bash un usuario.

.bash_profile
Scrips de inicio par bash shell y configuración de variables y alias.Al iniciar session un usuario con bash
shell se ejecuta este fichero, y si no se encuentra se busca .bash_profile, si tampoco se encuetra se
intenta con .bash_login. Y si este tampoco se ejecuta .profile.

.bashrc
Script que se ejecuta siempre al iniciar bash shell.

.login
Se ejecuta con cualquier inicio.

.logout
Se ejecuta al desconectar sesión de usuario.

.profile
Se ponen la variables de entorno por defecto residentes en /etc/profile.

.xinitrc
Se ejecuta al iniciar el entorno gráfico.

.xsession
Se ejecuta al abrir cualquier Xterm, o sesión de comandos en entorno gráfico.

- 50 - Bull (España) S.A


19 Network File System

NFS (Network File System) permite a las máquinas montar particiones en un sistema remoto en
concreto y usarlas como si estuvieran en el sistema de archivos local. Esto permite centralizar archivos
en una localización, mientras se permite su acceso continuo a los usuarios autorizados.

Hay dos versiones de NFS actualmente en uso. La versión 2 de NFS (NFSv2), que tiene varios años, es
ampliamente soportada por muchos sistemas operativos. La versión 3 (NFSv3) tiene más
características, incluyendo tamaño variable del gestor de archivos y una mejor información de errores.
Red Hat Linux soporta tanto NFSv2 como NFSv3, y usa NFSv3 por defecto cuando se conecta a un
servidor que lo soporta.

Metodología
Linux usa una combinación de soporte a nivel de kernel y demonios en continua ejecución para
proporcionar la compartición de archivos NFS, sin embargo, el soporte NFS debe estar activo en el
kernel de Linux para que funcione. NFS usa Remote Procedure Calls (RPC) para enrutar peticiones
entre clientes y servidores, implicando que el servicio portmap debe estar disponible y activo en los
niveles de ejecución adecuados para que la comunicación NFS funcione. Trabajando con portmap, los
procesos siguientes se aseguran que una conexión particular NFS esté permitida y pueda proceder sin
error:

• rpc.mountd — El proceso que recibe la petición de montaje desde un cliente NFS y chequea
para mirar si coincide con un sistema de archivos actualmente exportado.

• rpc.nfsd — El proceso que implementa los componentes del espacio del usuario del servicio
NFS. Trabaja con el kernel Linux para satisfacer las demandas dinámicas de clientes NFS,
tales como proporcionar procesos adicionales del servidor para que los clientes NFS lo utilicen.

• rpc.lockd — Un demonio innecesario en los kernels modernos. El bloqueo de archivos NFS


ahora lo hace el kernel. Está incluido en el paquete nfs-utils para usuarios de versiones
antiguas del kernel que no incluyen esta capacidad por defecto.

• rpc.statd — Implementa el protocolo RPC Network Status Monitor (NSM). Esto proporciona
notificación de reinicio cuando un servidor NFS es reiniciado luego de haber sido apagado
abruptamente.

• rpc.rquotad — Un servidor RPC que proporciona información de cuotas de usuarios a usuarios


remotos.

Con NFS, la autentificación sólo se produce cuando el cliente intenta montar un sistema de archivos
remoto. Para limitar el acceso, el servidor NFS utiliza en primer lugar envolturas TCP (TCP wrappers).
Estas envolturas leen los archivos /etc/hosts.allow y /etc/hosts.deny para determinar si a un cliente
particular le debe ser explícitamente permitido o denegado su acceso al NFS.

- 51 - Bull (España) S.A


20 SWAP

Swap, o "espacio de intercambio" es un archivo o una partición del disco duro, que se utiliza como
memoria de respaldo. Es utilizada en los caso en que la memoria física se a agotado, cumpliendo la
función de almacenar procesos hasta que la memoria RAM los pueda ejecutar.

La función principal es mover programas poco activos o que no necesitan grandes cantidades de
memoria física y pasarlos a la memoria de intercambio y así liberar la RAM para grandes programas
que la necesitan. Mientras no sea necesario el proceso dentro de la swap puede quedarse ahí para
mantener liberada la memoria principal.

El equivalente dentro de Windows es la Memoria virtual. En el caso de este sistema, es un archivo, pero
en Linux es una partición, un disco físico independiente o un fichero.

Procedimientos

Activar una partición swap adicional


Si el disco duro ha sido reparticionado y ya se cuenta con una partición Swap sin activar, o bien durante
el procesos de instalación de Linux se específico más de una partición Swap, puede seguirse el
siguiente procedimiento (como super-usuario) para utilizarla:

1. Preparar la partición utilizando la siguiente línea de comando:


/sbin/mkswap -c [dispositivo]
Ejemplo: /sbin/mkswap -c /dev/hda8

Esto da una salida similar a la siguiente:


Settting up Swapspace version 0, size=131507616 bytes

2. Utilizar el comando sync.

3. Activar la partición:
swapon [dispositivo]
Ejemplo: /sbin/swapon /dev/hda8

4. Utilizar el comando free para confirmar la disponibilidad del espacio swap total en el
sistema.

5. Si se desea que esta partición se monte automáticamente en el arranque del sistema,


debe agregarse la línea correspondiente en el archivo /etc/fstab del siguiente modo:
[partición] swap swap defaults 0 0
Ejemplo: /dev/hda8 swap swap defaults 0 0

- 52 - Bull (España) S.A


Activar un archivo de intercambio de forma temporal
Este método no requiere reparticionar el disco duro y que cualquier usuario puede utilizarlo sin mayor
problema. Idóneo para usuarios poco experimentados, para usuarios que no desean reparticionar el
disco duro o que solo requieren de espacio Swap adicional ocasional o circunstancialmente.

1. Crear el directorio en donde se albergará el archivo de intercambio:


mkdir /swap

2. Utilizar la siguiente línea de comando:


dd if=/dev/zero of=/swap bs=1024 count=10240
Esto crea un archivo de intercambio de 10 MB. bs sirve para especificar el tamaño de los
bloques (1024 bytes = 1 Kb), y count específica cuantos de estos bloques se utilizaran.

3. Hay que decirle al sistema acerca de este archivo de intercambio y se hace del
siguiente modo:
/sbin/mkswap -c /swap 10240

4. utilizar el comando sync.

5. Activar el archivo de intercambio:


/sbin/swapon /swap

6. Utilizar el comando free para confirmar la disponibilidad del espacio swap total en el
sistema.

- 53 - Bull (España) S.A


21 Sistema de LOGs

El sistema de logs de Linux (log = registro), es un mecanismo estándar que se encarga de recoger los
mensajes generados por los programas, aplicaciones y demonios y enviarlos a un destino predefinido.
En cada mensaje consta la fuente (el programa que generó el mensaje), la prioridad (nivel de
importancia del mensaje), la fecha y la hora.

Hay varios niveles de prioridad de los mensajes (de menos a más prioritario: debug, info, notice,
warning, warn, err, error, crit, alert, emerg y panic) y varios tipos de mensajes (auth, authpriv, cron,
daemon, kern, lpr, mail, mark, news, security, syslog, user, uucp y local0-local7).

Cómo funciona el sistema de logs


• El sistema de logs arranca con el script /etc/init.d/sysklogd, y tiene dos demonios:

o syslogd: gestiona los logs del sistema. Distribuye los mensajes a archivos, tuberías,
destinos remotos, terminales o usuarios, usando las indicaciones especificadas en su
archivo de configuración /etc/syslog.conf, donde se indica qué se loguea y a dónde se
envían estos logs.

o klogd: se encarga de los logs del kernel. Lo normal es que klogd envíe sus mensajes a
syslogd pero no siempre es así, sobre todo en los eventos de alta prioridad, que salen
directamente por pantalla.

• Los logs se guardan en archivos ubicados en el directorio /var/log, aunque muchos programas
manejan sus propios logs y los guardan en /var/log/<programa>. Además, es posible especificar
múltiples destinos para un mismo mensaje. Algunos de los log más importantes son:

o /var/log/messages: aquí encontraremos los logs que llegan con prioridad info
(información), notice (notificación) o warn (aviso).

o /var/log/kern.log: aquí se almacenan los logs del kernel, generados por klogd.

o /var/log/auth.log: en este log se registran los login en el sistema, las veces que
hacemos su, etc. Los intentos fallidos se registran en líneas con información del tipo
invalid password o authentication failure.

o /var/log/dmesg: en este archivo se almacena la información que genera el kernel


durante el arranque del sistema. Podemos ver su contenido con el comando dmesg:
$ dmesg
• Los archivos de log crecen y con el tiempo se pueden volver muy extensos, pero no tenemos
que preocuparnos porque en /etc/cron.daily (tareas que se ejecutan cada día) está el script
/etc/cron.daily/logrotate, (cuyo archivo de configuración es /etc/logrotate.conf), que se encarga
de comprimirlos y aplicar una rotación de archivos, añadiéndoles la extensión .1.gz, .2.gz, etc.,
volviendo a crear uno vacío (cuanto mayor sea el número más antiguo será el log).

- 54 - Bull (España) S.A


Monitorizar los logs

• Es muy habitual monitorizar en una consola el archivo /var/log/messages:


$ tail -f /var/log/messages

Principales ficheros de log en un sistema Linux

• /var/log/message: General message and system releated stuff

• /var/log/auth.log: Authenication logs

• /var/log/kern.log: Kernel logs

• /var/log/cron.log: Crond logs

• /var/log/maillog: Mail logs

• /var/log/qmail/ : Qmail log directory (more files inside this directory)

• /var/log/httpd/: Apache access and error logs directory

• /var/log/lighttpd: Lighttpd access and error logs directory

• /var/log/boot.log : System boot log

• /var/log/mysqld.log: MySQL database server log file

• /var/log/secure: Authentication log

• /var/log/utmp or /var/log/wtmp : Login records file

• /var/log/yum.log: Yum log files

- 55 - Bull (España) S.A


22 Tareas Programadas

Crond
Cron es una utilidad, presente en la mayoría de sistemas Linux y Unix, que permite ejecutar comandos
o procesos con una frecuencia determinada.

Esto se puede aplicar, por ejemplo, a hacer backups de una carpeta del sistema todos los días a las 12
de la noche, comprobar el tamaño de un directorio o el espacio libre en disco de los usuarios del
sistema y avisar cuando está a punto de agotarse, ejecutar un revisor de correo como fetchmail o otro.

Funcionamiento
Cron se compone principalmente de 2 elementos: cron, el Demonio, y el archivo de configuración
/etc/crontab.

Si pretendemos añadir, quitar o modificar las tareas que ejecutará cron, con el siguiente comando:

$ crontab -e

Se abrirá un editor y podremos cambiar nuestras tareas en el cron. La diferencia entre editar el archivo
/etc/crontab directamente y utilizar el comando crontab -e radica en que con este último no hacen falta
privilegios de root “Usuarios” ya que estaremos editando un archivo de configuración específico para
nuestro usuario. Para editarlo hay una forma definida en la que cada línea tiene:

minuto hora dia_del_mes mes dia_de_la_semana comando

Y estos son los posibles valores para cada elemento:

Minuto Entre 0 y 59

Hora Entre 0 y 23

Dia del mes Entre 1 y 31

Mes Entre 1 y 12

Dia semana Entre 0 y 6. El 0 corresponde al Domingo, el 1 al Lunes y así hasta el 6

Comando Se trata del comando o comandos a ejecutar.

- 56 - Bull (España) S.A


Si no quieres especificar un valor concreto para alguna de las variables, se debe colocar el signo * el
cual significa algo así como "todos" los valores. Si lo que quieres es especificar un rango, has de usar el
signo - de este modo: 0-5 ó 6-9 o similar. Si por el contrario deseas indicar varios valores por separado
puedes hacer uso de las comas: 4,7,9,15 . Y si quieres excluir algún valor se usa / : 0-5/4 de modo que
se ejecutará de 0 a 5 excepto el 4 (depende de si te refieres a minutos, horas, dias de la semana...). El
signo / también puede ser usado para determinar intervalos, por ejemplo cada 15 minutos: */15.

Otro aspecto a tener en cuenta es que si el comando no está en el PATH deberá ser especificado con
su ruta completa. Veamos algunos ejemplos:

0,5,10,15,20,25,30,35,40,45,50,55 * * * * fetchmail

*/5 * * * * fetchmail

En estos ejemplos, se ejecutará el programa fetchmail todos los días del mes, todos los días de la
semana, todos los meses, cada hora, cada 5 minutos.

0 4 * * * fetchmail

El comando se ejecutará todos los días a las 4:00 de la mañana.

0 12 * * 3 shutdown -h now

Con esta línea, el computador se apagará todos los Miércoles a las 12 del mediodía.

- 57 - Bull (España) S.A


23 Ficheros importantes

● Inicio del sistema (/etc)


hostname (nombre de la máquina)
inittab (procesos de arranque y niveles de ejecución)
fstab / mtab (información sobre sistemas de ficheros)
rc.d (servicios en el arrancar y parar del sistema)
resolv.conf (resolución de nombres)
services (servicios y puertos de red utilizados)

● Usuarios (/etc)
passwd / group (usuarios y grupos del sistema)
shadow (contraseñas cifradas)
sudoers (lista de que usuarios que pueden ejecutar qué)
ftpusers (usuarios que no pueden conectar via ftp)

● Ficheros de comunicación con el kernel (/proc/)


cpuinfo (procesador del sistema)
meminfo (memoria libre y usada del sistema)
loadavg (carga del sistema)
filesystems (sistemas de ficheros soportados por el kernel)
pci (listado de los dispositivos pci)
sys (permite modificar variables del sistema)
uptime (tiempo de funcionamiento)
version (versión del sistema)

- 58 - Bull (España) S.A


24 Entorno Gráfico

El sistema X Window
El sistema X Window (X11) es prácticamente el estándar para interfaces gráficas de usuario en Unix.
X11 es además un sistema basado en redes. Así, las aplicaciones que estén funcionando en un
ordenador pueden mostrar sus datos de salida en otro siempre que ambas máquinas estén conectadas
a través de una red. El tipo de red (LAN o Internet) es irrelevante.

XFree™ es una implementación de libre disponibilidad de servidores X para sistemas PC Unix (ver
http://www.XFree86.org). XFree sigue siendo desarrollado por programadores de todo el mundo que se
unieron en 1992 para formar el equipo XFree. De esta unión surgió en 1994 la empresa The XFree86
Project, Inc.™, cuyo objetivo es poner XFree™ al alcance de un público lo más amplio posible y
contribuir al desarrollo e investigación futuros del sistema X Window.

Para usar el hardware existente (ratón, tarjeta de vídeo, monitor, teclado) de la mejor forma posible se
puede optimizar la configuración de forma manual.

Puede encontrar información detallada sobre la configuración del sistema X Window en diversos
archivos del directorio /usr/share/doc/packages/xf86 al igual que en la correspondiente página del
manual man XF86Config.

Archivos de configuración del servidor XFree86


El servidor XFree86 es un binario ejecutable (/usr/X11R6/bin/XFree86) que carga dinámicamente
cualquier módulo de servidor X necesario en el momento de ejecución desde el directorio
/usr/X11R6/lib/modules/. Algunos de estos módulos son cargados automáticamente por el servidor,
mientras que otros son opcionales y deben ser especificados en el archivo de configuración de
XFree86.

El servidor XFree86 y los archivos de configuración asociados son almacenados en el directorio


/etc/X11/. El archivo de configuración para el servidor XFree86 es /etc/X11/XF86Config.

XF86Config
Mientras que casi nunca se necesita editar manualmente el /etc/X11/XF86Config, es muy útil conocer
sobre las varias secciones y los parámetros opcionales disponibles, especialmente cuando se estén
solucionando problemas.

Los archivos relacionados a XFree86 residen principalmente en dos ubicaciones:

/usr/X11R6/

Contiene un servidor X y algunas aplicaciones cliente así como también archivos de cabecera
X, librerías, módulos y documentación.

- 59 - Bull (España) S.A


/etc/X11/

Contiene archivos de configuración para aplicaciones cliente y servidor de X. Esto incluye


archivos de configuración para el servidor X mismo, el viejo servidor de fuentes xfs, los
gestores de display de X y muchos otros componentes base.

Es importante resaltar que el archivo de configuración para la arquitectura de fuentes basado


en Fontconfig es /etc/fonts/fonts.conf (que deja obsoleto al archivo /etc/X11/XftConfig).

- 60 - Bull (España) S.A

Вам также может понравиться