Biblia Unix
Biblia Unix
Biblia Unix
INTRODUCCION
UNIX
Antonio Villalon Huerta <[email protected]>
Febrero, 2007
The bad reputation UNIX has gotten is totally undeserved, laid on by people who dont understand,
who have not gotten in there and tried anything.
Jim Joyce
INDICE
Indice
1. INTRODUCCION
1.1. Que es un Sistema Operativo?
1.2. Historia del Sistema Unix . . .
1.3. Caractersticas de Unix . . . .
1.4. Linux . . . . . . . . . . . . . .
1.5. Nociones b
asicas . . . . . . . .
2. LA
2.1.
2.2.
2.3.
2.4.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5
5
5
6
8
9
PRIMERA SESION
Nociones previas: login y password . . .
Cambio de claves: la orden passwd . . .
Los archivos /etc/profile y .profile
Fin de una sesi
on: exit y logout . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
10
10
11
11
12
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
14
14
14
14
15
15
15
15
16
16
17
17
17
18
19
20
20
20
20
21
21
21
21
22
22
22
23
23
23
24
24
24
24
24
25
25
26
26
26
.
.
.
.
.
.
.
.
.
.
3. ORDENES
BASICAS
DE UNIX
3.1. Introducci
on . . . . . . . . . . . . .
3.2. Gesti
on de archivos y directorios .
3.2.1. ls . . . . . . . . . . . . . .
3.2.2. cd . . . . . . . . . . . . . .
3.2.3. pwd . . . . . . . . . . . . .
3.2.4. mkdir . . . . . . . . . . . .
3.2.5. touch . . . . . . . . . . . .
3.2.6. cp . . . . . . . . . . . . . .
3.2.7. mv . . . . . . . . . . . . . .
3.2.8. rm . . . . . . . . . . . . . .
3.2.9. rmdir . . . . . . . . . . . .
3.2.10. ln . . . . . . . . . . . . . .
3.2.11. chmod . . . . . . . . . . . .
3.3. Ayuda en lnea: man . . . . . . . .
3.4. Informaci
on del sistema . . . . . .
3.4.1. date . . . . . . . . . . . . .
3.4.2. uname . . . . . . . . . . . .
3.4.3. id . . . . . . . . . . . . . .
3.4.4. who . . . . . . . . . . . . .
3.4.5. w . . . . . . . . . . . . . . .
3.4.6. last . . . . . . . . . . . . .
3.4.7. ps . . . . . . . . . . . . . .
3.4.8. kill . . . . . . . . . . . . .
3.4.9. du . . . . . . . . . . . . . .
3.4.10. df . . . . . . . . . . . . . .
3.5. Tratamiento b
asico de archivos . .
3.5.1. file . . . . . . . . . . . . .
3.5.2. cat . . . . . . . . . . . . .
3.5.3. more/less . . . . . . . . .
3.6. Tratamiento avanzado de archivos
3.6.1. head . . . . . . . . . . . . .
3.6.2. tail . . . . . . . . . . . . .
3.6.3. cmp . . . . . . . . . . . . .
3.6.4. diff . . . . . . . . . . . . .
3.6.5. grep . . . . . . . . . . . . .
3.6.6. wc . . . . . . . . . . . . . .
3.6.7. sort . . . . . . . . . . . . .
3.6.8. spell . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
INDICE
3.7. Ordenes
de b
usqueda
3.7.1. find . . . . .
3.7.2. which . . . .
3.8. Otras o
rdenes . . . .
3.8.1. echo . . . . .
3.8.2. cal . . . . .
3.8.3. passwd . . .
3.8.4. clear . . . .
3.8.5. sleep . . . .
3.8.6. nohup . . . .
3.8.7. alias . . . .
3.8.8. gzip . . . . .
3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
27
27
28
28
28
28
28
28
29
29
29
30
ENTRE USUARIOS
4. COMUNICACION
4.1. Introducci
on . . . . . . . . . . . . . . . . .
4.2. La orden write . . . . . . . . . . . . . . .
4.3. La orden talk . . . . . . . . . . . . . . .
4.4. La orden mail . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
31
31
31
31
32
5. EL EDITOR DE TEXTOS vi
5.1. Introducci
on . . . . . . . . . .
5.2. Comenzando con vi . . . . .
5.3. Saliendo del editor . . . . . .
5.4. Tratamiento del texto . . . .
5.5. Otras o
rdenes de vi . . . . .
5.6. Ordenes
orientadas a lneas .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
34
34
34
35
35
36
37
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
39
39
39
39
40
41
41
42
44
44
45
47
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
48
48
49
50
50
51
52
53
54
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
INDICE
8. SEGURIDAD BASICA
DEL USUARIO
8.1. Sistemas de contrase
nas . . . . . . . . . .
8.2. Archivos setuidados y setgidados . . . . .
8.3. Privilegios de usuario . . . . . . . . . . . .
8.4. Cifrado de datos . . . . . . . . . . . . . .
8.5. Bloqueo de terminales . . . . . . . . . . .
4
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
57
57
58
59
59
60
1 INTRODUCCION
1.
1.1.
INTRODUCCION
Qu
e es un Sistema Operativo?
En un entorno inform
atico existen cuatro grandes componentes: el usuario, las aplicaciones, el
sistema operativo y el hardware. El usuario es la persona que trabaja con el ordenador, ejecutando
aplicaciones (programas) para llevar a cabo ciertas tareas: editar textos, dise
nar, navegar por
Internet. . . El hardware es la parte del entorno que podemos romper con un martillo: la memoria,
el disco duro, el lector de CDROMs, la placa base. . . Y el sistema operativo? El sistema operativo es simplemente un trozo de c
odigo (un programa, aunque no una aplicaci
on) que act
ua como
intermediario entre el usuario y sus aplicaciones y el hardware de un computador, tal y como se
muestra en la figura 1.
Usuario
?
Aplicaciones
?
S.O.
?
Hardware
Figura 1: Capas de un entorno inform
atico.
El prop
osito de un sistema operativo (a partir de ahora lo llamaremos S.O) es proporcionar un entorno en el cual el usuario pueda ejecutar programas de forma c
omoda y eficiente. Un S.O. no lleva a
cabo ninguna funci
on u
til por s mismo, sino que s
olo se limita a proporcionar un entorno donde los
programas puedan desarrollar sus trabajos u
tiles de cara al usuario; el S.O. controla la ejecuci
on de
tales programas para poder prevenir los errores y el uso inadecuado del ordenador: por este motivo,
se ha de estar ejecutando permanentemente en la computadora (al menos el n
ucleo o kernel del S.O).
Ejemplos de SS.OO. son OS/390, Unix, Windows NT, Windows 95/98/2000. . . (Windows 3.1 no es
un S.O., s
olo un entorno gr
afico), OS/2 o VMS. Cada uno suele aplicarse en un cierto campo y,
aunque ninguno es perfecto, las diferencias de calidad entre ellos pueden ser abismales, sobre todo
si hablamos de los operativos de sobremesa, como Windows 9, frente a sistemas serios.
1.2.
1 INTRODUCCION
lo bastante c
omodo y eficiente como para trasladarlo a una m
aquina m
as potente (un PDP-11-20,
en 1970). Tres a
nos m
as tarde, Thompson y Ritchie reescribieron el n
ucleo del sistema operativo
en C (anteriormente lo estaba en lenguaje ensamblador), lo cual di
o a Unix su forma esencial, tal
y como lo conocemos hoy en da.
Poco despues de tener el n
ucleo del sistema escrito en un lenguaje de alto nivel, Unix fue introduciendose r
apidamente en las universidades, con fines educacionales, hasta llegar a su uso comercial
en laboratorios, centros de procesamiento de datos, centros de operaciones en compa
nas telef
onicas
estadounidenses, etc. La disponibilidad p
ublica del c
odigo fuente del sistema, su portabilidad y su
potencia fueron factores claves en esta r
apida expansi
on de Unix.
En estos primeros tiempos de Unix (Versi
on 6), el c
odigo fuente del sistema era f
acil de conseguir. Sin embargo, a partir de la Versi
on 7, el autentico abuelo de los sistemas Unix modernos,
AT&T se comenz
o a dar cuenta que tena entre manos un producto comercial rentable, por lo que
se prohibi
o el estudio del c
odigo fuente para no hacer peligrar la versi
on comercial.
A finales de 1978, despues de distribuir la Versi
on 7, la responsabilidad y el control administrativo
de Unix pas
o a manos de USG (Unix Support Group), integrado en AT&T, que sac
o al mercado
Unix System III (1982) y posteriormente el famoso System IV (1983), hasta llegar a Unix System
V Release 4 (SVR4), uno de los sistemas m
as extendidos en la actualidad, y sus posteriores modificaciones.
Sin embargo, aunque AT&T deseaba tener el control absoluto sobre las distribuciones de Unix,
debido a la potencia de este sistema, muchos grupos de desarrollo ajenos a la compa
na han trabajado en la mejora de Unix. Uno de estos grupos, posiblemente el que m
as influencia ha tenido, ha
sido la Universidad de California en Berkeley, que desarroll
o el sistema Unix hasta alcanzar 3BSD
(Berkeley Software Distribution), a principios de los 80 (tomado como est
andar en el Departamento
de Defensa estadounidense y su red DARPANet), y que hoy sigue desarrollando software como Unix
4BSD en sus diferentes versiones.
Otras compa
nas que defienden o han defendido sus propias versiones de Unix pueden ser Microsoft
(Xenix), DEC (Ultrix), IBM (AIX) o Sun Microsystems (Solaris). Cada una de ellas desarrolla diferentes sistemas; sin embargo, las caractersticas b
asicas son comunes en todos, por lo que conociendo
cualquier tipo de Unix mnimamente no es difcil poder dominar otro tipo en poco tiempo. En la
tabla 1 se presenta un resumen de los principales clones de Unix y la compa
na que est
a detr
as de
cada uno de ellos.
1.3.
Caractersticas de Unix
1 INTRODUCCION
Nombre
386BSD
AIX
Artix
A/UX
BSD
BSD-Lite
BSD/386
Coherent
Dynix
FreeBSD
HP-UX
Hurd (GNU)
IC-DOS
Interactive Unix
Irix
Linux
Lynx OS
Mach
Minix
MKS Toolkit
NetBSD
Nextstep
OSF/1
PC Xenix
QNX
RTX/386
SCO Unix
Solaris
SunOS
System V Unix
Ultrix
Unicos
Unixware
V/386
V/AT
Xenix
Compa
na u organizaci
on
Gratis en Internet
IBM
Action Inst.
Apple
University of California at Berkeley
University of California at Berkeley
Berkeley Software Design (BSDI)
Mark Williams Company
Sequent
Gratis en Internet
Hewlett-Packard
Free Software Foundation
Action Inst.
Sun Microsystems
Silicon Graphics
Gratis en Internet
Lynx RT Systems
Carnegie-Mellon University
Distribuido con el libro de Tanenbaum (Bibliografa)
Mortice Kern Systems
Gratis en Internet
Next
Digital Equipment Corporation (DEC)
IBM
QNX Software Systems
VenturCom
Santa Cruz Operation
Sun Microsystems
Sun Microsystems
Varias versiones para PC
Digital Equipment Corporation (DEC)
Cray Research
Novell
Microport
Microport
Microsoft
Cuadro 1: Flavours de Unix
1 INTRODUCCION
del sistema operativo el encargado de otorgar el control de los recursos a cada programa en
ejecuci
on: un proceso se ejecuta hasta que el sistema operativo le cede el paso a otro.
Multiusuario.
La capacidad multiusuario de Unix permite a m
as de un usuario ejecutar simult
aneamente
una o varias aplicaciones (incluso la misma) sobre una misma m
aquina; esto es posible gracias
a la capacidad de multitarea del operativo, que es capaz de repartir el tiempo de procesador
entre diferentes procesos en ejecuci
on. Unix gestiona y controla a sus usuarios, determinando
quien y cu
ando puede conectarse al sistema y, una vez dentro del mismo, que puede hacer y
a que recursos tiene acceso.
Shell programable.
El shell o interprete de o
rdenes de un sistema operativo es el proceso que sirve de interfaz
entre el usuario y el n
ucleo (kernel) del operativo; en el caso de Unix, los diferentes shells
existentes (hablaremos de ellos m
as adelante) son programables, ya que entienden un lenguaje denominado shellscript y que se conforma con todas las o
rdenes del operativo junto a
estructuras de control, como los bucles. La programaci
on en shellscript puede resultar muy
compleja y permite un elevado control del sistema, facilitando por ejemplo la automatizaci
on
de tareas costosas, como las copias de seguridad.
Independencia de dispositivos.
El sistema operativo Unix trata a cualquier elemento hardware de la m
aquina como un sencillo
fichero, de forma que para acceder a un dispositivo el usuario s
olo ha de conocer el nombre
del archivo que lo representa. Este acceso es independiente del tipo y modelo del dispositivo,
y se realiza mediante las primitivas de acceso a ficheros habituales (open(), seek(), read(),
write(). . . ). Por ejemplo, para acceder a un m
odem, las aplicaciones y por tanto, los
usuarios finales utilizar
an estas primitivas independientemente de la marca y modelo del
mismo, de forma que si en un momento dado el hardware cambia (se compra un m
odem mejor)
el administrador se encargar
a de enlazar un nuevo controlador en el n
ucleo, y a partir de ese
momento el cambio ser
a completamente transparente al usuario y sus aplicaciones.
1.4.
Linux
1 INTRODUCCION
1.5.
Nociones b
asicas
1 Realmente, el t
ermino servidor es mucho m
as amplio, pero para nosotros ser
a simplemente, al menos de momento, el sistema Unix remoto.
2 LA PRIMERA SESION
2.
2.1.
10
LA PRIMERA SESION
Nociones previas: login y password
Como ya hemos comentado en el captulo anterior, Unix es un sistema operativo multiusuario; en todos los entornos que poseen esta capacidad debe existir alguna manera de que el sistema
mantenga un control de sus usuarios y las peticiones que realizan: esto se consigue mediante lo que
se conoce como sesi
on, que no es m
as que el proceso existente desde que el usuario se identifica y
autentica ante el sistema hasta que sale del mismo.
Para trabajar en un sistema Unix cada usuario debe iniciar una sesi
on; para ello es necesario que el
usuario tenga asociado un nombre de acceso al sistema (conocido y otorgado por el administrador)
denominado login, y una contrase
na (privada y s
olo conocida por el propio usuario) denominada
password. As, cada vez que conectemos a una m
aquina Unix, ya sea mediante una terminal serie o
mediante una terminal remota (por ejemplo utilizando telnet o ssh), lo primero que el sistema va
a hacer es pedirnos nuestro login y nuestro password, para verificar que realmente somos nosotros
los que nos disponemos a iniciar la sesi
on y no otra persona. Esta clave personal, que trataremos
m
as adelante, no aparecer
a en pantalla al escribirla, por cuestiones obvias de seguridad (tambien
por motivos obvios, no se escribir
an asteriscos ni nada similar, a diferencia de lo que sucede en los
mecanismos de autenticaci
on de otros sistemas operativos).
Tras haber verificado nuestra identidad, se nos permitir
a el acceso al sistema; despues de darnos una cierta informaci
on, como la hora y el lugar desde donde nos conectamos la u
ltima vez o
si tenemos o no correo electr
onico, la m
aquina quedar
a a la espera de que nosotros empecemos a
trabajar introduciendole o
rdenes. Para ello, nos mostrar
a el prompt de nuestro interprete de o
rdenes, tambien conocido como smbolo del sistema, y ya estaremos listos para comenzar a introducir
instrucciones.
En la siguiente figura vemos un ejemplo real de todos estos detalles:
#####
#
#
#
#
#####
#
#
#
#
####
#
#
#
#
#
#
#
#
####
####
#
####
#
#
#
####
#
#
#
#
#
#
4 01:01:27 on tty1
#####
#
#
#
#
#
##
# #
#
#
######
#
#
#
#
2 LA PRIMERA SESION
11
Una vez hemos accedido al sistema, parece obvio que nos encontramos en un determinado directorio
del mismo; este directorio de entrada es definido por el administrador de la m
aquina para cada
uno de sus usuarios, y se almacena en la variable de entorno $HOME, por lo que nos referiremos
habitualmente a el como el directorio $HOME. Generalmente varios o todos los usuarios comparten
el padre de sus directorios de entrada (es decir, todos cuelgan del mismo sitio), y este suele
ser de la forma /home/cunixXX/, /export/home/cunixXX/ o similar, aunque nada impide que el
administrador elija otros directorios para sus usuarios. Podemos comprobar cual es nuestro $HOME
mediante la orden pwd, nada m
as acceder a la m
aquina:
rosita:~$ pwd
/home/toni
rosita:~$
2.2.
2.3.
Cada usuario de un sistema Unix tiene definido un shell por defecto, un interprete de o
rdenes
que ser
a el programa que le va a servir de interfaz para con el sistema operativo; con el shell m
as
est
andar de Unix, denominado Bourne Shell (sh), as como con su versi
on mejorada (Bourne Again
Shell, bash), utilizada por defecto en Linux, tenemos la posibilidad de definir un fichero que se
ejecute cada vez que conectemos a la m
aquina. Dicho archivo se denomina .profile y est
a situado
en el directorio $HOME de cada uno de nosotros (recordemos, en el directorio en el cual entramos
tras teclear el login y la contrase
na, por ejemplo /home/cunixXX/).
Simplemente creando un archivo con este nombre el shell tratar
a de interpretarlo como un proceso por lotes cada vez que entremos en el sistema; no hemos de otorgarle ning
un permiso especial
2 LA PRIMERA SESION
12
ni definir ning
un atributo sobre el, s
olo llamarle .profile. As, tendremos un proceso por lotes
que se ejecutar
a cada vez que conectemos a la m
aquina, de una forma relativamente similar al
autoexec.bat de MS-DOS; en el podemos introducir todos los mandatos cuyo resultado queremos
obtener nada m
as entrar en nuestra cuenta. Por ejemplo, si siempre que conectemos queremos ver
la fecha y la hora en la que nos encontramos, en el archivo .profile incluiremos una lnea con la
instrucci
on date; si adem
as queremos ver quien est
a conectado en esos momentos en la m
aquina,
incluiremos la orden who. Tambien lo podemos utilizar para recordar cosas que tenemos que hacer,
mediante la orden echo (por ejemplo, podemos teclear una lnea con la orden echo HABLAR CON
EL ADMINISTRADOR): de esta forma, cada vez que entremos en nuestra cuenta nos aparecer
a tal
mensaje en pantalla. . .
En Unix es necesario distinguir entre conectar al sistema y encender el sistema; una m
aquina
Unix posiblemente se arranque muy pocas veces (recordemos que estamos ante un sistema operativo
preparado para funcionar de forma ininterrumpida durante largos periodos de tiempo, a diferencia
de las distintas versiones de Windows), y cuando esto suceda se ejecutar
an unos programas que no
vamos a ver aqu, ya que su configuraci
on corresponde al administrador de la m
aquina. Frente al
arranque del sistema, los usuarios inician sesi
on (conectan) en muchas ocasiones, y es en cada una
de ellas cuando se ejecutan los ficheros como .profile, del que estamos hablando.
En el archivo .profile podremos tener tantas intrucciones (de las muchas que veremos posteriormente) como deseemos; s
olo hemos de recordar que en una lnea s
olo hemos de llamar a una
orden (no vamos a ver aqu los separadores de o
rdenes, como &&, || o ;), y que las lneas que
comiencen por el smbolo # son comentarios, que ser
an ignorados.
Veamos un posible ejemplo de nuestro archivo .profile:
rosita:~$ cat .profile
date
# Nos indica dia y hora
echo "Bienvenido de nuevo"
# Muestra este mensaje en pantalla
#who
# Ignorado, ya que la linea comienza por #
fortune
# Frase, comentario o idea famosa o graciosa
rosita:~$
Otro archivo equivalente al .profile es el /etc/profile. Su funci
on es an
aloga, con la diferencia
de que en /etc/profile se especifican o
rdenes y variables comunes a todos los usuarios. Como este
archivo es administrado por el root del sistema, no entraremos en m
as detalles con el.
2.4.
2 LA PRIMERA SESION
13
definir en el archivo .logout, mientras que el equivalente al .profile en este caso se denominara
.cshrc. Ahondaremos sobre estas cuestiones cuando estudiemos los diferentes interpretes de mandatos disponibles en Unix.
Para finalizar, hay que resaltar que tanto logout como exit son instrucciones internas del sistema, es decir, no encontraremos ning
un ejecutable en nuestro $PATH que se denomine exit o
logout. Aunque existen diferencias entre ambas o
rdenes, nosotros no las vamos a contemplar (no
son en absoluto triviales), y podremos finalizar una sesi
on utilizando cualquiera de ellas.
ORDENES
BASICAS
DE UNIX
14
ORDENES
BASICAS
DE UNIX
3.
3.1.
Introducci
on
No vamos a entrar con mucho detalle en todas las posibilidades y opciones de cada instrucci
on,
debido a que los par
ametros de las o
rdenes pueden variar algo entre clones de Unix (por ejemplo,
lo que en Linux puede ser la orden ps -xua, en HP-UX el formato es ps -ef), y que la potencia
de Unix y la gran variedad de opciones de cada orden hacen imposible tratar con detalle cada uno
de los posibles par
ametros que se pueden dar a un mandato.
En caso de duda sobre una opci
on determinada, es conveniente consultar el manual online, tecleando simplemente man <orden>; en estas p
aginas encontraremos todas las caractersticas de la
orden para el sistema en que nos encontremos.
Aqu se presentan todas las instrucciones que estudiaremos, con mayor o menor profundidad, a
lo largo del curso; de cada una de ellas se intenta buscar un equivalente en MSDOS, ya que sin
duda es un entorno (no le llamaremos sistema operativo) mucho m
as familiar para el alumno que
Unix. La presentaci
on de estas o
rdenes Unix sigue una ordenaci
on l
ogica, no alfabetica, dividida en
diferentes apartados en funci
on del uso que se da a cada una de ellas. Como veremos, el sistema
operativo Unix nos ofrece una gran cantidad de instrucciones orientadas al trabajo con todo tipo
de ficheros, en especial con los de texto. Esto no es casual: se suele decir (y no es una exageraci
on)
que en un sistema Unix habitual todo son archivos, desde la memoria fsica del ordenador hasta las
configuraciones de las impresoras, pasando por discos duros, terminales, ratones, etc.
3.2.
Gesti
on de archivos y directorios
3.2.1.
ls
Lista el contenido de directorios del sistema. Existen infinidad de opciones para la orden ls
(-a, -l, -d, -r,. . . ) que a su vez se pueden combinar de muchas formas, y por supuesto varan entre
Unices, por lo que lo m
as adecuado para conocer las opciones b
asicas es consultar el manual on-line
(man ls). Sin embargo, de todas estas, las que podramos considerar m
as comunes son:
-l (long): Formato de salida largo, con m
as informaci
on que utilizando un listado normal.
-a (all): Se muestran tambien archivos y directorios ocultos.
-R (recursive): Lista recursivamente los subdirectorios.
Por ejemplo, un resultado tpico obtenido al ejecutar ls con una opci
on determinada puede ser el
siguiente:
rosita:~/programas/prueba$ ls -l
total 5
drwxr-xr-x
2 toni
users
drwxr-xr-x
2 toni
users
drwxr-xr-x
2 toni
users
-rwxr-xr-x
2 toni
users
-rw-r--r-1 toni
users
rosita:~/programas/prueba$
1024
1024
1024
1024
346
Feb
Feb
Nov
Feb
Oct
27
11
18
23
19
00:06
16:06
01:36
23:58
18:31
Cartas
Datos
Programacio
programa1
cunix.lista
La primera columna indica las ternas de permisos de cada fichero o directorio, con el significado
que veremos en el captulo dedicado a conceptos del sistema operativo. El segundo hace referencia
al n
umero de enlaces del archivo (aspecto que tambien comentaremos m
as adelante), mientras que
los dos siguientes indican el propietario y el grupo al que pertenece. El quinto campo corresponde
al tama
no del fichero en bytes, y los siguientes dan la fecha y hora de la u
ltima modificaci
on del
archivo. Obviamente, la u
ltima columna indica el nombre del fichero o directorio.
ORDENES
BASICAS
DE UNIX
3.2.2.
15
cd
La orden cd en Unix hace lo mismo que en MS-DOS: nos permite cambiar de directorio de
trabajo mediante una sintaxis b
asica: cd <directorio>. Las diferencias con el cd de MS-DOS son
mnimas: si en Unix tecleamos cd sin argumentos iremos a nuestro directorio $HOME, mientras
que si esto lo hacemos en MS-DOS se imprimir
a en pantalla el directorio en que nos encontramos (en
Unix esto se consigue con pwd, como veremos m
as adelante). Si le pasamos como par
ametro una
ruta (absoluta o relativa) de un directorio cambiaremos a tal directorio, siempre que los permisos
del mismo lo permitan:
rosita:~# cd /etc
rosita:/etc# pwd
/etc
rosita:/etc# cd
rosita:~# pwd
/root
rosita:~#
La orden cd es interna al shell en cualquier Unix con que trabajemos: no existir
a nunca un ejecutable
denominado cd capaz de cambiar de directorio, ya que por dise
no del sistema operativo un proceso
no puede modificar ciertas propiedad de sus antecesores.
3.2.3.
pwd
Imprime en pantalla la ruta completa del directorio de trabajo donde nos encontramos actualmente. No tiene opciones, y es una orden u
til para saber en todo momento en que punto del sistema
de archivos de Unix nos encontramos, ya que este sistema es muy diferente a otros operativos como
MS-DOS, MacOS, etc. Su ejecuci
on es sencilla:
luisa:~$ pwd
/home/toni
luisa:~$ cd /etc/
luisa:/etc$ pwd
/etc
luisa:/etc$
3.2.4.
mkdir
La orden mkdir crea (si los permisos del sistema de ficheros lo permiten) el directorio o directorios
que recibe como argumentos; aunque esta orden admite diferentes par
ametros, no los veremos aqu.
Podemos crear directorios de la siguiente forma:
rosita:~/tmp$ ls -l
total 0
rosita:~/tmp$ mkdir d1
rosita:~/tmp$ mkdir d2 d3
rosita:~/tmp$ ls -l
total 12
drwxr-xr-x
2 toni
users
drwxr-xr-x
2 toni
users
drwxr-xr-x
2 toni
users
rosita:~/tmp$
3.2.5.
4096 May
4096 May
4096 May
2 00:43 d1/
2 00:43 d2/
2 00:43 d3/
touch
Actualiza la fecha de u
ltima modificaci
on de un archivo, o crea un archivo vaco si el fichero
pasado como par
ametro no existe. Con la opci
on -c no crea este archivo vaco. Su sintaxis es touch
[-c] <archivo>:
ORDENES
BASICAS
DE UNIX
luisa:~/curso$ ls -l
total 4
-rw-r--r-1 toni
users
luisa:~/curso$ date
Fri May 16 20:53:46 CEST 2003
luisa:~/curso$ touch fichero2 fichero1
luisa:~/curso$ ls -l
total 4
-rw-r--r-1 toni
users
-rw-r--r-1 toni
users
luisa:~/curso$
3.2.6.
16
cp
mv
ORDENES
BASICAS
DE UNIX
rosita:~# mv
(Renombra el
rosita:~# mv
(Mueve todos
3.2.8.
17
hola.c prueba.c
archivo hola.c como prueba.c)
*.c direc1
los archivos finalizados en .c al directorio direc1)
rm
Elimina archivos o directorios. Sus tres opciones son -r (borrado recursivo, de subdirectorios), -f
(no formula preguntas acerca de los modos de los archivos), y -i (interactivo, solicita confirmaci
on
antes de borrar cada archivo). Su sintaxis es muy sencilla: rm [-rfi] <archivo>:
luisa:~/curso$ ls -la
total 4
drwxr-xr-x
2 toni
users
-rw-r--r-1 toni
users
-rw-r--r-1 toni
users
-rw-r--r-1 toni
users
luisa:~/curso$ rm directorio/
rm: directorio is a directory
luisa:~/curso$ rm -r directorio/
luisa:~/curso$ rm -i fichero1
rm: remove fichero1? y
luisa:~/curso$ rm -f fichero*
luisa:~/curso$ ls -la
luisa:~/curso$ ls -la
total 8
drwxr-xr-x
2 toni
users
drwxr-xr-x
5 toni
users
luisa:~/curso$
3.2.9.
4096
0
0
0
May
May
May
May
16
16
16
16
20:48
20:48
20:48
20:48
directorio
fichero1
fichero2
fichero3
rmdir
d2 d3
Si queremos borrar directorios que no esten vacos, hemos de utilizar la orden rm -r, equivalente a
deltree en MSDOS..
3.2.10.
ln
ORDENES
BASICAS
DE UNIX
luisa:~$ ls
-rw-r--r-luisa:~$ ln
luisa:~$ ln
luisa:~$ ls
-rw-r--r-lrwxrwxrwx
-rw-r--r-luisa:~$
3.2.11.
18
-l test.c
1 toni
users
1585
test.c duro.c
-s test.c simbolico.c
-l test.c duro.c simbolico.c
2 toni
users
1585
1 toni
users
6
2 toni
users
1585
Jan
4 00:00 test.c
Jan
Feb
Jan
4 00:00 duro.c
3 04:21 simbolico.c -> test.c
4 00:00 test.c
chmod
Esta orden cambia los permisos de acceso del archivo o directorio que se le pasa como referencia.
Existen dos formas b
asicas de invocarla: la octal y la simb
olica. En la primera de ellas se indica
en octal el modo deseado para el fichero, de la forma chmod <modo><archivo>; se trata de una
indicaci
on explcita del permiso deseado para el archivo, ya que estamos marcando todos los bits
de tal permiso (no nos importa el modo anterior del fichero, sea el que sea el nuevo permiso ser
a el
indicado en la lnea de o
rdenes):
rosita:~$ ls -l prueba
-rw-r--r-1 toni
users
rosita:~$ chmod 0 prueba
rosita:~$ ls -l prueba
---------1 toni
users
rosita:~$
ORDENES
BASICAS
DE UNIX
19
3.3.
La pr
actica totalidad de los clones de Unix existentes en el mercado incorporan unos manuales
online en los que se describe la sintaxis, opciones y utilidad de las diferentes o
rdenes del sistema.
Este manual es, por supuesto, man, que localiza e imprime en pantalla la informaci
on solicitada por
el usuario.
man se ha convertido en una orden indispensable para cualquier usuario, administrador o programador de un sistema Unix. La gran variedad de clones han contribuido fuertemente a esta utilidad del
manual, ya que en diferentes sistemas las opciones de un determinado mandato para un mismo fin
pueden variar ligeramente (por ejemplo, el ps -aux de ciertos sistemas Unix, como Linux, es equivalente al ps -ef de otros, como Solaris o HP-UX); incluso en la sintaxis de funciones del lenguaje
C, el m
as utilizado en entornos Unix, puede haber diferencias mnimas entre clones. Conociendo el
nombre de la orden o funci
on, y sabiendo manejar mnimamente las p
aginas del manual, la transici
on de un Unix a otro no implica ning
un problema. La consulta del manual es frecuentemente el
camino m
as corto hacia una soluci
on para una pregunta.
En nuestro sistema Linux, como en otros muchos Unix, las p
aginas del manual se organizan en
diferentes categoras, atendiendo a la clasificaci
on de la llamada sobre la que se intenta buscar
ayuda (
ordenes de usuario, juegos, llamadas al sistema, funciones de librera, etc.). Cada una de
estas categoras se almacena en un directorio diferente del disco; si queremos saber la localizaci
on
de estos directorios, habremos de visualizar la variable de usuario $MANPATH. En algunos Unix, por
ejemplo en ciertas versiones de Linux generalmente antiguas , tenemos implementado el mandato manpath, que nos indicar
a la ruta donde man va a buscar las p
aginas de ayuda que nosotros le
pidamos.
Como hemos comentado varias veces ya, la sintaxis de man m
as simple es man <orden>. Sin
embargo, tenemos una serie de opciones b
asicas que es necesario conocer:
-a: All. Fuerza a man a mostrarnos, una a una, todas las diferentes p
aginas para una misma instrucci
on o funci
on; por ejemplo, si tecleamos
rosita:~# man write
el sistema nos mostrar
a la primera secci
on de ayuda encontrada (la correspondiente al mandato
write). Sin embargo, al teclear
rosita:~# man -a write
el sistema nos va a mostrar todas las p
aginas de ayuda diferentes que existan (en este caso, la del
mandato write y la de la funci
on C write()).
Si de antemano conocemos la secci
on que queremos ver, podemos saltar el resto de p
aginas utilizando man <seccion><orden>; si escribimos
rosita:~# man 2 write
el sistema mostrar
a directamente la p
agina de ayuda correspondiente a la funci
on write(), omitiendo el resto.
ORDENES
BASICAS
DE UNIX
20
3.4.
Informaci
on del sistema
3.4.1.
date
Esta orden imprime en pantalla la fecha y la hora en que nos encontramos, algo similar a lo
que en MS-DOS se consigue por separado mediante time y date. Sus opciones para el usuario
normal, que no puede modificar los datos ofrecidos por date, s
olo hacen referencia al formato de
presentaci
on, por lo que nos limitaremos a invocar esta orden simplemente como date, sin ninguna
opci
on:
rosita:~# date
Thu Dec 19 04:42:12 CET 1996
rosita:~#
3.4.2.
uname
Imprime el nombre y algunas caractersticas del sistema donde nos encontramos trabajando.
Unicamente
trataremos la opci
on -a (all), que engloba todas las dem
as; nos indicar
a el nombre del
sistema operativo, el nombre del nodo en la red de comunicaciones, la versi
on del kernel del S.O. y
el modelo del microprocesador de la m
aquina:
luisa:~$ uname -a
Linux luisa 2.4.18 #3 Tue Apr 29 00:08:20 CEST 2003 i686 unknown
luisa:~$
3.4.3.
id
Nos informa sobre nuestro UID (User IDentifier, identificador de usuario), y sobre nuestro GID
(Group IDentifier, identificador de grupo); se trata de dos n
umeros que distinguen, en cualquier
sistema Unix, a los usuarios y a los grupos (respectivamente) entre s. El UID ha de ser diferente
para cada usuario del sistema, ya que dos usuarios con el mismo identificador seran el mismo para
Unix, aunque tuvieran logins diferentes; el UID 0 siempre corresponde al administrador). Por su
parte, el GID suele ser com
un para varios usuarios, englobados todos dentro de un mismo grupo
que los defina: users, cursos, programadores. . . . Aunque generalmente la informaci
on que nos va a
proporcionar id va a consistir simplemente en nuestros UID y GID, en situaciones excepcionales
nos va a ofrecer tambien nuestros EUID y EGID (Effective UID y Effective GID, respectivamente),
si estos difieren de los anteriores. En este caso puede ser conveniente notificar el hecho al administrador del sistema, ya que suele ser un signo de inestabilidad de la m
aquina.
La ejecuci
on de esta orden es muy sencilla (no vamos a ver posibles opciones de la instrucci
on), tal
y como se muestra en el siguiente ejemplo:
rosita:~$ id
ORDENES
BASICAS
DE UNIX
21
who
Apr
Apr
Apr
5 05:12
5 13:01
5 13:16
Esta orden muestra los usuarios conectados actualmente al sistema, como hemos dicho de una
forma parecida a who, pero proporcionando m
as datos que esta u
ltima orden:
rosita:~$ w
6:53pm up 67 days, 10:55,
USER
TTY
FROM
toni
tty1
toni
ttyp0
pc-toni
toni
pts/4
:0.0
toni
ttyp1
pc-toni
toni
pts/2
:0.0
rosita:~$
3.4.6.
last
:0.0
:0.0
luna
ps
Informa del estado de los procesos en el sistema (Process Status). Sin opciones, ps nos informar
a de los procesos en la sesi
on de trabajo actual. Con la opci
on -u se nos proporciona
informaci
on m
as detallada (usuario que posee el proceso, estado del mismo, consumo de memoria
y CPU. . . ), mientras que si utilizamos la opci
on -x se nos mostrar
an todos los procesos de usuario (los de la sesi
on actual y los de cualquier otra). Si lo que queremos es ver todos los procesos
lanzados en la m
aquina, la opci
on adecuada es -aux (equivalente a -ef en algunos sistemas
Unix)2 :
2 En
ORDENES
BASICAS
DE UNIX
luisa:~$ ps
PID TTY
TIME CMD
4178 pts/6
00:00:00 bash
4192 pts/6
00:00:00 ps
luisa:~$ ps -u
USER
PID %CPU %MEM
VSZ RSS TTY
toni
4178 0.0 0.3 1748 1028 pts/6
toni
4193 0.0 0.2 2576 944 pts/6
luisa:~$
3.4.8.
22
STAT START
S
01:00
R
01:03
TIME COMMAND
0:00 -bash
0:00 ps -u
kill
TIME
00:00:00
00:00:00
00:00:00
-9 983
CMD
bash
sleep
ps
TIME CMD
00:00:00 bash
00:00:00 ps
du
La orden du (Disk Usage) nos dice cuanto ocupa un directorio en y todos sus descendientes (esto
es, nos dice lo que ocupan los archivos de ese directorio y todos sus subdirectorios). Su sintaxis es
du [-opciones] [path], y las opciones m
as u
tiles para nosotros ser
an las siguientes:
-k: muestra el tama
no en Kbytes (aunque en Linux es as por defecto, esta opci
on es u
til
en sistemas Unix en los que se muestra el tama
no utilizado en bloques de 512 bytes).
-s: muestra total (sin especificar el tama
no de los subdirectorios).
Si no indicamos el par
ametro path se muestra lo que ocupa el directorio actual y todos sus hijos;
en el siguiente ejemplo podemos ver que el directorio ~/pruebas ocupa unos 13 MB:
rosita:~/pruebas$ du -sk
13442
.
rosita:~/pruebas$
3.4.10.
df
ORDENES
BASICAS
DE UNIX
rosita:~# df
Filesystem
/dev/hdb1
/dev/hda1
rosita:~#
1024-blocks
Used Available Capacity
297842 206584
75362
73%
614672 146192
468480
24%
23
Mounted on
/
/mnt
Vemos que el sistema tiene dos discos ubicados en lugares diferentes. El primero tiene aproximadamente 300 MB, de los cuales mas de 200 est
an ocupados (el 73 % del disco). El segundo, de unos
615 MB, tiene disponibles alrededor de 470 MB.
3.5.
Tratamiento b
asico de archivos
3.5.1.
file
cat
ORDENES
BASICAS
DE UNIX
24
more/less
Visualiza un archivo pantalla a pantalla, no de forma continua. Es una especie de cat con pausas,
que permite una c
omoda lectura de un archivo. Al final de cada pantalla nos aparecer
a un mensaje
indicando --More--. Si en ese momento pulsamos Intro, veremos una o m
as lneas del archivo;
si pulsamos la barra espaciadora, veremos la siguiente pantalla, si pulsamos b la anterior, y si
pulsamos q saldremos de more. Su sintaxis es more <archivo>.
La orden less es muy similar a more pero con una ventaja sobre esta: permite recorrer el texto
tanto hacia delante como hacia atr
as tantas veces como queramos.
3.6.
3.6.1.
head
La orden head muestra las primeras lneas (10 por defecto) de un archivo que recibe como
par
ametro. La principal opci
on de este mandato es la que especifica el n
umero de lneas a visualizar:
(-n), y su sintaxis es head [-n numero ] <archivo>, o simplemente head [-numero] <archivo>:
rosita:~$ head -3 ejemplo.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
rosita:~$
3.6.2.
tail
Visualiza las u
ltimas lneas de un archivo (es la instrucci
on contraria a head). Podemos especificar (como en head) el n
umero concreto de lneas a mostrar mediante el par
ametro -n <lineas>
o simplemente -<lineas>; si no indicamos este valor de forma explcita, tail mostrar
a por defecto
las diez u
ltimas lneas del archivo.
La sintaxis de esta orden es tail [-opcion] archivo:
luisa:~$ cat prueba
En un lugar de la Mancha
de cuyo nombre no quiero acordarme...
luisa:~$ tail -1 prueba
de cuyo nombre no quiero acordarme...
luisa:~$
3.6.3.
cmp
Esta orden compara el contenido de dos archivos, imprimiendo en pantalla la primera diferencia
encontrada (si existe); recibe como par
ametros los dos nombres de los ficheros a comparar:
rosita:~# cmp prova.c prova2.c
rosita:~# cmp prova.c prova3.c
prova.c prova3.c differ: char 10, line 3
rosita:~#
ORDENES
BASICAS
DE UNIX
25
En el primer caso, si no se produce ninguna salida, ambos ficheros son identicos; en el segundo se
muestra que la primera diferencia est
a en el decimo car
acter de la tercera lnea.
3.6.4.
diff
En el primer caso tenemos dos ficheros exactamente iguales, y en el segundo dos que son tambien
muy parecidos, pero que uno de ellos presenta un peque
no error que los hace diferentes.
Por que hablamos de diff si ya conocamos la orden cmp, que tambien nos sirve para comparar
archivos y ver si son iguales o no? Aunque a primera vista no nos lo parezca, ambas instrucciones
son muy diferentes: sin ir m
as lejos, diff recorre ambos ficheros por completo, mientras que cmp se
detiene nada m
as encontrar una diferencia (si quisieramos simplemente comprobar que dos archivos
de 5 GB son diferentes, que orden usaramos de las dos vistas?). Adem
as, la programaci
on de cmp
es muy simple, mientras que diff incorpora algoritmos complejos de comparaci
on de cadenas y
subcadenas.
diff se suele utilizar para distribuir nuevas versiones de alg
un c
odigo fuente, por ejemplo el del
n
ucleo de Linux: si tenemos la versi
on 1 de un c
odigo y necesitamos la 2, o bien la descargamos
completa o bien conseguimos u
nicamente las lneas que difieren entre ambas, de forma que podemos modificar la versi
on antigua para transformarla en la nueva (por ejemplo con una orden como
patch, que no vamos a ver aqu).
3.6.5.
grep
Esta es quiz
as una de las o
rdenes m
as utilizadas e importantes en cualquier sistema Unix; grep
busca un patr
on (que recibe como par
ametro) en un archivo. Su sintaxis es sencilla: grep [opt]
<patron> <fichero>; al tratarse de una potente herramienta de Unix muchas de sus opciones son
de interes para nosotros, en particular -v (imprime las lneas que no coinciden con el patr
on),
-i (no distingue may
usculas/min
usculas) y -c (imprime la cuenta de coincidencias).
grep se suele utilizar tanto como instrucci
on directa para buscar una cadena en un fichero como
unido a otras o
rdenes para filtar su salida, mediante |); por ejemplo, las dos o
rdenes siguientes
son equivalentes:
rosita:~# grep -i include prueba.c
#include <stdio.h>
#include <stdlib.h>
rosita:~# cat prueba.c|grep -i include
#include <stdio.h>
#include <stdlib.h>
rosita:~#
ORDENES
BASICAS
DE UNIX
3.6.6.
26
wc
Es un contador de lneas, palabras y caracteres (Word Count). Es posible utilizarlo como mandato directo y como filtro, y tambien es una potente herramienta en shellscripts. Su sintaxis es wc
[-opcion] <archivo>, siendo opcion una de las siguientes:
-l: cuenta lneas.
-c: cuenta caracteres
-w: cuenta palabras.
Es igualmente posible utilizar combinaciones de las tres opciones; por defecto, wc asumir
a todas:
-lwc. Si no se indica un nombre de archivo, la orden espera datos de la entrada est
andar (el teclado):
luisa:~$ wc /etc/passwd
23
34
908 /etc/passwd
luisa:~$ wc -l /etc/passwd
23 /etc/passwd
luisa:~$
3.6.7.
sort
Ordena, compara o mezcla lneas de archivos de texto que recibe como par
ametro, clasific
andolas
seg
un un patr
on especificado; a nosotros u
nicamente nos va a interesar este mandato para ordenar
alfabeticamente las lneas de un fichero de texto:
rosita:~$ cat telefo.1
Luis
977895
Antonio 3423243
Juan
3242143
rosita:~$ cat telefo.2
Amalio 332210
Joaquin 234234
Pepa
336544
Ana
91-555234
rosita:~$ sort telefo.1
Antonio 3423243
Juan
3242143
Luis
977895
rosita:~$ sort telefo.1 telefo.2
Amalio 332210
Ana
91-555234
Antonio 3423243
Joaquin 234234
Juan
3242143
Luis
977895
Pepa
336544
rosita:~$
Una opci
on de esta orden que nos puede resultar u
til es -f, que provoca que sort interprete las
letras min
usculas como may
usculas.
3.6.8.
spell
Compara las palabras del archivo especificado con las de un diccionario en Ingles (por defecto,
aunque hay diccionarios en castellano y tambien para textos creados con LATEX) y nos indica de los
ORDENES
BASICAS
DE UNIX
27
Ordenes
de b
usqueda
3.7.
3.7.1.
find
ORDENES
BASICAS
DE UNIX
3.7.2.
28
which
La instrucci
on which buscar
a el archivo o archivos especificados como argumento en todos los
directorios incluidos en nuestra variable de entorno $PATH, diciendonos d
onde es posible localizarlo,
o indicando que el fichero no se encuentra en ning
un directorio del $PATH. Por ejemplo, si queremos
saber que fichero se ejecuta realmente cuando en el prompt tecleamos ls, teclearamos una orden
como la siguiente:
rosita:~$ which ls
/bin/ls
rosita:~$
3.8.
Otras o
rdenes
3.8.1.
echo
cal
passwd
Como vimos en el Captulo 2, la orden passwd se utiliza para cambiar la clave de acceso al
sistema. Cuando cambiemos esta contrase
na, habremos de repetir nuestra nueva clave dos veces
(no se mostrar
a en pantalla), y en ambas ha de coincidir; esto se realiza para evitar que un error al
mecanografiar nos asigne un password que no queramos.
3.8.4.
clear
ORDENES
BASICAS
DE UNIX
3.8.5.
29
sleep
Suspende la ejecuci
on durante un tiempo especificado como argumento, en segundos: sleep
<tiempo>. Es u
til en shellscripts, no como orden interactiva, para ejecutar una determinada orden
despues de un cierto intervalo de tiempo.
3.8.6.
nohup
Mantiene la ejecuci
on de o
rdenes aunque se desconecte del sistema, ignorando se
nales de salida
y/o perdida de terminal. Su sintaxis es nohup <orden>. Nos permite dejar trabajos realiz
andose
aunque no estemos fsicamente conectados al ordenador, como sesiones FTP largas, compilaci
on de
grandes programas por m
odulos, etc.
3.8.7.
alias
ORDENES
BASICAS
DE UNIX
3.8.8.
30
gzip
ENTRE USUARIOS
4 COMUNICACION
4.
4.1.
31
ENTRE USUARIOS
COMUNICACION
Introducci
on
4.2.
La orden write
La orden write escribe a otro usuario de nuestro mismo sistema. Copia las lneas desde nuestro
terminal al terminal del usuario especificado en la sintaxis del mandato: write <usuario><terminal>.
El campo <terminal> nos ser
au
til s
olo si el usuario con el que queremos comunicarnos tiene varias
sesiones abiertas en la m
aquina.
Imaginemos que queremos comunicarnos con el usuario luis. Una vez nos hayamos cerciorado que
est
a conectado (con las o
rdenes w o who), teclearemos
rosita:~# write luis
En la pantalla del terminal de luis, aparecer
a el mensaje
Message from root at tty1
Si luis quiere comunicarse con nosotros, teclear
a a su vez
rosita:~$ write root tty1
y ya tendremos establecida la conversaci
on. Podemos empezar a teclear nuestros mensajes, hasta
que uno de los dos interlocutores pulse Ctrl-D, para terminar la conversaci
on o se enve una interrupci
on (Ctrl-C).
Hemos de recordar que si no deseamos recibir mensajes de otros usuarios, debemos utilizar la
orden mesg n.
4.3.
La orden talk
A diferencia de write, talk nos va a permitir por norma general entablar una conversaci
on con
un usuario de otra m
aquina, no s
olo de nuestro propio sistema. Este programa divide la pantalla
en dos mitades; en la superior iremos escribiendo nosotros, y en la inferior podremos leer los mensajes de nuestro interlocutor (lo que nosotros escribamos, a el le aparecer
a en la pantalla inferior,
obviamente).
Imaginemos que estamos en nuestra m
aquina, servidor.upv.es, y queremos comunicarnos con el
usuario root, del sistema rosita (si en lugar de con un usuario en otro ordenador quisieramos hablar con alguien de nuestro propia m
aquina, simplemente eliminaramos el nombre del host de las
instrucciones).
Para entablar esta comunicaci
on, teclearemos
servidor:~$ talk root@rosita
ENTRE USUARIOS
4 COMUNICACION
32
4.4.
La orden mail
Esta instrucci
on se usa para el envo y recepci
on de correo entre usuarios. Aunque hoy en da,
bajo sistemas Unix, su uso se ha reducido notablemente debido a otros gestores de correo m
as
amigables, como elm y pine (que veremos m
as adelante), no est
a de m
as conocer algunas opciones
b
asicas para poder gestionar nuestro correo con mail, de una forma r
apida y eficiente.
Veremos primero la llamada a mail especificando una direcci
on e-mail como argumento (p.e., mail
root@servidor). Este modo se utilizar
a para enviar una carta a la direcci
on especificada. En pantalla nos aparecer
a la opci
on Subject: (que podamos haber especificado en la lnea de o
rdenes con
una instrucci
on como mail -s <subject> root@servidor). El subject de un e-mail es el ttulo,
el tema tratado, algo que resuma en una lnea el contenido del mensaje. . .
Despues de introducir el subject (entre comillas si es compuesto), podemos comenzar a escribir
nuestra carta sin m
as. Cuando hayamos finalizado con ella, teclearemos un punto (.) en la u
ltima
lnea para indicar el final de la transmisi
on (EOT, End of Transmission), y el sistema se encargar
a de
enviar nuestro mensaje al usuario especificado. Veamos un ejemplo sencillo:
rosita:~# mail root@rosita
Subject: Test de correo
Hola !!
Esto es solo una prueba del uso de mail.
.
EOT
rosita:~#
La segunda forma de utilizar mail que vamos a ver es la que trata b
asicamente la gesti
on (ordenaci
on, lectura, borrado. . . ) del correo que nos hayan enviado a nosotros, y que estar
a almacenado en
nuestro buz
on. Para ello, ejecutaremos mail sin argumentos. A partir de aqu, podremos empezar
a introducir o
rdenes mail al programa. Estas
o
rdenes tienen el formato
<orden><lista de mensajes><argumento/s>
La lista de mensajes es el conjunto de mensajes a los que vamos a aplicar la orden dada, y la
podemos especificar como
n: Mensaje n
umero n.
.: Mensaje en curso (vendr marcado por > en el entorno de mail).
$: Ultimo
mensaje.
: Todos los mensajes.
ENTRE USUARIOS
4 COMUNICACION
:n: Todos los mensajes nuevos.
:u: Todos los mensajes no ledos.
Las o
rdenes mail que utilizaremos son las siguientes:
?: Visualizar el resumen de o
rdenes.
copy <lista><archivo>: Copia los mensajes de <lista> en el archivo especificado.
delete <lista>: Borra los mensajes de <lista> del buz
on.
edit <lista>: Edita los mensajes especificados.
exit: Sale de mail sin efectuar cambios.
file <archivo>: Lee en el archivo especificado.
quit: Sale de mail.
undelete <lista>: Recupera los mensajes indicados.
write <lista><archivo>: Graba los mensajes de <lista> en el archivo especificado.
33
5 EL EDITOR DE TEXTOS VI
5.
5.1.
34
EL EDITOR DE TEXTOS vi
Introducci
on
5.2.
Comenzando con vi
Para comenzar a trabajar con un fichero lo habitual es teclear vi <fichero>; de esta forma, el
contenido se volcar
a en pantalla; obviamente, si es un nuevo archivo, este estar
a vaco. De cualquier
modo, el cursor se situar
a en la primera lnea, indicando que es la lnea actual.
Hemos de resaltar que al editar un archivo simplemente visualizamos una copia en memoria de
ese archivo; no se va a modificar hasta que grabemos los cambios con la opci
on adecuada, que
veremos m
as adelante.
Nada m
as entrar en vi, estaremos en el modo comando del editor. Podremos desplazarnos por
el contenido del fichero utilizando las teclas de movimiento del cursor (llamadas tambien cursores,
indicadas con flechas), o alguna de las siguientes opciones:
Movimiento entre caracteres:
h: Desplaza el cursor un car
acter a la izquierda.
l: Desplaza el cursor un car
acter a la derecha.
Movimiento entre lneas:
k: Desplaza el cursor una lnea hacia arriba.
j: Desplaza el cursor una lnea hacia abajo.
H: Desplaza el cursor a la primera lnea que se ve en pantalla.
L: Desplaza el cursor a la u
ltima lnea que se ve en pantalla.
M: Desplaza el cursor a la lnea que vemos en la mitad de la pantalla.
<linea>G: (goto) Desplaza el cursor a la lnea indicada por el n
umero de :<linea>. En versiones de vi, basta teclear el n
umero a continuaci
on de los dos puntos ( : ) para ir directamente
a esa lnea.
5 EL EDITOR DE TEXTOS VI
35
5.3.
Las modificaciones que hemos realizado con vi en un fichero de texto no se han realizado sobre
el mismo fichero, sino sobre una copia que el sistema ha almacenado en la memoria principal. Al
salir del editor, podemos elegir grabar o no los cambios en el archivo, con uno de los siguientes
mandatos:
:x: Graba y sale al interprete de o
rdenes. Hemos de pulsar Intro para ejecutar el mandato.
:wq: Al igual que :x, graba los cambios y sale del editor. Tambin hemos de pulsar Intro al
final.
ZZ: Graba y sale, pero sin necesidad de pulsar Intro.
:q!: Sale del editor y descarta todos los cambios realizados sobre el archivo (no se grabar
a ninguna modificaci
on perceptible por el usuario).
5.4.
Para a
nadir texto nuevo en un archivo primero hemos de situar el cursor en la posici
on deseada
(recordad que por defecto vi lo situar
a en la primera lnea y la primera columna), con las teclas
vistas en apartados anteriores.
Cuando el cursor ya este donde nosotros queremos, podremos introducir alguna de las siguientes instrucciones; todas situar
an a vi en modo edici
on, y el editor estar
a en disposici
on de recibir
texto hasta que se pulse <ESC>:
i: Escribe texto antes de la posici
on actual del cursor.
a: Escribe texto despues de la posici
on actual del cursor.
s: Sustituye el car
acter situado en la posici
on del cursor por todos los que se tecleen a continuaci
on.
o: Abre una lnea por debajo de la actual y sit
ua al editor en modo inserci
on.
O: Abre una lnea por encima de la actual y sit
ua al editor en modo inserci
on.
Una vez que ya sabemos introducir texto, vamos a aprender a borrar partes del archivo editado.
Para ello hemos de utilizar alguno de los siguientes mandatos:
dd: Borra la lnea actual completamente, sin importar la posici
on del cursor dentro de tal
lnea.
5 EL EDITOR DE TEXTOS VI
36
d<Intro>: Borra la lnea actual y la siguiente; al igual que con dd, no importa la posici
on
del cursor dentro de la lnea actual.
d<n lineas>: Borra n lineas lneas a partir de la actual, sin contar a esta (por tanto, son
n+1 lneas).
dw: Borra la palabra en la que se encuentra el cursor; si este se encuentra en la mitad de una
palabra, borrar
a desde ese punto hasta el final de la palabra.
x: Borra el car
acter sobre el que se encuentra el cursor.
d$: Borra desde la posici
on actual de cursor hasta el final de la lnea.
D: Como d$, borra desde donde est
a el cursor hasta el final de la lnea.
d0: Borra desde la posici
on del cursor hasta el principio de la lnea actual.
Si lo que queremos no es introducir texto, sino sustituirlo, podemos hacerlo utilizando uno de los
siguientes mandatos:
r: Reemplaza el car
acter en el que est
a situado el cursor por el siguiente car
acter pulsado.
R: Reemplaza tantos caracteres como teclas se pulse; para finalizar la sustituci
on, hemos de
pulsar <ESC> y volver a modo comando. Es similar al uso de la tecla <Insert> en un PC.
S: Sustituye una lnea del fichero por las que se escriban a continuaci
on, comenzando la
sustituci
on por la lnea actual. Su ejecuci
on finalizar
a tambien volviendo a modo comando.
cw: Sustituye una palabra por el texto que se introduzca a continuaci
on. Para finalizar hemos
de pulsar <ESC>.
C: Sustituye el texto desde la posici
on actual del cursor hasta el final de la lnea actual.
Finaliza con <ESC>.
cc: Sustituye completamente la lnea actual. Como todas las o
rdenes de sustituci
on, finaliza
volviendo al modo comando del editor.
5.5.
Otras o
rdenes de vi
Si nos hemos equivocado al ejecutar un mandato y necesitamos deshacer los cambios realizados,
tenemos a nuestra disposici
on dos instrucciones:
u: Deshace s
olo el cambio realizado por el u
ltimo mandato, aunque afecte a muchas lneas.
U: Deshace varios cambios sobre una misma lnea, aunque no sea la u
ltima modificaci
on
efectuada.
Si pulsamos la u dos veces, lo que estamos haciendo es deshacer el u
ltimo cambio realizado, y luego
deshacer este otro cambio: en una palabra, volvemos a la situaci
on original. Esto no sucede con U;
una vez que se han desecho los cambios, pulsar U o u de nuevo no altera nada.
Otra instrucci
on de vi que nos va a resultar bastante u
til va a ser J, que simplemente va a unir la
lnea inferior con la actual.
Si lo que deseamos es buscar dentro del fichero una determinada cadena de caracteres, pulsaremos (siempre en modo comando) la tecla /, introduciendo a continuaci
on la cadena buscada. Al
pulsar la barra /, notaremos que el cursor va hasta el final de la pantalla y queda esperando la
introducci
on de una cadena; cuando encuentre el texto deseado, el cursor se mover
a a la posici
on
donde este se encuentra por primera vez.
5 EL EDITOR DE TEXTOS VI
37
Si tras encontrar una determinada cadena queremos seguir buscando a lo largo del texto (vi nos
indicar
a la primera que encuentre, no el resto si no le indicamos lo contrario), pulsaremos la tecla n
o simplemente volveremos a pulsar /, esta vez sin necesidad de introducir de nuevo el texto a buscar.
Si queremos buscar en sentido inverso (desde la posici
on actual del cursor hacia el principio del
archivo), en lugar de /, utilizaremos la tecla ?, de uso an
alogo a la primera.
5.6.
Ordenes
orientadas a lneas
Todos las instrucciones orientadas a lneas van a comenzar con dos puntos (:). Si pulsamos esta
tecla, el cursor se mover
a a la parte inferior de la pantalla y quedar
a a la espera de que nosotros
introduzcamos una orden.
Podemos ejecutar instrucciones del sistema operativo de esta forma; el formato ser
a
:!<orden>
Si lo que queremos es salir unos instantes al shell, ejecutaremos un interprete de o
rdenes de Unix
disponible en el sistema, como
:!bash
De esta forma estamos en el shell para poder trabajar. Si queremos volver a vi, lo haremos con el
mandato exit, visto ya.
Otra opci
on que se nos ofrece con las o
rdenes orientadas a lneas es la posibilidad de modificar
las variables de entorno de vi, con la opci
on :set. Una de estas variables es la numeraci
on de todas
las lneas del archivo editado. Esto lo realizaremos con la orden
:set number
Los n
umeros de lnea no se grabar
an como texto, por lo que si volvieramos a ejecutar vi no nos
apareceran directamente; habramos de ordenar de nuevo al editor que los indicase.
Para quitar la numeraci
on de lneas, utilizaremos la orden
:set nonumber
que volver
a el formato del texto a su formato original.
Otra variable de entorno susceptible de ser modificada es la diferenciaci
on entre may
usculas y
min
usculas a la hora de buscar una cadena de caracteres. Para ello, usaremos la orden
:set ignorecase
o tambien
:set ic
Si queremos volver a diferenciar may
usculas de min
usculas, restableceremos la forma original de la
variable tecleando
:set noignorecase
o
:set noic
Si lo que queremos es grabar el contenido del archivo modificado sin tener que salir del editor,
elegiremos
:w
5 EL EDITOR DE TEXTOS VI
38
Si a esta orden le indicamos un nombre de fichero diferente al que habamos editado, nos realizar
a una copia en el nuevo archivo. En el caso que este archivo ya exista, y deseemos sobreescribirlo,
utilizaremos el smbolo ! a continuaci
on de la w:
:w texto2.txt
:w! texto2.txt
Las o
rdenes orientadas a lneas tambien nos ofrecen la posibilidad de insertar en el archivo editado
el contenido de otro fichero; para ello utilizamos la instrucci
on
:r <fichero>
y el fichero indicado aparecer
a insertado a partir de la posici
on actual del cursor.
6.
6.1.
39
6.2.
tin
6.3.
Uso de tin
40
6.4.
lynx
6.5.
41
Uso de lynx
6.6.
gopher
42
6.7.
ftp
43
44
6.8.
telnet
telnet nos va a permitir conectar con un servidor remoto para iniciar una sesi
on de trabajo
en el sistema Unix; ya hemos utilizado telnet para acceder al ordenador servidor.upv.es, donde
estamos realizando el curso, desde nuestro PC. Una vez dentro del sistema Unix, puede ser que nos
interese ejecutar de nuevo telnet para acceder a otro sistema.
Una vez realizada una conexi
on, telnet act
ua como un intermediario entre nosotros y el ordenador al que hemos llamado; cuando pulsemos una tecla, esta se enviar
a al sistema remoto, y cada
vez que este sistema remoto produzca una respuesta se enva a nuestra terminal. De esta forma,
nos va a parecer que nuestro teclado y monitor est
an conectados directamente al host que hemos
llamado.
Si ejecutamos la orden sin indicar ninguna direcci
on de m
aquina, entraremos en el modo comando
de telnet; entonces podremos empezar a comunicarnos con el sistema introduciendo cualquiera de
las diferentes opciones. Veamos las que nos van a ser m
as u
tiles:
C/CLOSE: Cierra una conexi
on que hayamos establecido previamente con un sistema.
L/LOGOUT: Desconecta del sistema remoto y cierra completamente la conexi
on.
O/OPEN <DIRECCION>: Conecta a la direcci
on especificada. Hemos de recordar que necesitamos un login y una clave para acceder al sistema que hayamos indicado.
Q/QUIT: Sale del modo comando de telnet y vuelve al prompt del sistema en el que hemos
ejecutado la orden.
Z: Suspende moment
aneamente la ejecuci
on de telnet y retorna al sistema; para volver a
telnet, podemos teclear fg (foreground, cuyo uso veremos m
as tarde).
H/HELP/?: Nos da una ayuda de los diferentes mandatos que admite la orden telnet.
6.9.
finger
Tty
45
Tty
1
2
p0
Idle
03:23
01:23
10
When
Where
01:45
localhost
6.10.
elm
elm es un gestor de correo interactivo disponible en la mayora de clones de Unix, por supuesto
tambien en Linux. Est
a orientado a pantalla, y por su potencia ha superado como gestor usual
tanto a mail como a mailx.
46
47
Para finalizar con el uso del gestor de correo elm, hemos de recordar que en todo momento podemos
conseguir ayuda acerca de las opciones disponibles pulsando la tecla ?, y que podremos redefinir
algunas variables de usuario a nuestro gusto tecleando o.
6.11.
pine
M
as que como un gestor de correo, pine se suele definir a menudo como un gestor de mensajes,
ya que su configuraci
on permite tanto trabajar con el e-mail habitual como con las news de Usenet.
Sin embargo, como nosotros ya sabemos utilizar el lector de noticias tin, s
olo vamos a aplicar pine
para gestionar, al igual que hemos hecho con elm, nuestro correo electr
onico.
pine se puede configurar de muchas formas, atendiendo principalmente al conocimiento que el
usuario tenga de su uso; para nosotros, las opciones elementales van a ser las mismas que nos
ofreca elm, aunque dentro de un entorno mucho m
as amigable que este.
En primer lugar, vamos a ver cu
ales son las utilidades a las que podemos acceder desde el men
u principal, el que se nos muestra en pantalla inmediatamente despues de ejecutar pine:
HELP: Nos muestra el fichero de ayuda del gestor.
COMPOSE MESSAGE: Se utiliza para editar y enviar un mensaje a una determinada direcci
on.
FOLDER INDEX: Nos permite acceder a los mensajes del folder actual.
FOLDER LIST: Mediante este servicio vamos a poder seleccionar un determinado folder (almacenados en $HOME/mail) o nuestro buz
on, que se llamar
a INBOX por defecto
(/var/spool/mail/<usuario>).
ADDRESS BOOK: Aunque nosotros no vamos a utilizar una lista de direcciones, esta opci
on nos
permite crear una especie de agenda con direcciones de correo que utilicemos frecuentemente.
SETUP: Nos permite definir un entorno personalizado para pine: editor a utilizar, nombre que
deseamos que aparezca como remitente cuando enviemos mail, etc.
QUIT: Sale de pine.
A cada una de estas opciones podremos acceder pulsando las teclas ?, C, I, L, A, S o
Q, respectivamente, desde casi cualquier men
u de pine.
Para nosotros, la opci
on m
as interesante y la que m
as vamos a utilizar va a ser Folder List (L), ya
que nos va a permitir seleccionar un folder y trabajar con los mensajes contenidos en el; si elegimos
esta opci
on, veremos en pantalla una lista con todas las carpetas de correo que tenemos. Tras seleccionar una determinada, veremos el remitente y el tema de todos los mensajes grabados en el archivo.
En este punto podemos comenzar a realizar acciones sobre un determinado mensaje. Si elegimos uno
como actual (con los cursores, o las teclas -, barra espaciadora, p o n, que nos desplazan de
una a otra ventana o mensaje), podremos leerlo (Intro o v), realizar un forward (f), responder
al remitente (r), marcarlo como borrado (d), desmarcarlo (u) o grabarlo en un folder (s).
Esta u
ltima opci
on autom
aticamente marcar
a el mensaje como borrado, para evitar tener el mismo
texto en varios lugares a la vez; de cualquier forma, antes de abandonar pine (q), el programa nos
preguntar
a si realmente queremos borrar los mensajes marcados. Cuando terminemos de trabajar
con los mensajes de un folder, podemos tanto volver al men
u principal (m) como a la lista de
folders (l).
No vamos a ahondar m
as en el uso de pine, ya que este gestor puede llegar a admitir un uso
muy complicado, y adem
as en cada pantalla el programa nos informa de las opciones que tenemos
disponibles, generalmente pulsando ?.
7.
7.1.
48
L
ogicamente, un archivo es un conjunto de datos relacionados de alguna forma entre s; fsicamente, para el sistema Unix, un archivo no va a ser m
as que un conjunto de bytes almacenados en
un disco del sistema o en cualquier otro medio de almacenamiento secundario.
En nuestra m
aquina Linux vamos a encontrar tres tipos b
asicos de ficheros: ficheros planos, directorios, y ficheros especiales. Un fichero plano es aquel que contiene informaci
on generada durante
una sesi
on de trabajo de cualquier usuario, ya sean programas, documentos, ejecutables. . . Un directorio es una especie de cat
alogo de archivos planos manipulado por el S.O. para presentar una
estructura arborescente del sistema de archivos. Para nosotros, un directorio va a ser un fichero
especial que va a contener archivos de todo tipo: planos, otros directorios (llamados subdirectorios)
o ficheros especiales. Siempre existir
an dos archivos dentro de cualquier subdirectorio, denominados
. y .., que hacen referencia al propio directorio (.) y a su directorio padre (..).
Los ficheros especiales pueden ser de varios tipos; en primer lugar, encontramos los archivos de
dispositivos. Para Unix, cualquier parte del computador (disco, cinta, tarjeta de sonido, impresora,
memoria. . . ) es un archivo especial. Existen dos tipos b
asicos de archivos de dispositivo: orientados a car
acter (que realizan sus operaciones de I/O car
acter a car
acter, como impresoras o
ratones) y orientados a bloque (realizan esas mismas operaciones en bloques de caracteres; los
m
as comunes son los discos y las cintas).
Otro tipo de archivo especial es el link o enlace, que no es m
as que una copia de un archivo
determinado en otro lugar del almacenamiento, una especie de segundo nombre del archivo referenciado. Podremos distinguir dos tipos de enlaces: los duros y los simb
olicos; mientras que los primeros
realizan una segunda copia del archivo enlazado, los segundos son simplemente apuntadores a ese
archivo.
Por u
ltimo existen dos tipos de archivos especiales que no vamos a tratar con detalle, ya que
suelen ser s
olo usados en programaci
on o por el propio sistema operativo: son los sockets y los
pipes o FIFOs (First In First Out). Los primeros son una especie de agujeros negros que reciben
y dan informaci
on, mientras que los segundos son las denominadas tuberas del sistema: los datos
que entran por un extremo salen en el mismo orden por el extremo contrario.
Podremos distinguir entre s los diferentes archivos a partir de su primer bit de descripci
on (que
en realidad no es un solo bit); los ficheros planos se denotar
an por -, los directorios por d, los
dispositivos orientados a car
acter por c, los orientados a bloque por b, los pipes por p, y los
sockets por s. Veamos un ejemplo, al listar el contenido de un directorio con ls -al:
rosita:~$ ls -al
Estos directorios son el actual y el padre:
drwxr-xr-x 15 toni users 2048 Nov 2 03:49 ./
drwxr-xr-x 5 root root 1024 Jun 9 02:45 ../
Directorios normales: vemos la d al principio de los permisos:
drwxr-xr-x 2 toni users 1024 Oct 26 15:18 .pgp/
drwxr-xr-x 2 toni users 1024 Oct 26 17:11 programacio/
Archivos planos: al principio, tenemos -:
-rw-r-xr-x 1 toni users 155 Nov 2 03:49 test
-rwxr-xr-x 1 toni users 349 Oct 3 05:14 server
Pipes: vemos su indicador, p:
prw-r-xr-x 1 toni users 155 Nov 2 03:49 .plan
prwxr-xr-x 1 toni users 369 Oct 3 12:12 pipetest
Archivos especiales orientados a car
acter o a bloque:
49
7.2.
rwx
rwx
Terna 3: Correspondiente al nivel others
Terna 2: Correspondiente al nivel group
Terna 1: Correspondiente al nivel de due
no
Cada uno de los elementos de la terna es el tipo de acceso definido para el nivel determinado (Read,
Write, eXec). Si alguno de los permisos no est
a activo, aparecer
a un gui
on (-) en su lugar (pe.,
rwxr-xr-x).
El modo de un archivo puede representarse mediante una m
ascara binaria, con un 1 si est
a activo, o un 0 si no lo est
a; a su vez, cada tres bits pueden representarse por su dgito octal, por
ejemplo para cambiar el modo de un fichero. Veamos un ejemplo:
rwx r-x r-x
En binario, tendramos una m
ascara para este modo de archivo que sera
111 101 101
Si pasamos este n
umero binario al sistema de numeraci
on octal, tenemos
755
Luego el modo del archivo es el 755: su due
no puede leerlo, modificarlo y ejecutarlo; los usuarios
pertenecientes a su grupo pueden leerlo y ejecutarlo, al igual que el resto de usuarios. Si el nombre
del fichero fuera file.txt, por ejemplo, es posible que su due
no hubiera realizado un cambio de su
modo hasta conseguir el 755:
50
7.3.
Archivos ejecutables, im
agenes y procesos
7.4.
El shell
El shell no es m
as que el interprete de o
rdenes, un programa del sistema que nos va a permitir
comunicarnos con la m
aquina orden
andole cosas.
Linux, como cualquier Unix, nos va a ofrecer distintos procesadores de o
rdenes, aunque nosotros
s
olo vamos a comentar las posibilidades de los m
as comunes: Bourne Shell (sh), Bourne Again Shell
(bash) y Korn Shell (ksh). C Shell, tambien muy popular, no lo vamos a tratar, ya que su uso es
m
as adecuado para los programadores de Unix. Una tabla resumen de los distintos shells podra
ser la siguiente:
Programa
sh
tcsh
ash
zsh
bash
csh
ksh
pdksh
Interprete
Bourne Shell
C Advanced Shell
Shell reducido
Z Shell
Bourne Again Shell
C Shell
Korn Shell
Public Domain Korn Shell
51
7.5.
Programaci
on en shell
52
7.6.
Organizaci
on de directorios
La estructura de directorios que proporciona Unix nos va a permitir gestionar nuestros propios
archivos. Esta estructura consiste en una serie jer
arquica de niveles de directorios; todos parten del
directorio /, llamado raz, y se ramifican con archivos o subdirectorios.
La jerarqua de directorios y archivos l
ogica puede implantarse en diferentes medios fsicos (discos), ya que Unix es un sistema independiente de dispositivo (no como MS-DOS, por ejemplo). De
esta forma, el directorio /home/toni/programacio/ puede estar en un disco y el directorio
/home/toni/security/ puede estar en otro diferente, sin que nosotros notemos el cambio de disco
al pasar de un directorio a otro.
Los nombres de los directorios del sistema Linux (no los que nosotros vayamos a crear como usuarios) tienen un nombre definido que da una idea de los archivos planos contenidos en el directorio.
Veamos algunos ejemplos:
/dev/ (device): Dispositivos del sistema (impresoras, discos, m
odems. . . ).
/bin/ (binary): Ejecutables b
asicos para los usuarios.
/sbin/ (super binary): Ejecutables b
asicos para el superusuario (root).
/lib/ (libraries): Libreras del sistema.
/home/ : Directorio del que van a colgar los directorios asignados a los diferentes usuarios. Por ejemplo, /home/toni/ es el directorio al que el usuario toni entra por defecto, y
/home/mbenet/ es al que mbenet entra por defecto.
/etc/ : Directorio para almacenar programas del sistema (configuraci
on, servicios. . . ) que no
tienen una localizaci
on especfica en otro directorio.
/proc/ : Dispositivos hardware del sistema (memoria, procesador . . . ). Podremos ver caractersticas del sistema haciendo un cat sobre algunos de ellos (la mayora).
/usr/ (user): Directorio del que cuelgan subdirectorios con aplicaciones para usuarios; por
ejemplo, en /usr/bin/ hay archivos ejecutables, en /usr/include ficheros de cabecera para
programaci
on en C, etc.
/var/ (varios): Directorio del que parten subdirectorios con contenidos diversos, desde archivos de administraci
on del sistema hasta correo de usuarios.
En clase veremos con algo m
as de detalle el contenido de cada uno de estos directorios.
Hemos comentado que cada usuario del sistema tiene un directorio de trabajo al cu
al ir
a por
defecto cada vez que conecte a la m
aquina. Este directorio de conoce como $HOME ($ indica que
es una variable de entorno), y est
a especificado en el archivo /etc/passwd. Si ejecutamos cd sin
ning
un argumento, iremos a nuestro $HOME sin importar nuestra localizaci
on actual. As mismo,
para ir al directorio $HOME de un usuario (si los permisos asignados lo permiten), bastar
a con
teclear cd ~<usuario>:
rosita:/usr/include/linux$ cd ~toni
rosita:~$
53
Por u
ltimo, veamos lo que representa la variable de entorno $PATH. El path o ruta de un archivo
es el camino que se ha de seguir a lo largo de la jerarqua de directorios hasta llegar al fichero; por
tanto, cada path va a representar siempre a un archivo y s
olo a uno (aunque Unix permite que un
mismo archivo tenga varios nombres en la jerarqua de directorios, como vimos al estudiar la orden
ln, el estudio en profundidad de estos conceptos escapa al contenido del curso).
Quiz
as nos hemos hecho la siguiente pregunta: cuando nosotros ejecutamos un mandato, sin indicar el path de la orden, c
omo sabe el sistema donde buscar el fichero para ejecutarlo?. As, si
ejecutamos la orden passwd, c
omo sabe el sistema que nos estamos refiriendo a /bin/passwd y no
a /etc/passwd? Pues bien, el sistema lo sabe simplemente porque nosotros se lo hemos dicho, le
hemos indicado d
onde ha de buscar los ficheros para ejecutarlos. Esto se lo hemos dicho en forma
de una variable llamada $PATH. Siempre que indiquemos un mandato al sistema, el buscar
a un
ejecutable con el mismo nombre en cada uno de los directorios del $PATH, hasta encontrar el que
busc
abamos y ejecutarlo. Esta b
usqueda se realiza por orden, por lo que si nuestro $PATH es como
el que sigue,
PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11/bin:/usr/andrew/bin:
/usr/openwin/bin:/usr/games:/usr/local/bin/varios:
/usr/local/bin/xwpe-1.4.2:.
y hay un archivo ejecutable llamado tester en el directorio actual, y otro en el directorio
/usr/local/bin/, y tecleamos simplemente tester, se ejecutar
a /usr/local/bin/tester, y no
./tester. Esto es una importante medida de seguridad para los usuarios.
7.7.
Planos de trabajo
En cualquier sistema Unix vamos a tener dos planos de trabajo diferenciados entre s: el plano
principal (foreground) y el segundo plano (background).
Los trabajos o procesos que tengamos trabajando en segundo plano lo van a hacer generalmente con menos prioridad que los del plano principal; adem
as, si tenemos que interactuar con la tarea
del segundo plano (a traves del teclado, por ejemplo), va a ser necesario subir el trabajo al plano
principal; por tanto, el background nos va a ser de utilidad s
olo si el proceso no tiene acci
on con el
usuario o si esta acci
on es cada bastante tiempo (como a la hora de acceder a un servidor WWW
cuando hay bastante tr
afico en la red). En segundo plano podremos tener tantos trabajos como queramos (o como el sistema nos permita), pero en foreground s
olo podremos tener una tarea por sesi
on.
Existen varias formas de dejar trabajos en uno u otro plano y de moverlos entre ellos; vamos a
ver aqu las m
as comunes:
Si ejecutamos una orden, sin indicarle nada especial al sistema, pasar
a a ejecutarse en foreground. Si
durante la ejecuci
on queremos moverlo al segundo plano, lo habremos de detener (Ctrl-Z), y luego
pasarlo con la orden bg %<n
umero trabajo>. El argumento de la instrucci
on bg es opcional; si no
lo indicamos, bajar
a a background el u
ltimo trabajo lanzado. Si tenemos varios trabajos en segundo
plano, y queremos seleccionar uno diferente del u
ltimo para subirlo al plano pincipal, veremos sus
n
umeros con la orden jobs, as como si tenemos diferentes trabajos parados y queremos dejar uno
de ellos en background o foreground.
En el mismo prompt del sistema, podemos dejar directamente un trabajo en background tecleando
al final de la orden (opciones incluidas) el smbolo &; se nos indicar
a el identificador de proceso
(PID), y el trabajo comenzar
a a funcionar en segundo plano. Luego podemos subirlo a foreground
de nuevo con la orden fg, pero sin necesidad de suspenderlo. Vamos a ver un ejemplo que nos
aclarar
a las dudas:
rosita:~/myprog$ ls
add
hora
asker
log2.c
fsi.c
serversock.c
log
quest.c
pingkrc.c
ttylock
asker.c
sysinfo.c
54
serversock
addus.c
log.c
trans.c
hora.c
quest
7.8.
Entrada y salida
55
56
obtener directamente el resultado de una orden por pantalla, podemos aplicarle antes otra orden y
mostrar as el resultado final. Recursivamente, este nuevo resultado tambien podramos pasarlo por
otro programa antes de mostrarlo en pantalla, o redirigirlo a un archivo exactamente tal y como
hemos hecho antes.
Para realizar este filtrado en Unix disponemos de lo que se llama pipes o tuberas, utilizando el
smbolo |. La salida de la orden a la izquierda de |, compuesta por un conjunto de instrucciones o por una s
ola, es filtrada por la orden a la derecha del smbolo antes de mostrarse en pantalla.
Veamos un ejemplo, recordando que el mandato sort sin argumentos ordenaba alfabeticamente, y la orden cat volcaba el contenido de un fichero a la salida est
andar; en primer lugar, volcamos
el contenido del fichero telefo a pantalla:
rosita:~$ cat telefo
Antonio 3423243
Luis
977895
Juan
3242143
Amalio 332210
Joaquin 234234
Pepa 336544
Ana 91-555234
rosita:~$
Ahora, en lugar de mostrar el resultado en pantalla directamente, lo ordenamos antes utilizando la
orden sort:
rosita:~$ cat telefo|sort
Amalio 332210
Ana 91-555234
Antonio 3423243
Joaquin 234234
Juan
3242143
Luis
977895
Pepa 336544
rosita:~$
Finalmente, en lugar de mostrar el resultado ordenado en pantalla, guardamos el resultado en un
fichero:
rosita:~$ cat telefo|sort >telefo.ordenado
rosita:~$
En el uso correcto de tuberas encontramos una de las fuentes de potencia del sistema operativo: en
una sola lnea de o
rdenes podemos conseguir cosas que desde otros operativos requeriran un gran
trabajo o simplemente sera imposible realizar. Utilizar Unix correctamente reside muchas veces
en saber cu
ando y c
omo resolver problemas mediante la combinaci
on de programas utilizando el
filtrado.
8 SEGURIDAD BASICA
DEL USUARIO
8.
8.1.
57
SEGURIDAD BASICA
DEL USUARIO
Sistemas de contrase
nas
8 SEGURIDAD BASICA
DEL USUARIO
58
(b)
(a)
(c)
(d)
(e)
8.2.
8 SEGURIDAD BASICA
DEL USUARIO
rosita:~# chmod 2745 test2
rosita:~# ls -al
-rwsr-xr-x
1 root
root
-rwxr-Sr-x
1 root
root
rosita:~#
59
155 Nov
349 Oct
3 05:46
3 05:14
test
test2
8.3.
Privilegios de usuario
Cada usuario de la m
aquina Unix tiene una serie de privilegios sobre unos determinados archivos
y directorios. Existe un usuario, llamado root, que tiene acceso a toda la informaci
on del sistema,
ya que act
ua como administrador de la m
aquina.
Nosotros, como usuarios normales, vamos a tener capacidad para escribir en nuestro directorio
$HOME, cambiar su modo, borrar sus archivos y subdirectorios, etc. Sin embargo, nuestro acceso
a ciertos directorios o archivos del sistema va a ser limitado (lectura, ejecuci
on, o a veces ni tan
siquiera eso. . . ). Podremos acceder al $HOME de otros usuarios, si estos lo han permitido, y leer
alguno de sus archivos, pero generalmente no vamos a poder modificar su contenido.
Tampoco vamos a poder leer ciertos archivos que est
an dedicados a registrar actividades del sistema, a modo de auditora de seguridad, como pueden ser /var/adm/syslog o /var/adm/messages,
o cualquier otro fichero de uso interno de la administraci
on del sistema (como /etc/sudoers).
Existe, sin embargo, un directorio aparte de nuestro $HOME en el que s vamos a poder escribir y guardar nuestros ficheros: se trata de /tmp, dedicado a uso temporal por parte de todos los
usuarios del sistema, en el que podremos guardar durante un tiempo informaci
on que nos sea de
interes.
Aunque todos pueden escribir en /tmp, s
olo nosotros y el administrador vamos a poder borrar los
archivos que hayamos creado; esto se consigue gracias al sticky bit, o bit de permanencia, del directorio (si lo listamos con ls -l, veremos que su modo es drwxrwxrwt; esta u
ltima t es el sticky
bit).
La funci
on del sticky bit en un archivo va a ser ligeramente diferente: va a indicarle al sistema
que el fichero es frecuentemente ejecutado y por ello es conveniente que este la mayor parte del
tiempo en memoria principal. Para evitar problemas en el sistema, aunque cualquier usuario puede
conseguir que el bit aparezca en sus ficheros, este s
olo va a ser realmente efectivo cuando ha sido el
administrador el que lo ha activado.
8.4.
Cifrado de datos
El cifrado de la informaci
on es la tecnica m
as utilizada para garantizar la privacidad del los
datos. La Criptologa es la ciencia ocupada del estudio de los cifrados en todas sus variantes, desde
los ataques hasta el desarrollo de nuevos metodos de encriptaci
on (criptosistemas).
La encriptaci
on de un fichero hace imposible a un intruso la lectura de los datos si no posee una
clave para desencriptar el archivo; por tanto, garantiza la privacidad de una informaci
on. Su uso es
8 SEGURIDAD BASICA
DEL USUARIO
60
8.5.
Bloqueo de terminales
REFERENCIAS
Referencias
[1] Blanco Linux: Instalaci
on, administraci
on y uso del sistema
Ra-Ma, 1996
[2] Hahn Internet. Manual de referencia
McGraw-Hill, 1994
[3] Kernighan,Pike The Unix programming environment
Prentice Hall, 1984
[4] Poole, Poole Using Unix by example
Addison Wesley, 1986
[5] Ribagorda, Calvo, Gallardo Seguridad en Unix: Sistemas abiertos e Internet
Paraninfo, 1996
[6] Rosen, Rosinski, Host Best Unix tips ever
McGraw-Hill, 1994
[7] Salus A quarter century of Unix
Addison Wesley, 1994
[8] Silberschatz, Peterson, Galvin Sistemas Operativos. Conceptos fundamentales
Addison Wesley, 1994
[9] Siyan Internet Firewalls and Network Security
Prentice Hall, 1995
[10] Stevens Unix Network Programming
Prentice Hall, 1990
[11] Tanenbaum Sistemas Operativos: Dise
no e implementaci
on
Prentice Hall, 1987
[12] Welsh, Kauffman Running Linux
OReilly and Associates, 1995
61