Vous êtes sur la page 1sur 84

Contenido

Qu es Linux? .....................................................................................................................................................................................................5
Historia de Linux ............................................................................................................................................................................................5
GNU ....................................................................................................................................................................................................................6
Open Source (Software libre) ...................................................................................................................................................................6
Distribuciones de Linux...............................................................................................................................................................................7
Distribuciones que no requieren instalacin (Live CD) ............................................................................................................7
Distribuciones populares ......................................................................................................................................................................7
Instalacin de Debian........................................................................................................................................................................................9
El Sistema Operativo Linux .......................................................................................................................................................................... 16
Consolas virtuales ...................................................................................................................................................................................... 16
Comandos bsicos ..................................................................................................................................................................................... 16
ls .................................................................................................................................................................................................................. 16
cd ................................................................................................................................................................................................................. 17
mkdir .......................................................................................................................................................................................................... 17
rm ................................................................................................................................................................................................................ 17
cp ................................................................................................................................................................................................................. 17
mv ............................................................................................................................................................................................................... 18
find.............................................................................................................................................................................................................. 18
locate ......................................................................................................................................................................................................... 18
clear ............................................................................................................................................................................................................ 19
ps ................................................................................................................................................................................................................. 19
kill ................................................................................................................................................................................................................ 19
sudo............................................................................................................................................................................................................ 19
date ............................................................................................................................................................................................................ 20
ln .................................................................................................................................................................................................................. 20
whereis ...................................................................................................................................................................................................... 21
PATH .......................................................................................................................................................................................................... 21
df ................................................................................................................................................................................................................. 22
alias............................................................................................................................................................................................................. 23
grep ............................................................................................................................................................................................................ 23
head ........................................................................................................................................................................................................... 24
tail ............................................................................................................................................................................................................... 24
which.......................................................................................................................................................................................................... 24
passwd ...................................................................................................................................................................................................... 25
su ................................................................................................................................................................................................................. 25

apt ............................................................................................................................................................................................................... 25
aptitude .................................................................................................................................................................................................... 26
dpkg ........................................................................................................................................................................................................... 26
dmidecode............................................................................................................................................................................................... 27
tar ................................................................................................................................................................................................................ 30
man............................................................................................................................................................................................................. 31
Sistema de archivos................................................................................................................................................................................... 32
Principales Directorios ........................................................................................................................................................................ 32
Nombres de archivos en Linux ........................................................................................................................................................ 32
Niveles de Ejecucin ................................................................................................................................................................................. 33
Niveles de ejecucin especiales...................................................................................................................................................... 33
Dnde residen los Niveles de Ejecucin? ................................................................................................................................. 34
Cmo puedo cambiar los niveles de ejecucin? .................................................................................................................... 34
Fundamentos del Shell de comandos ................................................................................................................................................ 35
Indicador del sistema................................................................................................................................................................................ 35
El concepto de lnea de comandos ..................................................................................................................................................... 36
Edicin de texto................................................................................................................................................................................................ 37
vi ........................................................................................................................................................................................................................ 37
Modos Vi .................................................................................................................................................................................................. 37
Comandos bsicos ............................................................................................................................................................................... 37
Comandos de edicin ......................................................................................................................................................................... 37
Buscar y reemplazar............................................................................................................................................................................. 38
Copiar y pegar y cortar y pegar ...................................................................................................................................................... 38
nano ................................................................................................................................................................................................................. 38
Editamos un archivo con nano ........................................................................................................................................................ 39
Administracin de Usuarios......................................................................................................................................................................... 40
Gestin de Usuarios y Grupos............................................................................................................................................................... 40
Aadir usuarios y grupos................................................................................................................................................................... 40
Eliminar usuarios y grupos................................................................................................................................................................ 40
Modificar usuarios y grupos ............................................................................................................................................................. 40
Archivos relacionados con la gestin de usuarios y grupos ............................................................................................... 41
Permisos sobre archivos ............................................................................................................................................................................... 42
Permisos en formato numrico octal ................................................................................................................................................. 43
Comando chmod........................................................................................................................................................................................ 43
Estableciendo permisos en modo simblico .................................................................................................................................. 44
Cambiando propietario y grupo .......................................................................................................................................................... 45
Bits SUID, SGID y de persistencia (sticky bit) .................................................................................................................................. 45
SUID ........................................................................................................................................................................................................... 46
2

SGID ........................................................................................................................................................................................................... 46

STICKY BIT (Bit de persistencia) ...................................................................................................................................................... 46


Estableciendo los permisos especiales ........................................................................................................................................ 46
Permisos preestablecidos con umask ................................................................................................................................................ 47
Instalacin de Software ................................................................................................................................................................................. 49
Montaje de sistemas de archivo ................................................................................................................................................................ 50
NFS ................................................................................................................................................................................................................... 53
Qu necesitamos? .............................................................................................................................................................................. 53
Compartiendo el disco ....................................................................................................................................................................... 54
Un poco de seguridad ........................................................................................................................................................................ 54
Iniciar la comparticin de archivos ................................................................................................................................................ 55
Configuracin de un equipo cliente NFS .................................................................................................................................... 55
Samba ............................................................................................................................................................................................................. 55
Instalacin de samba........................................................................................................................................................................... 56
Configuracin de samba .................................................................................................................................................................... 56
Archivo smb.conf .................................................................................................................................................................................. 56
Gestin de usuarios, grupos y permisos de samba ................................................................................................................ 60
Administracin de procesos .................................................................................................................................................................. 62
ps ...................................................................................................................................................................................................................... 62
pstree .............................................................................................................................................................................................................. 65
kill ..................................................................................................................................................................................................................... 66
killall................................................................................................................................................................................................................. 67
nice................................................................................................................................................................................................................... 67
renice ............................................................................................................................................................................................................... 67
nohup y & ..................................................................................................................................................................................................... 68
jobs................................................................................................................................................................................................................... 68
top .................................................................................................................................................................................................................... 69
Utilidad para administrar procesos de inicio .................................................................................................................................. 70
Configuracin de red en Linux ................................................................................................................................................................... 71
Interfaz Loopback....................................................................................................................................................................................... 71
Configuracin Esttica.............................................................................................................................................................................. 71
Configuracin dinmica........................................................................................................................................................................... 73
Interfaces virtuales ..................................................................................................................................................................................... 73
Configuracin de los DNS ...................................................................................................................................................................... 74
Definicin de nombres particulares .................................................................................................................................................... 75
Administracin remota segura ................................................................................................................................................................... 76
Mtodos de autentificacin ................................................................................................................................................................... 76
Instalacin y configuracin del servidor ssh ................................................................................................................................... 77
Configuracin y uso del cliente openssh.......................................................................................................................................... 78
Utilizacin de ssh........................................................................................................................................................................................ 78
3

Transferir ficheros con ssh ...................................................................................................................................................................... 80


Copiar un fichero a un ordenador remoto ................................................................................................................................. 80
Copiar un fichero desde un ordenador remoto ....................................................................................................................... 80
Automatizacin de procesos....................................................................................................................................................................... 81
Qu es cron? .............................................................................................................................................................................................. 81
Cmo funciona cron.................................................................................................................................................................................. 81
Qu es Crontab? ....................................................................................................................................................................................... 81
Utilizando crontab ..................................................................................................................................................................................... 81
Agregar tareas a crontab......................................................................................................................................................................... 82
Administracin de trabajos en cron.................................................................................................................................................... 84

Qu es Linux?
Linux es un ncleo libre de sistema operativo basado en Unix. Es uno de los principales ejemplos de software
libre. Linux est licenciado bajo la GPL v2 y fue desarrollado escrito desde cero por Linus Torvalds con la ayuda
de desarrolladores de todo el mundo.

Historia de Linux
En abril de 1991, Linus Torvalds, de 21 aos, empez a trabajar en unas simples ideas para un ncleo de sistema
operativo. Comenz con un intento por obtener un ncleo de sistema operativo gratuito similar a Unix que
funcionara con microprocesadores Intel 80386. Luego, el 25 de agosto de 1991, Torvalds escribi en el grupo de
noticias comp.os.minix:
"Estoy haciendo un sistema operativo (gratuito, slo un hobby, no ser nada
grande ni profesional como GNU) para clones AT 386(486). Llevo en ello desde
abril y est empezando a estar listo. Me gustara saber su opinin sobre las
cosas que les gustan o disgustan en minix, ya que mi SO tiene algn parecido
con l.[...] Actualmente he portado bash(1.08) y gcc(1.40), y parece que las
cosas funcionan. Esto implica que tendr algo prctico dentro de unos
meses..."
Despus de esto, muchas personas ayudaron con el cdigo. En septiembre de 1991 se lanz la versin 0.01 de
Linux. Tena 10.239 lneas de cdigo. En octubre de ese ao, se lanz la versin 0.02 de Linux; luego, en
diciembre se lanz la versin 0.11. Esta versin fue la primera en ser self-hosted (autoalbergada). Es decir, Linux
0.11 poda ser compilado por una computadora que ejecutase Linux 0.11, mientras que las versiones anteriores
de Linux se compilaban usando otros sistemas operativos. Cuando lanz la siguiente versin, Torvalds adopt la
GPL como su propio boceto de licencia, la cual no permita su redistribucin con otra licencia que no sea GPL.
Se inici un grupo de noticias llamado alt.os.linux y el 19 de enero de 1992 se public en ese grupo el primer
post. El 31 de marzo, alt.os.linux se convirti en comp.os.linux. XFree86, una implementacin del X Windows
System, fue portada a Linux, la versin del ncleo 0.95 fue la primera en ser capaz de ejecutarla. Este gran salto
de versiones (de 0.1x a 0.9x) fue por la sensacin de que una versin 1.0 acabada no pareca estar lejos. Sin
embargo, estas previsiones resultaron ser un poco optimistas: desde 1993 a principios de 1994, se desarrollaron
15 versiones diferentes de 0.99 (llegando a la versin 0.99r15).
Algunas otras fechas importantes en la historia de linux son:

El 14 de marzo de 1994, se lanz Linux 1.0.0, que constaba de 176.250 lneas de cdigo. En marzo de
1995 se lanz Linux 1.2.0, que ya estaba compuesto de 310.950 lneas de cdigo.

Mayo de 1996: Torvalds decidi adoptar al pingino Tux como mascota para Linux.

9 de junio de 1996: Se lanz la versin 2 de Linux, con una recepcin positiva.

25 de enero de 1999: Se lanz Linux 2.2.0 con 1.800.847 lneas de cdigo.

18 de diciembre de 1999: se publicaron parches de IBM Mainframe para 2.2.13, permitiendo de esta
forma que Linux fuera usado en ordenadores corporativos.

4 de enero de 2001: se lanz Linux 2.4.0 con 3.377.902 lneas de cdigo.

17 de diciembre de 2003: se lanz Linux 2.6.0 con 5.929.913 lneas de cdigo.


5

24 de diciembre de 2008: se lanz Linux 2.6.28 con 10.195.402 lneas de cdigo.

20 de octubre de 2010: se lanz Linux 2.6.36 con 13.499.457 lneas de cdigo.

30 de mayo de 2011: Linus Torvalds anunci que la versin del ncleo dar el salto a la 3.0 en la
siguiente publicacin.

21 de julio de 2011: Torvalds public en su perfil en la red social Google+ que el ncleo versin 3.0
estaba listo con la frase "3.0 Pushed Out".

22 de julio de 2011: Fue lanzada la versin 3.0 del ncleo

12 de mayo y 13 de mayo de 2012 fueron lanzadas las versiones 3.3.6 y 3.4-rc7 del ncleo

GNU
GNU es un acrnimo recursivo que significa GNU No es Unix (GNU is Not Unix). El proyecto GNU fue iniciado
por Richard Stallman con el objetivo de crear un sistema operativo completamente libre: el sistema GNU.
El sistema GNU fue diseado para ser totalmente compatible con UNIX. El hecho de ser compatible con la
arquitectura de UNIX implica que GNU est compuesto de pequeas piezas individuales de software, muchas de
las cuales ya estaban

disponibles, como el sistema de edicin de textos TeX y el sistema grfico X

Windows, que pudieron ser adaptados y reutilizados; otros en cambio tuvieron que ser reescritos.
Para asegurar que el software GNU permaneciera libre para que todos los usuarios pudieran "ejecutarlo,
copiarlo, modificarlo y distribuirlo", el proyecto deba ser liberado bajo una licencia diseada para garantizar
esos derechos al tiempo que evitase restricciones posteriores de los mismos. La idea se conoce en Ingls como
copyleft -'izquierda de autor'- (en clara oposicin a copyright -'derecho de autor'-), y est contenida en la
Licencia General Pblica de GNU (GPL).
En 1991, Linus Torvalds empez a escribir el ncleo Linux y decidi distribuirlo bajo la licencia GPL.
Rpidamente, mltiples programadores se unieron a Linus en el desarrollo, colaborando a travs de Internet y
consiguiendo paulatinamente que Linux llegase a ser un ncleo compatible con UNIX. En 1992, el ncleo Linux
fue combinado con el sistema GNU, resultando en un sistema operativo libre y completamente funcional. El
Sistema Operativo formado por esta combinacin es usualmente conocido como "GNU/Linux" o como una
"distribucin Linux" y existen diversas variantes.

Open Source (Software libre)


Segn Richard Stallman que es como el padre del software libre, - el "Software Libre'' es un asunto de libertad,
no de precio. Para entender el concepto, debes pensar en "libre'' como en "libertad de expresin'', no como en
"cerveza gratis'' (en ingls una misma palabra (free) significa tanto libre como gratis, lo que ha dado lugar a
cierta confusin). "Software Libre'' se refiere a la libertad de los usuarios para ejecutar, copiar, distribuir, estudiar,
cambiar y mejorar el software.
De modo ms preciso, se refiere a cuatro libertades de los usuarios del software:

La libertad de usar el programa, con cualquier propsito (libertad 0).

La libertad de estudiar cmo funciona el programa, y adaptarlo a tus necesidades (libertad 1).El acceso al
cdigo fuente es una condicin previa para esto.

La libertad de distribuir copias, con lo que puedes ayudar a tu vecino (libertad 2).

La libertad de mejorar el programa y hacer pblicas las mejoras a los dems, de modo que toda la
comunidad se beneficie. (libertad 3). El acceso al cdigo fuente es un requisito previo para esto.

"Software libre'' no significa "no comercial''. Un programa libre debe estar disponible para uso comercial,
desarrollo comercial y distribucin comercial. El desarrollo comercial del software libre ha dejado de ser inusual;
el software comercial libre es muy importante.

Distribuciones de Linux
Una distribucin Linux (coloquialmente llamada distro) es una distribucin de software basada en el ncleo
Linux que incluye determinados paquetes de software para satisfacer las necesidades de un grupo especfico de
usuarios, dando as origen a ediciones domsticas, empresariales y para servidores. Por lo general estn
compuestas, total o mayoritariamente, de software libre, aunque a menudo incorporan aplicaciones o
controladores propietarios.
Adems del ncleo Linux, las distribuciones incluyen habitualmente las bibliotecas y herramientas del proyecto
GNU y el sistema de ventanas X Windows System. Dependiendo del tipo de usuarios a los que la distribucin
est dirigida se incluye tambin otro tipo de software como procesadores de texto, hoja de clculo,
reproductores multimedia, herramientas administrativas, etctera. En el caso de incluir herramientas del proyecto
GNU, tambin se utiliza el trmino distribucin GNU/Linux.
Existen distribuciones que estn soportadas comercialmente, como Fedora (Red Hat), openSUSE (Novell),
Ubuntu (Canonical Ltd.), Mandriva, y distribuciones mantenidas por la comunidad como Debian y Gentoo.
Distribuciones que no requieren instalacin (Live CD)
Una distribucin live o Live CD o Live DVD, ms genricamente Live Distro, (traducido en ocasiones como CD
vivo o CD autnomo), es una distribucin almacenada en un medio extrable, tradicionalmente un CD o un DVD
(de ah sus nombres), que puede ejecutarse desde ste sin necesidad de instalarlo en el disco duro de una
computadora, para lo cual usa la memoria RAM como disco duro virtual y el propio medio como sistema de
archivos.
Cuando el sistema operativo es ejecutado por un dispositivo de slo lectura como un CD o DVD, el usuario
necesita utilizar una memoria USB o un disco duro instalado en la mquina para conservar su informacin entre
sesiones. La informacin del sistema operativo es usualmente cargada en la memoria RAM.
La portabilidad de este tipo de distribuciones las hace ideales para ser utilizadas en demostraciones,
operaciones de recuperacin, cuando se utiliza una mquina ajena o como medio de instalacin para una
distribucin estndar. Actualmente, casi todas las distribuciones tienen una versin CD/DVD autnomo o vivo.
Distribuciones populares
Entre las distribuciones Linux ms populares se incluyen:

Arch Linux, una distribucin basada en el principio KISS, con un sistema de desarrollo continuo entre
cada versin (no es necesario volver a instalar todo el sistema para actualizarlo).

Debian, una distribucin mantenida por una red de desarrolladores voluntarios con un gran
compromiso por los principios del software libre.

Fedora, una distribucin lanzada por Red Hat para la comunidad.


7

Ubuntu, una popular distribucin para escritorio basada en Debian y mantenida por Canonical.

Kubuntu, la versin en KDE de Ubuntu.

Linux Mint, una popular distribucin derivada de Ubuntu.

Chakra project, una popular distribucin para escritorio, inicialmente basada en Arch Linux, actualmente
se encuentra en un desarrollo independiente.

openSUSE, originalmente basada en Slackware es patrocinada actualmente por la compaa SUSE (The
Attachmate Group).

Puppy Linux, versin para equipos antiguos o con pocos recursos que pesa unos 130 MiB.

CentOS, una distribucin creada a partir del mismo cdigo del sistema Red Hat pero mantenida por una
comunidad de desarrolladores voluntarios.

Gentoo, una distribucin orientada a usuarios avanzados, conocida por la similitud en su sistema de
paquetes con el FreeBSD Ports, un sistema que automatiza la compilacin de aplicaciones desde su
cdigo fuente.

Knoppix, fue la primera distribucin live en correr completamente desde un medio extrable. Est
basada en Debian.

Mandriva, mantenida por la compaa francesa del mismo nombre, es un sistema popular en Francia y
Brasil. Est basada en Red Hat.

PCLinuxOS, derivada de Mandriva, pas de ser un pequeo proyecto a una popular distribucin con una
gran comunidad de desarrolladores.

Red Hat Enterprise Linux, derivada de Fedora, es mantenida y soportada comercialmente por Red Hat.

Slackware, una de las primeras distribuciones Linux y la ms antigua en funcionamiento. Fue fundada en
1993 y desde entonces ha sido mantenida activamente por Patrick J. Volkerding.

Slax, es un sistema Linux pequeo, moderno, rpido y portable orientado a la modularidad. Est basado
en Slackware.

Dragora y Trisquel, que van adquiriendo importancia entre las distribuciones que slo contienen
software libre.

Canaima, es un proyecto socio-tecnolgico abierto, construido de forma colaborativa, desarrollado en


Venezuela y basado en Debian.

Tuquito, Basada en Ubuntu, distribucin desarrollada en argentina con buenas interfaces grficas y
drivers universales. Recomendada para usuarios iniciales.

El sitio web DistroWatch ofrece una lista de las distribuciones ms populares; la lista est basada principalmente
en el nmero de visitas, por lo que no ofrece resultados muy confiables acerca de la popularidad de las
distribuciones.

Instalacin de Debian
Una vez que ya tengamos el .iso descargado y lo grabemos en un CD, hacemos que el ordenador arranque por
CD-ROM y nos debe salir la pantalla de bienvenida:

Seleccionamos la opcin Graphical Install con la que seguramente te sentirs ms cmodo si es la primera vez
que instalas un linux.
Configuracin de idioma, ubicacin y teclado
Seleccin del idioma en el que queremos tener Debian

Seleccin de la Ubicacin

Configuracin del teclado

Una vez hayamos seleccionado esto, comenzara a cargar datos desde el cd para seguir con la instalacin y
configuraciones.

Configuracin de usuarios y contraseas


En la siguiente pantalla nos pide el nombre en red que le queremos dar al equipo, en nuestro caso le vamos a
poner SERVERLX.

10

Ahora nos pide el nombre del dominio, esto lo podemos dejar en blanco o bien escribir el dominio al que va a
pertenecer este servidor. Por ejemplo en nuestro caso podra ser driverlandia.com, pero ahora lo dejaremos en
blanco.

Nos ha configurado el servidor con IP dinmica mediante DHCP, pero no te preocupes, luego le pondremos una
IP esttica para poder hacer accesible nuestro servidor desde internet o simplemente no tener que estar mirando
que IP tiene en cada momento para poder usarlo.
En la siguiente pantalla configuramos la contrasea para el usuario root

Y en las tres pantallas siguientes nos solicitara que creemos un nuevo usuario. El orden que siguen son
El login que queremos para el usuario
El nombre que queremos que se muestre
La contrasea que queremos ponerle a ese usuario
Hemos juntado las tres pantallas en una sola imagen para que sea ms cmoda su lectura, por lo que no te
asustes si solo te sale uno de los tres campos que salen a continuacin, simplemente continua y te irn
apareciendo en las pantallas siguientes.

11

Configuracin de reloj
En la siguiente pantalla nos solicita en que zona horaria debemos configurar el reloj. En nuestro caso
seleccionamos pennsula, ya que el servidor esta en Barcelona.

Particionado de discos duros


En esta seccin hemos de tener algo claro cmo queremos particionar el disco duro. Si solamente queremos
tener un servidor Linux o si por el contrario queremos mantener el antiguo sistema operativo que tenamos.
CUIDADO! Esto BORRA TODOS LOS DATOS que hay en el disco duro. Si no quieres perder los datos que tenias
es mejor que detengas la instalacin, reinicies el pc y te informes sobre como particionar discos o busques
ayuda.

En la siguiente captura podemos ver que nos da a elegir sobre que disco duro borrar los datos e instalar Linux, si
solo tenemos un disco duro instalado como es nuestro caso, lo seleccionamos y seguimos con la instalacin.

Y a continuacin nos pedir como queremos exactamente el particionado del disco duro, la mejor opcin para
usuarios nuevos seria seleccionar Separar la particin /home ya que si por algn motivo formateramos de
12

nuevo, la particin home quedara intacta y por lo tanto nuestros datos a salvo. La particin home es el smil al
Documents and Settings de los sistemas Windows.

Nos muestra como ha quedado particionado el disco duro y tambin nos da opcin a cambiarlo si as lo
deseamos. En este caso ya nos va bien, que quede con tres particiones.

/ Es la particin donde se instala el sistema operativo junto con los programas que instalaremos a posterior.
/home Es la particin donde se guardaran los datos de el/los usuarios que demos de alta en nuestro Linux.
/swap o intercambio Es la particin que hace la funcin de memoria virtual.
Por lo que teniendo seleccionada la opcin de Finalizar el particionado y escribir los cambios en el disco
pulsamos el botn de continuar.
Y por fin el paso final y ltimo antes de que se guarden los cambios que hemos hecho en el disco duro, si no
estamos convencidos de lo que estamos haciendo, esta es la ltima oportunidad para dar marcha atrs, reiniciar
e informarnos.

Seleccionamos Si y le damos a continuar para que se realicen los cambios en el disco.


Instalando Debian
13

Lo primero que veremos ser una pantalla de carga, donde veremos que descarga paquetes de internet y los va
instalando.

A continuacin nos pide que seleccionemos el pas que nos configurara en el archivo de sources.list para
descargar los paquetes que queramos instalar. Hay que seleccionar el que os quede ms cercano, en nuestro
caso es Espaa.

Y dentro de el pas que hemos seleccionado tenemos diferentes servidores desde los que descargar.
Seleccionamos tambin el que ms cerca nos quede, si no lo sabemos, pues seleccionamos el propio de Debian
y ya est.

Si estamos detrs de un proxy, debemos configurarlo. Si no sabemos los datos de configuracin, contactar con
el administrador de vuestra empresa o el que lleve la gestin de la red. Para usuarios que lo estn instalando en
su casa, simplemente dejarlo en blanco, puesto que seguramente no tienes un proxy HTTP montado en tu red.

El instalador se pondr a descargar e instalar los paquetes desde Internet (kernel, actualizaciones de sistema)
simplemente hay que esperar a que nos salga la siguiente pantalla donde nos preguntara si queremos enviar
datos annimos a Debian del uso de los paquetes que instalaremos en nuestro servidor.
Esto es a gustos, al ser una encuesta annima estaramos ayudando a que Debian mejorara puesto que si ven
que mucha gente instala un paquete, seguramente en la prxima versin lo aadan para que se instale
automticamente, por lo que aqu en Driverlandia vamos a seleccionar que Si y vamos a continuar.
14

Y a continuacin nos mostrar los perfiles pre-configurados o paquetes adicionales para instalar en nuestro pc.
PC Escritorio: Entorno de escritorio grafico + Utilidades estndar del sistema
PC Porttil: Entorno de escritorio grfico + Ordenador porttil + Utilidades estndar del sistema
Servidor Gaming: Servidor SSH + Utilidades estndar del sistema, si adems queremos que tenga la web y el
foro para el servidor gaming, pues debemos tambin aadirle las opciones para el servidor web.
Servidor Web: Servidor web + Servidor SSH + Utilidades estndar del sistema
Para la versin servidor, una vez tengamos instalado todo el sistema, faltar instalar el sistema la base de datos
MySQL y el paquete Webmin
Mysql: apt-get install mysql-server
Webmin: Deberemos descargar el paquete de la pgina oficial e instalarlo manualmente.
En nuestro caso estamos instalndolo para un entorno PC Escritorio, por lo que seleccionaremos las opciones
que hemos descrito arriba y le damos a continuar. Comenzar a descargar paquetes, dependiendo de lo que
hayis seleccionado tardar ms o menos tiempo.

La siguiente pantalla nos pedir si deseamos instalar el cargador de arranque GRUB. Es muy recomendable
hacerlo, tanto para ordenadores en los que tengis dos sistemas operativos, como para este caso. Por lo que
aceptamos la instalacin del paquete Grub.
Finalmente nos aparecer la ltima pantalla que nos solicitar reiniciar el equipo. Reiniciamos, sacamos el cd,
dejamos que el ordenador arranque y podamos disfrutar de nuestra Debian.

15

El Sistema Operativo Linux


Consolas virtuales
El ncleo de Linux implementa consolas virtuales. De esta manera se consigue que un nico conjunto de teclado
y pantalla se comporten como varios terminales conectados al mismo sistema. Afortunadamente, la utilizacin
de las consolas virtuales es una de las cosas ms sencillas en Debian: hay teclas rpidas para cambiar
rpidamente de una consola a otra. Para probarlo, entre en una sesin del sistema, y pulse Alt-F2 (pulsar de
forma simultnea la tecla Alt de la izquierda y F2, esto es, la tecla de funcin nmero 2).
Ahora debera encontrarse con que el sistema le vuelve a pedir que se autentifique. No se asuste: ahora se
encuentra en la consola virtual (VC, Virtual Consola) nmero 2. Inicie otra sesin aqu y haga algo (ms rdenes

whoami o cualquier otra cosa) para confirmar que de verdad est en un intrprete de rdenes. Ahora podemos
volver a la consola nmero pulsando Alt-F1. O quiz prefiera pasar a una tercera consola virtual, de la manera
obvia (Alt-F3).
Debian est configurada por defecto con seis consolas Activas, a las que puede acceder mediante la tecla Alt y
las de funcin desde F1 a F6. (Tcnicamente, hay ms consolas virtuales activas, pero slo se le permite iniciar
sesiones en seis de ellas. Las otras se utilizan para el sistema de ventanas X o para otros propsitos especiales).
Si est utilizando el sistema de ventanas X, normalmente ste arrancar en la primera consola que no est
siendo utilizada (posiblemente, VC 7). Adems, para cambiar de la consola virtual de X a alguna otra, de la
primera a la sexta, deber aadir Ctrl a la secuencia de teclas. Esto es, Ctrl-Alt-F1 para obtener la VC 1. Pero
puede pasar desde una VC de texto a la consola virtual de X utilizando Alt solamente. Si no piensa abandonar X
nunca, no se preocupe; X cambia automticamente a su consola virtual al arrancar.
Una vez que se acostumbre, es posible que las consolas virtuales se conviertan en una herramienta
indispensable para hacer varias cosas a la vez. (El sistema de ventanas X sirve para el mismo propsito,
proporcionando varias ventanas en lugar de varias consolas). Puede ejecutar un programa diferente en cada VC
o iniciar una sesin como root en una VC y en otra como su usuario habitual. O cualquiera de la familia puede
utilizar su propia VC; Esto es especialmente til si utiliza X, en cuyo caso puede ejecutar varias sesiones de X a la
vez, en diferentes consolas virtuales.

Comandos bsicos
ls
list: listar. Es el primer comando que todo linuxero debe aprender. Nos muestra el contenido de la carpeta que le
indiquemos despus. Por ejemplo. Si queremos que nos muestre lo que contiene /etc:
$ ls /etc
Si no ponemos nada interpretar que lo que queremos ver es el contenido de la carpeta donde estamos
actualmente:
$ ls
16

Adems acepta ciertos argumentos que pueden ser interesantes. Para mostrar todos los archivos y carpetas,
incluyendo los ocultos:
$ ls -a
Para mostrar los archivos y carpetas junto con los derechos que tiene, lo que ocupa, etc.:
$ ls -l
Adems se pueden solapar los argumentos. Si quisiramos mostrar los archivos de la misma forma que antes,
pero que muestre tambin los ocultos:
$ ls -la
cd
change directory: cambiar directorio. Podemos usarlo con rutas absolutas o relativas. En las absolutas le
indicamos toda la ruta desde la raz (/). Por ejemplo, estemos donde estemos, si escribimos en consola
$ cd /etc/apt
nos llevar a esa carpeta directamente. Del mismo modo si escribimos
$ cd /
nos mandar a la raz del sistema de ficheros.
mkdir
make directory: hacer directorio. Crea una carpeta con el nombre que le indiquemos. Nuevamente podemos usar
rutas absolutas y relativas. Podemos indicarle toda la ruta que le precede al directorio que queremos crear, o si
estamos ya en la carpeta que lo va a contener basta con poner tan slo el nombre:
$ mkdir /home/tu_cuenta/pepino
Si ya estamos en /home/tu_cuenta
$ mkdir pepino
rm
remove: borrar. Borra el archivo o la carpeta que le indiquemos. Como antes se puede indicar la ruta completa o
el nombre del archivo. Esto a partir de ahora lo vamos a obviar, creo que ya ha quedado claro con los dos
comandos anteriores.
Para borrar un archivo:
$ rm nombre_archivo
Para borrar una carpeta vaca:
rm nombre_carpeta
Para borrar una carpeta que contiene archivos y/o otras carpetas que pueden incluso contener ms:
rm -r nombre_carpeta
Otras opciones: -f no te pide una confirmacin para eliminar o -v va mostrando lo que va borrando.
cp
copy: copiar. Copia el archivo indicado donde le digamos. Aqu podemos tambin jugar con las rutas, tanto para
el fichero origen, como en el del destino. Tambin podis poner el nombre que le queris poner a la copia. Por
17

ejemplo, si estuviramos en /etc/X11 y quisiramos hacer una copia de seguridad de xorg.conf en nuestra
carpeta personal:
$ cp xorg.conf /home/tu_carpeta/xorg.conf.backup
mv
move: mover. Es igual que el anterior, slo que en lugar de hacer una copia, mueve directamente el archivo con
el nombre que le indiquemos, puede ser otro distinto al original:
$ mv /etc/pepino.html /home/tu_carpeta/ese_pepino.html
Otro uso muy prctico que se le puede dar es para renombrar un archivo. Basta con indicar el nuevo nombre en
el segundo argumento con la misma ruta del primero. En este ejemplo suponemos que ya estamos en la carpeta
que lo contiene:
$ mv pepino.html ese_pepino.html
find
find: encontrar. Busca el archivo o carpeta que le indiques:
$ find / -name pepino
El comando anterior buscara en todos los sitios las carpetas y archivos que se llamen pepino. Si tuviramos la
seguridad de que se encuentra en /var por ejemplo, se lo indicaramos:
$ find /var -name pepino
Si no estamos muy seguros del nombre podemos indicrselo con comodines. Supongamos que el nombre de lo
que buscamos contiene pepi, en la misma carpeta de antes:
$ find /var -name *pepi*
Tiene otras opciones. Por ejemplo podemos decirle que encuentre los archivos/carpetas de ms de 1500 KB:
$ find / -size +1500
O los archivos/carpetas contienen el nombre pepi y tienen menos de 1000 KB:
$ find / -name *pepi* -size -1000
locate
locate es un comando de bsqueda de archivos, bastante parecido al comando anteriormente visto, el find. La
diferencia de locate es que la bsqueda la hace en una base de datos indexada para aumentar significativamente
la velocidad de respuesta. Esto quiere decir, que locate realmente no busca en el disco del sistema, sino que en
un archivo con la lista de todos los archivos que existen en el GNU/Linux. Generalmente todas las distribuciones
de GNU/Linux ejecutan a una hora determinada (generalmente cerca de las 4:00am, ya que tarda algn tiempo
realizar esta tarea) un comando para actualizar la base de datos que utiliza locate, dicho comando se llama
updatedb. Su sintaxis es:
locate PATRN
Donde PATRN corresponde al mismo tipo de patrn que en el comando find. Ejemplo de ejecucin:
usuario@maquina:~/$ locate locate
/usr/bin/locate
/usr/lib/locate
18

/usr/lib/locate/bigram
/usr/lib/locate/code
/usr/lib/locate/frcode
/usr/share/doc/kde/HTML/en/kcontrol/kcmlocate.docbook.gz
/usr/share/doc/xlibs-dev/XdbeAllocateBackBufferName.3.html
/usr/share/doc/xlibs-dev/XdbeDeallocateBackBufferName.3.html
Como se puede observar en el ejemplo, locate ha listado todos aquellos archivos que posean la palabra locate
en su nombre (los directorios estn incluidos).
clear
clear: despejar. Limpia la pantalla/consola quedndola como si acabramos de abrirla.
$ clear
ps
process status: estado de los procesos. Nos muestra lo que queramos saber de los procesos que estn corriendo
en nuestro sistema. Cada proceso est identificado con un nmero llamado PID. Si hacemos
$ ps -A
nos mostrar un listado de todos los procesos, su PID a la izquierda y su nombre a la derecha. Si queremos
ms informacin:
$ ps aux
kill
kill: matar. Elimina el proceso que le indiquemos con su PID:
$ kill
En ocasiones el proceso no muere del todo, pero se le puede forzar al sistema para que lo mate con seguridad
del siguiente modo:
$ kill -9
sudo
super-user do: hacer como superusuario. La cuenta de usuario en Ubuntu es relativamente normal. Tiene
derechos de administrador a medias. Me explico, los tiene, pero cada vez que se haga algo importante y de
riesgo para el sistema, hay que hacerlo mediante el prefijo sudo y escribiendo despus la contrasea.
Por ejemplo, algo que hemos hecho muchas veces en los tutoriales es hacer una copia de seguridad del fichero
xorg.conf. ste est localizado en la carpeta /etc/X11 y ah ningn usuario puede hacer modificaciones o borrar
nada si no es el administrador o tiene derechos como tal, gracias a sudo. Por eso hacamos siempre:
$ sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf
Siempre que necesitemos hacer un apt-get/aptitude update o install y acciones de este tipo, tendremos que
poner antes el sudo.

19

date
Este comando tiene dos funciones: una es la de mostrar en pantalla la fecha del sistema (en varios formatos,
como veremos a continuacin), la otra es la funcin de configurar la hora del sistema, pero para que esta
funcionalidad se cumpla, se debe ejecutar el comando desde una sesin de root. La sintaxis de este comando es:
date [opcin...] [+FORMAT]
date [opcin] [MMDDhhmm[[CC]AA][.ss]]
FORMAT controla el formato con que se mostrar la fecha, alguna de las opciones de este argumento son:
%a

Da de la semana abreviado.

%A

Da de la semana completo.

%b

Nombre del mes abreviado.

%B

Nombre del mes completo.

%d

Da del mes.

%m

Nmero de mes.

%H

Hora, en formato 24h.

%M

Minuto.

%S

Segundos.

Existen muchsimas ms opciones de formato que alentamos al lector a verlas en la pgina de manual de este
comando date.
Ejemplo de ejecucin:
usuario@maquina:~/$ date
Sun Apr 8 15:09:32 ART 2001
usuario@maquina:~/$ date +"%A %d %B"
Sunday 08 April
ln
Este comando sirve para establecer enlaces entre archivos. Un enlace puede ser rgido o simblico, el primer tipo
es simplemente una forma de dar otro nombre a un archivo, por ejemplo teniendo el archivo /etc/passwd, se
puede hacer un enlace y tener el nuevo nombre en /home/usuario/claves, y ambos nombres de archivos
refirindose al mismo archivo. El segundo tipo es parecido al primero, pero se pueden enlazar directorios, y
adems de diferentes sistemas de archivos, este tipo de enlace es el que ms se utiliza. La sintaxis del comando
ln es:
ln [opciones] origen [destino]
ln [opciones] origen... directorio
Sus opciones ms importantes son las siguientes:
-d

Permite al super-usuario hacer enlaces rgidos a directorios.

-s

Crear enlace simblico.

-f

Borrar los archivos de destino que ya existen.

Para el caso del ejemplo anterior, se debera ejecutar:


ln -s /etc/passwd /home/usuario/claves
20

Cuando se ejecuta ls -l en un directorio donde hay un enlace simblico, ste se nota de la siguiente manera:
usuario@maquina:~/$ ls -l claves
lrwxrwxrwx

1 usuario usuario 11 Apr 8 13:33 claves -> /etc/passwd

La l al comienzo de la lnea especifica el tipo de archivo listado, en este caso, un link.


whereis
Este comando se utiliza para localizar el archivo binario, el cdigo fuente y la pgina de manual de un
determinado comando. Su sintaxis es como sigue:
whereis [opciones] archivo...
La lista de opciones ms utilizadas es:
-b

Buscar solamente el archivo binario.

-m

Buscar solamente la pgina manual.

-s

Buscar solamente el cdigo fuente.

Como ejemplos, se ve lo siguiente:


usuario@maquina:~/$ whereis -m whereis
whereis: /usr/share/man/man1/whereis.1.gz
usuario@maquina:~/$ whereis passwd
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man5/passwd.5.gz
PATH
Una de las variables ms importantes de Linux es PATH, la cual determina los directorios donde la shell busca
los ficheros binarios (los ejecutables en terminologa Windows) de los comandos para no tener que teclearlos
con su ruta completa.
Primero veamos los directorios que ya estn incluidos en la variable PATH. Lo hacemos anteponiendo el smbolo
del dlar ( $ ) a PATH:
paco@paco-pc:~$ $PATH
bash: /usr/local/bin:usr/bin:/bin:/usr/local/games:usr/games: No existe el fichero o el
directorio
paco@paco-pc:~$
Tambin podemos verlo usando el comando echo:
paco@paco-pc:~$ echo $PATH
bash: /usr/local/bin:usr/bin:/bin:/usr/local/games:usr/games
paco@paco-pc:~$
Bien, estos son los directorios que la variable PATH trae por defecto, separados por dos puntos:
/usr/local/bin
/usr/bin
/bin
/usr/local/games
21

/usr/games
Ahora aadiremos el directorio /sbin a la variable PATH usando el comando export:
paco@paco-pc:~$ sudo export PATH=$PATH:/sbin
paco@paco-pc:~$
Ya est aadido. Lo podemos ver si volvemos a listar la variable PATH:
paco@paco-pc:~$ echo $PATH
bash: /usr/local/bin:usr/bin:/bin:/usr/local/games:usr/games:/sbin
paco@paco-pc:~$
Ocurre que este cambio es temporal y dejar de tener efecto en cuanto cerremos la sesin. Si queremos que el
cambio sea permanente tenemos varias opciones. Podemos editar el archivo ~/.bashrc (recordemos que el
carcter ~ equivale a /home/usuario, que el punto en primer lugar significa archivo oculto y que estamos
hablando de la shell bash), el archivo ~/bash_profile, o el ~.profile en caso de que el anterior no exista y
aadirle la siguiente lnea:
PATH="$PATH:/sbin"
df
Provee informacin sobre la utilizacin del espacio en disco en los diferentes sistemas de archivos montados en
el sistema. Para un sistema GNU/Linux, quedarse sin espacio libre es algo bastante grave, ya que muchos

demonios y programas en general utilizan el directorio /tmp para guardar informacin mientras se ejecutan. La
sintaxis de df es la siguiente:
df [opciones] [sistema-de-archivo...]
Si no se provee del argumento sistema-de-archivo, df informar acerca de todos los sistemas de archivos
montados y en funcionamiento. Las opciones de df ms relevantes son:
-h

Imprimir los tamaos de forma ms legible para humanos.

-i

Informar sobre la utilizacin de los nodos-. Los nodos- son estructuras internas del sistema de archivos,

cuando ste se queda sin nodos- libres, por ms que haya espacio libre en disco, no se podrn crear nuevos
archivos hasta que se liberen nodos-, generalmente esto no pasa a menos que se generen una enorme cantidad
de archivos muy pequeos.
-k

Mostrar los tamaos en bloques de 1024 bytes.

-m

Mostrar los tamaos en bloques de mega-bytes.

Un ejemplo de ejecucin del df es:


usuario@maquina:~/$ df
Filesystem
/dev/hda2
/dev/hda1
/dev/hda4
/dev/hdb2
22

1k-blocks

Used Available Use% Mounted on

2949060 2102856
23302

2593

696400 75% /
19506 12% /boot

10144728 5506796 4637932 54% /home


3678764 3175268

503496 86% /u

alias
Existe una forma muy sencilla de personalizar y hacer ms fciles algunos comandos que normalmente usamos
en la consola, mediante el uso de Alias.
Un Alias como su nombre lo indica, nos servir para reemplazar una palabra o serie de palabras con otra ms
corta y sencilla. Pongamos un ejemplo prctico, digamos que deseamos ver los logs del sistema, usando una
aplicacin llamada Colorizer la cual se encarga de colorear el resultado en consola. La lnea sera:
$ sudo tailf -n 5 /var/log/syslog | ccze
Pero estoy seguro que sera ms sencillo si en vez de escribir todo eso, pusiramos en la consola por ejemplo,
algo tan simple como:
$ syslog
Cierto? Sera mucho ms cmodo y fcil de recordar. Entonces Cmo lo hacemos?
Creando un Alias.
Crear un alias es realmente sencillo. La sintxis sera:
alias palabra_corta=comando o palabras a reemplazar
si tomamos el ejemplo anterior sera:
alias syslog=sudo tailf -n 5 /var/log/syslog | ccze
El comando va entre comillas simples. Pero la pregunta es Dnde ponemos esto? Pues si queremos que solo
sea temporal, simplemente lo escribimos en la consola y durar hasta que la cerremos.
Ahora, si lo queremos de forma permanente, esto lo ponemos dentro del fichero ~/.bashrc el cual est en
nuestro /home, y si no est, pues lo creamos (siempre con el punto delante) . Cuando ya tengamos aadida la
lnea del alias en este fichero, simplemente ponemos en consola:
$ . .bashrc
grep
Escribir en salida estndar aquellas lneas que concuerden con un patrn. Su sintaxis es como sigue:
grep [opciones] PATRN [ARCHIVO...]
grep [opciones] [-e PATRN | -f ARCHIVO] [ARCHIVO...]
Este comando realiza una bsqueda en los ARCHIVOs (o en la entrada estndar, si no se especifica ninguno)
para encontrar lneas que concuerden con PATRN. Por defecto grep imprime en pantalla dichas lneas. Sus
opciones ms interesantes son:
-c

Modifica la salida normal del programa, en lugar de imprimir por salida estndar las

lneas coincidentes, imprime la cantidad de lneas que coincidieron en cada archivo.


-e PATRN

Usar PATRN como el patrn de bsqueda, muy til para proteger aquellos patrones de

bsqueda que comienzan con el signo -.


-f ARCHIVO

Obtiene los patrones del archivo ARCHIVO.

-H

Imprimir el nombre del archivo con cada coincidencia.

-r

Buscar recursivamente dentro de todos los subdirectorios del directorio actual.

23

El patrn de bsqueda normalmente es una palabra o una parte de una palabra. Tambin se pueden utilizar

expresiones regulares, para realizar bsquedas ms flexibles, por ejemplo, si se quisiera buscar la ocurrencia de
todas las palabras que comiencen con a minscula, la ejecucin del comando sera algo as:
usuario@maquina:~/$ grep a* archivo
El tema de manejo de expresiones regulares es bastante largo y complejo, ms adelante se dar con ms detalle.
head
Escribe por salida estndar la primer parte de un archivo. Su sintaxis es como sigue:
head [opcin...] [archivo...]
Si no se especifica el argumento archivo, este comando tomar su entrada de la entrada estndar. La lista de
opciones ms importantes sigue a continuacin:
-c N

Escribe los primeros N bytes.

-n N

Escribe las primeras N lneas en vez de las primeras 10 (que es el valor predeterminado).

tail
El comando tail escribe a la salida estndar la ltima parte de un archivo. Su sintaxis es:
tail [opcin...] [archivo...]
Al igual que head, si no se le proporciona un argumento archivo, este comando tomar su entrada desde la
entrada estndar. Alguna de sus opciones son las siguientes:
-c N

Escribe los ltimos N bytes.

-n N

Escribe las ltimas N lneas.

-f

Escribir la ltima parte del archivo a medida que va creciendo. Esta opcin es muy til para monitorear

archivos de registro que van creciendo con el tiempo.


which
El comando which nos sirve para averiguar dnde se encuentra instalado un determinado programa. Por
ejemplo, si ejecutamos:

$ which find
Nos devolver:

/usr/bin/find
Esto nos mostrar la primera aparicin del programa buscado. Si queremos que nos muestre todas las
ocurrencias

que

encuentre,

utilizaremos

el

parmetro

-a.

As, si ejecutamos:

$ which -a find
Nos devolver todas las ocurrencias que encuentre:

/usr/bin/find
/usr/bin/X11/find
Para

realizar

la

bsqueda

which

localiza

los

ficheros

ejecutables

mediante

el

PATH.

Esto puede sernos til, por ejemplo, para comprobar si tenemos dos versiones de un mismo programa instalado
en diferentes directorios
24

passwd
password: contrasea. Con este comando podremos cambiar la contrasea de nuestra cuenta. Primero nos
pedir la contrasea actual como medida de seguridad. Despus nos pedir que introduzcamos dos veces
seguidas la nueva contrasea.
$ passwd
su
super-user: superusuario. Mediante su podremos loguearnos como superusuario. Tras escribirlo nos pedir la
contrasea de root y estaremos como administrador. Podremos hacer todo lo que queramos.
$ su
Este comando tambin nos permite hacer login con otra cuenta distinta. Por ejemplo, imaginemos que tenemos
otra cuenta, adems de root y la nuestra, llamada invitado. Para hacer login como tal bastara con poner:
$ su invitado
y despus escribir la contrasea de esa cuenta.
sudo passwd
No es un comando propiamente dicho, pero es interesante que lo conozcis. Gracias a la unin de estos dos
comandos podris cambiar la contrasea de root (la del super-usuario).
$ sudo passwd
apt
advanced packets tool: herramienta avanzada de paquetes. Es uno de los comandos ms tiles que se han
desarrollado en los sistemas GNU/Linux debian o basados en esta distro. Nos permite comprobar
actualizaciones, actualizar todo el sistema. Tambin nos ofrece funcionalidad para buscar, descargar e instalar
paquetes con una sola orden.
Tenemos variantes, las ms usadas son las siguientes:
$ apt-cache search nombre_paquete
Busca nombre_paquete para ver si existe literal o aproximadamente ofrecindonos los paquetes que pudieran
ser en caso de que hayamos puesto un nombre aproximado.
$ apt-get update
Actualiza los repositorios que son los que contienen los paquetes. Los repositorios son como las direcciones que
contienen nuestros paquetes. apt-get update lo que hace es actualizar el listado de todos esos paquetes, con la
direccin de dnde obtenerlos para que a la hora de hacer la bsqueda y su posterior descarga sea ms rpida
hacindolo en nuestro ordenador.
$ apt-get upgrade
Actualiza nuestro sistema con todas las posibles actualizaciones que pudiera haber. La actualizacin no se realiza
slo sobre el propio sistema operativo, sino tambin sobre las aplicaciones que estn contenidas en los
repositorios. Una til forma de estar siempre al da.
$ apt-get install nombre_paquete

25

Localizado el nombre del paquete que queremos descargar e instalar, este comando se encargar del proceso.
Buscar en nuestro ndice (el que se crea con update) de dnde tiene que descargarse el paquete, lo hace y
posteriormente lo instala.
$ apt-get remove [--purge] nombre_paquete
Elimina el paquete especificado del sistema. Admite el argumento purge (corchetes = opcional) para que
borre tambin los ficheros de configuracin.
$ apt-get autoremove
Elimina paquetes que han quedado inservibles tras realizar algn apt-get remove, los llamados hurfanos.
Normalmente tras hacer este ltimo te avisa en un mensaje que lo realices.
aptitude
aptitude: aptitud, habilidad. En el fondo juega con las siglas de apt para crear aptitude. Es una versin mejorada
de apt. Si os habis fijado en todos los manuales y entradas donde haba un proceso de instalacin he usado
aptitude en lugar de apt. El segundo es quiz el ms extendido al ser el que vio la luz primero.
aptitude naci como un front-end de apt, es decir, como una especie de aplicacin grfica y en modo texto para
realizar todo lo que hace apt. Pero lo cierto es que sus caractersticas son mejores.
apt cuando instala algo te puede realizar una sugerencia para que instales algo ms que te podra venir bien,
pero no lo hace. Hay programas que a la vez usan otros para algunas de sus funciones u opciones. apt no
instalara los segundos, como mucho te avisara. Sin embargo aptitude s que lo instalar porque sabe que de
alguna forma es indispensable para el que has pedido.
De la misma forma, si con apt instalas luego ese programa que es usado por otro, cuando desinstalas el
principal, no se desinstalar el secundario, aunque ste ya no tenga mucho sentido que est instalado, y lo
mismo sucede con libreras. aptitude est capacitado para desinstalar lo que l mismo ha instalado como
recomendacin. Te deja el sistema ms limpio tras las desinstalaciones.
Para abrir el interfaz grfico de aptitude, tan slo hay que teclearlo:
$ aptitude
Sin embargo, tambin se puede usar exactamente igual que apt, pero con las caractersticas que he comentado
de aptitude:
$ aptitude search nombre_paquete
$ aptitude install nombre_paquete
$ aptitude remove nombre_paquete
$ aptitude purge nombre_paquete
$ aptitude update
$ aptitude upgrade
dpkg
depackage: despaquetar. Los paquetes cuando se instalan sufren un proceso de despaquetaje. En el fondo un
paquete .deb contiene una serie de scripts de pre-instalacin, post-instalacin y los archivos en cuestin del
paquete.
26

Este comando lo usaremos para instalar un paquete .deb que ya tengamos descargados en nuestro sistema. En
muchas ocasiones hay una aplicacin que no est en los repositorios y nos hemos bajado el .deb para instalarlo
con el interfaz grfico que corresponda (GDebi en el caso de GNOME).
En el fondo estas interfaces grficas estn basadas en dpkg. Si queremos instalar un paquete ya descargado
mediante consola usaremos el argumento -i (i=install):
$ dpkg -i nombre_paquete
Para desinstalarlo -r (r=remove):
$ dpkg -r nombre_paquete
Para desinstalar el paquete y los ficheros de configuracin purge (purgar):
$ dpkg -r purge nombre_paquete
dmidecode
Es una herramienta que permite conocer a fondo el hardware de nuestro equipo, tal como se describe en la BIOS
del sistema segn el SMBIOS / DMI estndar SMBIOS; el cual significa "System Management BIOS" y DMI
significa "Desktop Management Interface" , pero el programa no llega esta all nada ms. Esta herramienta es
capaz de mostrar :
El fabricante del Sistema, Modelo Exacto , nmero de serie, versin del BIOS, Memorias, Cuanta Memoria soporta
,Modelo de Memoria, Modulo, Procesador y muchas opciones ms. El DMI no slo puede describir de que esta
hecho el sistema, sino que tambin pueden informar de la posible evolucin (como la CPU o la mxima cantidad
de memoria compatible).
Los datos especificados en el SMBIOS se clasifican en tipos (types) y a cada uno de ellos se le identifica con un
nmero en especfico:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

BIOS
System
Base Board
Chassis
Processor
Memory Controller
Memory Module
Cache
Port Connector
System Slots
On Board Devices
OEM Strings
System Configuration Options
BIOS Language
Group Associations
System Event Log
Physical Memory Array
Memory Device
32-bit Memory Error
Memory Array Mapped Address
Memory Device Mapped Address
Built-in Pointing Device
Portable Battery
System Reset
Hardware Security
27

25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

System Power Controls


Voltage Probe
Cooling Device
Temperature Probe
Electrical Current Probe
Out-of-band Remote Access
Boot Integrity Services
System Boot
64-bit Memory Error
Management Device
Management Device Component
Management Device Threshold Data
Memory Channel
IPMI Device
Power Supply

Por tanto la sintaxis seria:


dmidecode -t nmero_de_type
Ejemplo:
Saber la memoria valida de una PC ?

donde :

#dmidecode -t 5,15
SMBIOS 2.3 present.
Handle 0x0008, DMI type 5, 22 bytes
Memory Controller Information
Error Detecting Method: 64-bit ECC
Error Correcting Capabilities:
None
Supported Interleave: One-way Interleave
Current Interleave: One-way Interleave
Maximum Memory Module Size: 2048 MB
Maximum Total Memory Size: 6144 MB
Supported Speeds:
70 ns
60 ns
Supported Memory Types:
SIMM
DIMM
SDRAM
Memory Module Voltage: 3.3 V
Associated Memory Slots: 3
0x0009
0x000A
0x000B
Enabled Error Correcting Capabilities:
None

t = type
5 = corresponde a Memory Controller
15 = System Event Log
la salida de este comando nos indica lo siguiente:

28

Tipo de memoria soportada (SIMM DIMM SDRAM)

Voltaje de la memoria (3.3v)

Memoria total soportada por el equipo (6144 MB)

Velocidad de la memoria (70 ns y 60 ns)

y muchsima informacin relacionada con la memoria

Saber el lenguaje del Bios?


#dmidecode -t 13
# dmidecode 2.9
SMBIOS 2.3 present.
Handle 0x0027, DMI type 13, 22 bytes
BIOS Language Information
Installable Languages: 1
en|US|iso8859-1
Currently Installed Language: en|US|iso8859-1
Esto indica que la BIOS soporta slo un lenguaje y que el lenguaje instalado es el ingls.
Otra forma de acceder a la informacin es a travs de palabras claves, para ello podemos utilizar el siguiente
cuadro:
Keyword
-----------------------------bios
system
baseboard
chassis
processor
memory
cache
connector
La sintaxis seria de esta forma:
dmidecode --type palabra
ejemplo:
saber el slot de la pc?:
#dmidecode --type slot
dmidecode 2.9
SMBIOS 2.3 present.
Handle 0x0024, DMI type 9, 13 bytes
System Slot Information
Designation: AGP
Type: 32-bit AGP 4x
Current Usage: In Use
Length: Short
ID: 0
Characteristics:
3.3 V is provided
Opening is shared
PME signal is supported
Handle 0x0025, DMI type 9, 13 bytes
System Slot Information
Designation: PCI1
Type: 32-bit PCI
Current Usage: Available
29

Length: Short
ID: 1
Characteristics:
3.3 V is provided
Opening is shared
PME signal is supported
tar
Los archivos .tar son ficheros comprimidos, y el comando tar para la consola es usado para almacenar archivos y
directorios en un solo archivo.
Teniendo en cuenta que las opciones entre [ ] son opcionales, usaremos la comanda bsica de la siguiente
forma:
tar [opciones] [fichero] [directorio]
Las opciones se ponen todas seguidas, sin espacio y sin los [ ]. Algunas de las opciones ms relevantes son:

Sirve para indicar que queremos creer el archivo .tar

Comprime el archivo .tar usando Gzip, reduciendo as el tamao total


del archivo.tar deseado

Cuando se usa con la opcin -c sirve para forzar la creacin del


fichero.tar indicado

Extrae, y descomprime si se da el caso, los directorios y archivos que


se encuentren dentro del fichero.tar especfico

Esta opcin al igual que en otras comandas permite que se muestre


por pantalla todos los pasos que se vayan realizando. Si no se pone
se realizarn las mismas operaciones pero no lo veremos por
pantalla

Dicho esto veamos algunos ejemplos.


Para empezar, podemos empaquetar sin comprimir. En este ejemplo empaquetas el directorio /etc/toda-lamusica creando un fichero musica.tar que se crear en el directorio /home. Ntese que est la opcin de
verbose. Comando:

tar cvf /home/musica.tar /etc/toda-la-musica


Ahora para desempaquetar el archivo anteriormente creado usaremos el siguiente comando, tengo que aadir
que el archivo desempaquetado se crear en el directorio dnde est ubicada la terminal. Comando:

tar xvf /home/musica.tar


Ahora comprimiremos el paquete haciendo que tenga menos peso. Al comprimir el fichero tericamente la
extensin pasa de .tar a .tgz. En principio sigue el mismo esquema anterior pero en ambos casos aadiremos la
opcin -z.
Por ejemplo para empaquetar y comprimir podemos usar:

tar cvfz /home/musica.tar /etc/toda-la-musica


30

Para desempaquetarlo podemos usar:


tar xvfz /home/musica.tar
man
manual: manual. Es otro de los comandos de gran potencia en linux. Normalmente queda programa o comando
viene con un archivo de ayuda muy completo sobre su uso y sus argumentos. Cuando desconozcis cmo se usa
y qu argumentos tiene un comando o aplicacin tan slo tenis que escribir en consola:
$ man nombre
En ocasiones la informacin que nos ofrece man puede llegar a ser excesiva. Casi todos los comandos y
aplicaciones aceptan el argumento help para que muestre cierta ayuda ms resumida. Por ejemplo con
aptitude:
$ aptitude help

31

Sistema de archivos
El sistema de archivos es ms o menos "la forma de escribir los datos en el disco duro". El sistema de archivos
nativo de Linux es el EXT2. Ahora proliferan otros sistemas de archivos con journalising (si se arranca sin haber
cerrado el sistema, no necesitan hacer un chequeo sino que recuperan automticamente su ltimo estado), los
ms conocidos son EXT3, ReiserFS y XFS.
La estructura de directorios que sigue Linux es parecida a la de cualquier UNIX. No tenemos una "unidad" para
cada unidad fsica de disco o particin como en Windows, sino que todos los discos duros o de red se montan
bajo un sistema de directorios en rbol, y algunos de esos directorios enlazan con estas unidades fsicas de
disco. NOTA: Las barras en Linux al igual que en cualquier UNIX son inclinadas hacia la derecha, como se puede
ver ms abajo (ese es el motivo de que en internet sean inclinadas hacia la derecha ya que naci bajo UNIX y en
Linux podremos aprovechar todas sus ventajas).

Principales Directorios:

/etc

/home

/bin

**Contiene comandos bsicos y muchos programas**

/dev

**Contiene archivos simblicos que representan partes del hardware, tales como discos duros,

**Es la raz del sistema de directorios. Aqu se monta la particin principal Linux EXT**
**Contiene los archivos de configuracin de la mayora de los programas**
**Contiene los archivos personales de los usuarios**

memoria...**

/mnt

**Contiene subdirectorios donde se montan (se enlaza con) otras particiones de disco duro,

CDROMs, etc.**

/tmp

**Ficheros temporales o de recursos de programas**

/usr

**Programas y libreras instalados con la distribucin**

/usr/local

/sbin

/lib

**Libreras varias y mdulos del kernel**

/var

**Datos varios como archivos de log (registro de actividad) de programas, bases de datos,

**Programas y libreras instalados por el administrador**

**Comandos administrativos**

contenidos del servidor web, copias de seguridad...**

/proc

**Informacin temporal sobre los procesos del sistema**

Nombres de archivos en Linux


Los nombres de archivos en Linux (como en todos los UNIX) distinguen maysculas de minsculas, esto es, son
"case sensitive". Los archivos README, readme, REadme y rEadme por ejemplo son archivos distintos y por lo
tanto al ser nombres distintos pueden estar en el mismo directorio.
En Linux los archivos no tienen por qu tener una extensin. La suelen tener a modo orientativo, pero no es en
absoluto necesario. Linux sabe qu contiene cada archivo independientemente de cul sea su extensin. Por
32

comodidad, podremos llamar a todos nuestros archivos de texto con la extensin .texto, o a todos nuestros
documentos con la extensin .documento, de esta manera, podremos luego agruparlos ms fcilmente.
Los

ficheros

directorios

ocultos

en

Linux

comienzan

su

nombre

por

un

punto

(.)

Los nombres de archivos o directorios pueden ser muy largos, de ms de 200 caracteres, lo cual nos da bastante
flexibilidad para asociar el nombre de un archivo a lo que contiene. No obstante, hay ciertos caracteres que
nunca se deberan utilizar a la hora de nombrar un archivo. Uno de ellos es el espacio, nunca llamaremos a un
fichero con un nombre que contenga un espacio. Tampoco son recomendados otros caracteres raros como
signos de puntuacin (a excepcin del punto), acentos o la . En algunos casos Linux ni siquiera nos permitir
usarlos. Los recomendables son las letras A-Z, a-z, los nmeros (0-9), el punto, el guin (-) y el guin bajo (_)
para nombrar un archivo. Los acentos y la tampoco se recomiendan.

Niveles de Ejecucin
Los niveles de ejecucin de linux (run levels) se numeran del 0 al 6. Los niveles de ejecucin acaban en el 6
debido a razones prcticas e histricas, pero es posible tener ms si se desea.
La siguiente tabla resume los niveles de ejecucin de usuario en Linux:
* 0 Detencin del sistema (System Halt)
* 1 Monousuario (Single user)
* 2 Modo multiusuario completo (Full multi-user mode) (por defecto)
* 3-5 Igual que el 2
* 6 Reinicio del sistema (System Reboot)

Niveles de ejecucin especiales


El nivel de ejecucin 0 es la condicin de detencin del sistema. Casi todos los computadores X86 modernos se
apagarn automticamente cuando se alcanza el nivel de ejecucin 0. Algunos ordenadores X86 antiguos y otras
arquitecturas permanecern encendidas postrando un mensaje referente a la condicin de detencin.
El nivel de ejecucin 1 se conoce como modo 'mono usuario'. Una descripcin ms acertada sera modo 'rescate'
o 'solucin de problemas'. En el nivel de ejecucin 1 no se inician demonios (servicios). Es de esperar que el
modo mono usuario te permita solucionar lo que hizo necesaria la transicin al modo de rescate.
(Generalmente puedes arrancar en modo mono usuario utilizando tu cargador de arranque, lilo o grub,
aadiendo la palabra 'single' al final de la lnea de comandos del kernel).
Los niveles de ejecucin 2 a 5 son modos multiusuario completos y son idnticos, por defecto, en un sistema de
usuario Linux (Debian). Es prctica habitual en otras distribuciones Linux utilizar el nivel de ejecucin 3 para
autentificacin en modo consola y el nivel de ejecucin 5 para autentificacin en modo grfico.
El nivel de ejecucin 6 se utiliza para enviar una seal de reinicio del sistema. Es igual que el nivel de ejecucin 0
pero al final de la secuencia se produce un reinicio en vez de un apagado.

33

Solamente por completar, existe adems un nivel de ejecucin 'S' que el sistema utiliza para pasar a otro nivel de
ejecucin. Lee las pginas del manual para el comando init si deseas ms informacin, pero, pero en la prctica,
puedes obviarlo.

Dnde residen los Niveles de Ejecucin?


Como cualquier otra cosa en un sistema Linux, los niveles de ejecucin se definen en archivos del sistema de
archivos. Todos los archivos de los niveles de ejecucin se encuentran en el directorio /etc de acuerdo con la
siguiente tabla:

/etc/rc0.d Nivel de ejecucin 0

/etc/rc1.d Nivel de ejecucin 1

/etc/rc2.d Nivel de ejecucin 2

/etc/rc3.d Nivel de ejecucin 3

/etc/rc4.d Nivel de ejecucin 4

/etc/rc5.d Nivel de ejecucin 5

/etc/rc6.d Nivel de ejecucin 6

Cada nivel de ejecucin definido deber tener un directorio rcX.d conde X es el nmero de nivel de ejecucin. El
contenido del directorio rcX.d determina lo que ocurrir en dicho nivel de ejecucin.

Cmo puedo cambiar los niveles de ejecucin?


Antes de cambiar de nivel de ejecucin pude ayudarnos el averiguar en qu nivel de ejecucin nos encontramos.
Utiliza el comando 'runlevel' para obtener dos cosas: el ltimo nivel de ejecucin, y en nivel de ejecucin actual.
A continuacin aparece la ejecucin de dicho comando y su salida:
# runlevel
N2
La

'N'

significa

ninguno,

indicando

que

no

ha

habido

ningn

cambio

desde

el

encendido.

El sistema de inicio (ini system) controla los niveles de ejecucin, ya que como siempre, el sistema de inicio
controla casi todo.
El comando principal utilizado para cambiar de nivel de ejecucin es 'telinit'. "Tell Init" ("Indcale a Init") que
haga algo; como esto:
telinit 3
telninit recibe un argumento en la lnea de comando. Como siempre, comprueba las pginas del manual para
ms detalles. Normalmente el argumento estar entre: 0,1,2,3,4,5,6 o la letra 'S'. Como puedes haber adivinado,
34

el nmero se corresponde con el nivel de ejecucin al que queremos cambiar. Utilizar 'S', para mono-usuario, es
lo mismo que el nmero 1, pero no lo utilices; el nivel de ejecucin 'S' est pensado para ser utilizado por el
sistema.
Una advertencia. Puedes ejecutar el comando telinit para reiniciar (nivel de ejecucin 6) o apagar el equipo (nivel
de ejecucin 0) de un modo sencillo, pero no se recomienda. Ciertos programas necesitan un proceso especial
para una detencin ordenada. No realizar la secuencia de apagado esperada puede tener efectos no deseados
en tus datos. Los sistemas Unix antiguos son especialmente sensibles a operaciones de apagado/inicio.
El mtodo preferido para un cambio serio de nivel de ejecucin es 'shutdown'. Existen nemnicos ms sencillos,
pero en un sistema en ejecucin todos ellos apuntan al mismo comando 'shutdown'. Puedes utilizar los
comandos 'halt', o 'poweroff' para detener un sistema y el comando 'reboot' para reiniciar el sistema. En cada
caso se llama al comando 'shutdown' con diferentes parmetros.

Fundamentos del Shell de comandos


El intrprete de comandos es la interfaz entre el usuario y el sistema operativo. Por esta razn, se le da el
nombre ingls "shell", que significa "caparazn".
Por lo tanto, la shell acta como un intermediario entre el sistema operativo y el usuario gracias a lneas de
comando que este ltimo introduce. Su funcin es la de leer la lnea de comandos, interpretar su significado,
llevar a cabo el comando y despus arrojar el resultado por medio de las salidas.
La shell es un archivo ejecutable que debe interpretar los comandos, transmitirlos al sistema y arrojar el
resultado. Existen varios shells. La ms comn es sh (llamada "Bourne shell"), bash ("Bourne again shell"), csh ("C

Shell"), Tcsh ("Tenex C shell"), ksh ("Korn shell") y zsh ("Zero shell"). Generalmente, sus nombres coinciden con el
nombre del ejecutable.
Cada usuario tiene una shell predeterminada, la cual se activar cuando se abra un indicador del comando. La
shell predeterminada se especifica en el archivo de configuracin /etc/passwd en el ltimo campo de la lnea
que corresponde al usuario. Es posible cambiar de shell durante una sesin. Para esto, slo debe ejecutar el
archivo ejecutable correspondiente, por ejemplo:

/bin/bash

Indicador del sistema


La shell se inicia al leer su configuracin completa (en un archivo del directorio /etc/) y despus al leer la
configuracin propia del usuario (en un archivo oculto cuyo nombre comienza con un punto y que se ubica en el
directorio bsico del usuario, es decir /home/user_name/.configuration_file). A continuacin, aparece el siguiente
indicador (prompt en ingls):

equipo:/directorio/actual$
De manera predeterminada, para la mayora de las shells, el indicador consiste en el nombre del equipo, seguido
de dos puntos (:), el directorio actual y despus un carcter que indica el tipo de usuario conectado:
35

"$" especifica un usuario normal

"#" especifica el administrador, llamado "root"

El concepto de lnea de comandos


Una lnea de comandos es una cadena de caracteres formada por un comando que corresponde a un archivo
ejecutable del sistema o, ms bien, un comando de shell como as tambin argumentos opcionales (parmetros):

ls -al /home/jf/
En el comando anterior, ls es el nombre del comando, -al y home/jean-francois/ son argumentos. Los
argumentos que comienzan con - se denominan opciones. Por lo general, para cada comando, hay una cierta
cantidad de opciones que se pueden detallar al introducir uno de los siguientes comandos:

comando --help comando -? man comando

36

Edicin de texto
vi
A pesar de su ergonoma muy limitada, Vi es uno de los editores de texto ms populares de los sistemas Unix
(con Emacs y pico). En Linux, hay una versin gratuita de Vi denominada Vim (Vi Improved [mejorada]). Vi (que
se pronuncia vi-i) es un editor completamente en modo texto, lo cual significa que todas las acciones se llevan
a cabo con la ayuda de comandos de texto. Si bien en principio este editor parece tener poco uso prctico, es
muy eficaz y puede ser muy til en caso de que falle la interfaz grfica.
La sintaxis para abrir Vi es la siguiente:

vi nombre_del_archivo
Una vez que se abri el archivo, podr desplazarse en l con los cursores o las teclas h, j, k y l (si el teclado no
posee ningn cursor de flecha).
Modos Vi
Vi posee tres modos operativos:

Modo regular: ste es el modo que introduce cada vez que abre un archivo. Este modo permite la
introduccin de comandos.

Modo de insercin: Este modo permite la insercin de caracteres que se capturan dentro del
documento. Para pasar al modo de insercin, simplemente pulse la tecla Insert en su teclado o la tecla i
predeterminada.

Modo de reemplazo: Este modo le permite reemplazar el texto existente por el texto que captura. Solo
pulse r nuevamente para ir al modo de reemplazo y pulse la tecla Esc para regresar al modo regular.

Comandos bsicos
Comando
:q

Descripcin
Salir del editor (sin guardar la informacin)
Obliga al editor a cerrarse sin guardar la informacin (incluso si se realizaron

:q!

cambios en el documento)

:wq

Guarda el documento y cierra el editor

:filenombre

Guarda el documento con el nombre especificado

Comandos de edicin
Comando

Descripcin

Elimina el carcter que est en ese momento bajo el cursor

dd

Elimina la lnea que est en ese momento bajo el cursor

dxd

Elimina x lneas empezando por la que en ese momento est bajo el cursor

nx

Elimina n caracteres empezando por el que en ese momento est bajo el cursor
37

x>>

Indenta x lneas a la derecha empezando por la que en ese momento est bajo el cursor

x<<

Indenta x lneas a la izquierda empezando por la que en ese momento est bajo el cursor

Buscar y reemplazar
Para buscar una palabra en un documento, en modo regular, slo introduzca / seguido de la cadena de
caracteres que se buscarn. Despus pulse la tecla Enter para confirmar. Utilice la tecla n para ir de aparicin en
aparicin.
Para reemplazar una cadena de caracteres por otra en una lnea, encontrar un comando muy eficaz en Vi al
utilizar las expresiones regulares. Su sintaxis es la siguiente::s/chaine_a_remplacer/chaine_de_remplacement/

:s/cadena_a_ser_reemplazada/cadena_de_reemplazo/
Se puede realizar el reemplazo

a lo largo de todo el documento con la siguiente sintaxis:

%s/chaine_a_remplacer/chaine_de_remplacement/

:%s/cadena_a_ser_reemplazada/cadena_de_reemplazo/
Copiar y pegar y cortar y pegar
En Vi es posible copiar y pegar una seleccin de lneas. Para hacerlo, slo debe introducir el siguiente comando
para copiar n lneas:

nyy
Para hacer esto, slo debe introducir el siguiente comando para copiar n lneas: nyy
Por ejemplo, el siguiente comando copiar 16 lneas en el portapapeles:

16yy
Para pegar la seleccin, slo debe introducir la letra p.
El proceso de cortar y pegar n lneas es similar mediante el comando:

ndd
Despus, introduzca la tecla p para pegar.

nano
Nano es el un sencillo editor de textos para el terminal que viene instalado por defecto en Ubuntu. No es tan
potente como Vim o Emacs pero es mucho ms fcil de manejar que estos. As cualquier usuario por poco
experimentado que sea es capaz de empezar a usar Nano desde el primer momento gracias a las dos lneas de
ayuda que mantiene en su parte inferior.
Al ser un editor en modo texto, se suele usar sobretodo en entornos sin interfaz grfica como Ubuntu Server,
pero eso no impide que lo utilicemos en Ubuntu Desktop.
Para editar un archivo con Nano tenemos que ejecutar el siguiente comando:
38

nano nombre_archivo
donde nombre_archivo ser el nombre del archivo que queramos editar. En caso de que el archivo no existiera,
se crear un archivo vaco con ese nombre.
Vamos a editar el archivo .bash_history, que contiene los comandos que hemos ido escribiendo en el terminal,
para ver un ejemplo concreto:
nano bash_history
Nos aparecer entonces el contenido del archivo para que podamos modificarlo con el editor. Si lo modificamos
(no te preocupes que en este archivo no pasa nada si lo cambias), veremos en la parte superior derecha el texto
Modificado. Para guardar los cambios, pulsaremos la combinacin de teclas Control+o. Y para salir, Control+x.

Editamos un archivo con nano


Damos por hecho que si necesitamos permisos de administracin para editar un archivo, tendramos que escribir

sudo antes del comando. Por ejemplo:


sudo nano /etc/network/interfaces
Nano est pensado para ser usado con el teclado, no con el ratn, por lo que tiene asociadas multitud de
acciones a combinaciones de teclas. En la siguiente tabla podemos ver algunas de las ms importantes:
Tecla

Funcin

Control+g o F1

Muestra la ayuda

Control+x o F2

Salir sin guardar

Control+o o F3

Guarda el archivo actual

Control+w o F6

Busca una cadena de texto o expresin regular

Control+k o F9

Corta la lnea actual

Control+u o F10

Pega la lnea cortada

Alt+m

Activa o desactiva el soporte para el ratn

Alt+r

Busca una cadena y la reemplaza por otra

Alt+s

Activa o desactiva el desplazamiento suave

Sin embargo, si quieres exprimir al mximo las posibilidades de este editor, sera recomendable leer la ayuda
que trae. Para ello pulsamos en cualquier momento F1 o la combinacin de teclas Control+g (como se indica
en la tabla anterior).
39

Administracin de Usuarios
Gestin de Usuarios y Grupos
Aqu se presentan los aspectos bsicos para la gestin de usuarios y grupos de usuarios en el sistema
Debian/Ubuntu a travs de la lnea de comandos.
Aadir usuarios y grupos
Para aadir usuarios y grupos al sistema se emplean los comandos adduser y addgroup. La operacin de estos
comandos se configura en el fichero /etc/adduser.conf. Veamos algunos ejemplos:

adduser pepe
aade el usuario pepe al sistema. El sistema pedir alguna informacin adicional sobre el usuario y un password
o clave. Por defecto, se crea un grupo con el nombre del usuario y ste ser el grupo por defecto. Este
comportamiento se configura en /etc/adduser.conf.

adduser --ingroup users pepe


aade el usuario pepe al sistema estableciendo users como su grupo principal:

adduser pepe cdrom


aade el usuario pepe (previamente creado) al grupo cdrom. Cuando el nmero de usuarios es numeroso y
heterogneo, puede ser necesario aadir nuevos grupos. Esto se hace con el comando addgroup. Por ejemplo:

addgroup alumnos
aade al sistema un grupo llamado alumnos. Alternativamente a los comandos anteriores, se pueden aadir
usuarios y grupos empleando useradd y groupadd. Estos comandos leen informacin de configuracin del
fichero /etc/login.defs.
Eliminar usuarios y grupos
Para eliminar usuarios y grupos se emplean userdel y groupdel respectivamente. Por ejemplo: # userdel pepe
elimina el usuario pepe. Si adems se indica la opcin -r, tambin se borrar el directorio personal del usuario
con todo su contenido.

groupdel alumnos
elimina el grupo alumnos.
Modificar usuarios y grupos
Para modificar las caractersticas de los usuarios y grupos se emplean los comandos usermod y groupmod.
Algunos ejemplos:

usermod -d /home/profes/pepe -m
cambia el directorio de inicio del usuario pepe para que sea /home/profes/pepe. La opcin -m hace que mueva
el contenido del antiguo directorio al nuevo emplazamiento.

usermod -g profes pepe


cambia el grupo inicial del usuario pepe para que sea profes.
40

usermod -l joseg pepe


cambia el nombre del usuario pepe. El nuevo nombre es joseg.

groupmod -n profesores profes


cambia el nombre del grupo profes a profesores.

Archivos relacionados con la gestin de usuarios y grupos


Algunos archivos relacionados con las cuentas de usuario son:

/etc/passwd: contiene informacin sobre cada usuario: ID, grupo principal, descripcin, directorio de
inicio, shell, etc. Tambin contiene el password encriptado, salvo que se usen shadow passwords.

/etc/shadow: contiene los passwords encriptados de los usuarios cuando se emplean shadow passwords.

/etc/group: contiene los miembros de cada grupo, excepto para el grupo principal, que aparece en
/etc/passwd.

/etc/skel: directorio que contiene el contenido del directorio de los nuevos usuarios.

41

Permisos sobre archivos


En Linux, todo archivo y directorio tiene tres niveles de permisos de acceso: los que se aplican al propietario del
archivo, los que se aplican al grupo que tiene el archivo y los que se aplican a todos los usuarios del sistema.
Podemos ver los permisos cuando listamos un directorio con ls -l:

$> ls -l
-rwxrwxr-- 1 sergio ventas

9090 sep 9 14:10 presentacion

-rw-rw-r-- 1 sergio sergio 2825990 sep 7 16:36 reporte1


drwxr-xr-x 2 sergio sergio

4096 ago 27 11:41 videos

Veamos por partes el listado, tomando como ejemplo la primera lnea. La primera columna (-rwxrwxr--) es el
tipo de archivo y sus permisos, la siguiente columna (1) es el nmero de enlaces al archivo, la tercera columna
(sergio) representa al propietario del archivo, la cuarta columna (ventas) representa al grupo al que pertenece al
archivo y las siguientes son el tamao, la fecha y hora de ltima modificacin y por ltimo el nombre del archivo
o directorio.
El primer carcter al extremo izquierdo, representa el tipo de archivo, los posibles valores para esta posicin son
los siguientes:

- un guin representa un archivo comn (de texto, html, mp3, jpg, etc.)

d representa un directorio

l link, es decir un enlace o acceso directo

b binario, un archivo generalmente ejecutable

Los siguientes 9 restantes, representan los permisos del archivo y deben verse en grupos de 3.
Los tres primeros representan los permisos para el propietario del archivo. Los tres siguientes son los permisos
para el grupo del archivo y los tres ltimos son los permisos para el resto del mundo u otros.

rwx

rwx

rwx

usuario grupo otros


En cuanto a las letras, su significado son los siguientes:

r read - lectura

w write - escritura (en archivos: permiso de modificar, en directorios: permiso de crear archivos en el dir.)

x execution - ejecucin

Las nueve posiciones de permisos son en realidad un bit que o esta encendido (mostrado con su letra
correspondiente) o est apagado (mostrado con un guin -), as que, por ejemplo, permisos como rwxrw-r--,
indicara que los permisos del propietario (rwx) puede leer, escribir y ejecutar el archivo, el grupo (o sea los
usuarios que estn en mismo grupo del archivo) (rw-) podr leer y escribir pero no ejecutar el archivo, y
cualquier otro usuario del sistema (r--), solo podr leer el archivo, ya que los otros dos bits de lectura y ejecucin
no se encuentran encendidos o activados.

42

Permisos en formato numrico octal


La combinacin de valores de cada grupo de los usuarios forma un nmero octal, el bit x es 2 0 es decir 1, el bit w
1

es 2 es decir 2, el bit r es 2 es decir 4, tenemos entonces:

r=4

w=2

x=1

La combinacin de bits encendidos o apagados en cada grupo da ocho posibles combinaciones de valores, es
decir la suma de los bits encendidos:
- - - = 0 no se tiene ningn permiso
- - x = 1 solo permiso de ejecucin
- w - = 2 solo permiso de escritura
- w x = 3 permisos de escritura y ejecucin
r - - = 4 solo permiso de lectura
r - x = 5 permisos de lectura y ejecucin
r w - = 6 permisos de lectura y escritura
r w x = 7 todos los permisos establecidos, lectura, escritura y ejecucin
Cuando se combinan los permisos del usuario, grupo y otros, se obtienen un nmero de tres cifras que
conforman los permisos del archivo o del directorio. Esto es ms fcil visualizarlo con algunos ejemplos:
Permisos Valor Descripcin
rw-------

600

El propietario tiene permisos de lectura y escritura.

rwx--x--x 711

El propietario lectura, escritura y ejecucin, el grupo y otros solo ejecucin.

rwxr-xr-x 755

El propietario lectura, escritura y ejecucin, el grupo y otros pueden leer y ejecutar el archivo.

rwxrwxrwx 777

El archivo puede ser ledo, escrito y ejecutado por quien sea.

r--------

400

rw-r-----

640

Solo el propietario puede leer el archivo, pero ni el mismo puede modificarlo o ejecutarlo y por
supuesto ni el grupo ni otros pueden hacer nada en el.
El usuario propietario puede leer y escribir, el grupo puede leer el archivo y otros no pueden
hacer nada.

Comando chmod
Habiendo entendido lo anterior, es ahora fcil cambiar los permisos de cualquier archivo o directorio, usando el
comando chmod (change mode), cuya sintaxis es la siguiente:
chmod [opciones] permisos archivo[s], algunos ejemplos:

$> chmod 755 reporte1


$> chmod 511 respaldo.sh
43

$> chmod 700 julio*


$> chmod 644 *
Los ejemplos anterior establecen los permisos correspondientes que el usuario propietario desea establecer, el
tercer ejemplo (chmod 700 julio*) cambiar los permisos a todos los archivos que empiecen con julio (julio01,
julio02, julio_respaldo, etc.) debido al carcter '*' que es parte de las expresiones regulares que el shell acepta, e
indica lo que sea. El ltimo ejemplo por lo tanto cambiar los permisos a los archivos dentro del directorio
actual.
Una opcin comn cuando se desea cambiar todo un rbol de directorios, es decir, varios directorios anidados y
sus archivos correspondientes, es usar la opcin -R, de recursividad:

$> chmod -R 755 respaldos/*


Esto cambiar los permisos a 755 (rwxr-xr-x) del directorio respaldos y de todos los subdirectorios y archivos que
estn contenidos dentro de este.

Estableciendo permisos en modo simblico


Otra manera popular de establecer los permisos de un archivo o directorio es a travs de identificadores del bit
(r,w, o x) de los permisos, como ya se vio anteriormente, pero ahora identificando adems lo siguiente:

al usuario con la letra u

al grupo con la letra g

a otros usuarios con la letra o

y cuando nos referimos a todos (usuario, grupo, otros) con la letra a (all, todos en ingls)

el signo + para establecer el permiso

el signo - para eliminar o quitar el permiso

La sintaxis es muy simple chmod augo[+|-]rwx[,...] archivo[s], as por ejemplo, si queremos que otros tengan
permiso de escritura sera chmod o+w archivo, todos los usuarios con permisos de ejecucin chmod a+x

archivo.
En este modo de establecer permisos, solo hay que tomar en cuenta que partiendo de los permisos ya
establecidos se agregan o se quitan a los ya existentes. Vemoslo con ejemplos su manera de trabajar:
Actual

chmod

Resultado Descripcin

rw-------

a+x

rwx--x--x Agregar a todos (all) permisos de escritura.

rwx--x--x go-x

rwx------

rwxr-xr-x u-x,go-r

rw---x--x Al usuario se le quita ejecucin, al grupo y otros se le quita lectura.

rwxrwxrwx u-x,go-rwx

rw-------

r--------

a+r,u+w

rw-r--r--

A todos se les agrega lectura, al usuario se le agrega escritura.

rw-r-----

u-

---rw---x

Al usuario se le eliminan lectura y escritura, al grupo se le agrega lectura y

44

Se eliminan permiso de ejecucin para grupo y otros.

Al usuario se le elimina ejecucin, al grupo y otros se eliminan todos los


permisos.

rw,g+w,o+x

otros se le agrega ejecucin.

Cambiando propietario y grupo


Volviendo a mostrar el listado al inicio de este artculo:

$> ls -l
-rwxrwxr-- 1 sergio ventas

9090 sep 9 14:10 presentacion

-rw-rw-r-- 1 sergio sergio 2825990 sep 7 16:36 reporte1


drwxr-xr-x 2 sergio sergio

4096 ago 27 11:41 videos

Vemos en la tercera y cuarta columna al usuario propietario del archivo y al grupo al que pertenece, es posible
cambiar estos valores a travs de los comandos chown (change owner, cambiar propietario) y chgrp (change
group, cambiar grupo). La sintaxis es muy sencilla: chown usuario archivo[s] y chgrp grupo archivo[s].
Adems al igual que con chmod, tambin es posible utilizar la opcin -R para recursividad.

#> ls -l presentacion
-rwxrwxr-- 1 sergio ventas

9090 sep 9 14:10 presentacion

#> chown juan presentacion


#> ls -l presentacion
-rwxrwxr-- 1 juan ventas

9090 sep 9 14:10 presentacion

#> chgrp gerentes presentacion


#> ls -l presentacion
-rwxrwxr-- 1 juan gerentes 9090 sep 9 14:10 presentacion
Solo el usuario root puede cambiar usuarios y grupos a su voluntad sobre cualquier usuario, queda claro que
habiendo ingresado al sistema como usuario normal, solo podr hacer cambios de grupos, y eso solo a los que
pertenezca.
Una manera rpida para el usuario root de cambiar usuario y grupo al mismo tiempo, es con el mismo comando

chown de la siguiente manera:


#> chown juan:gerentes presentacion (o en vez de punto, con : puntos)
#> chown juan:gerentes presentacion
As, cambiar el usuario:grupo en una sola instruccin.

Bits SUID, SGID y de persistencia (sticky bit)


An hay otro tipo de permisos que hay que considerar. Se trata del bit de permisos SUID (Set User ID), el bit de
permisos SGID (Set Group ID) y el bit de permisos de persistencia (sticky bit). Para entender los dos primeros el
SUID y el SGID veamos los permisos para un comando de uso comn a todos los usuarios, que es el comando
45

passwd, que como se sabe sirve para cambiar la contrasea del usuario, y puede ser invocado por cualquier
usuario para cambiar su propia contrasea, si vemos sus permisos observaremos un nuevo tipo de permiso:

#> ls -l /usr/bin/passwd
-r-s--x--x 1 root root 21944 feb 12 2006 /usr/bin/passwd

SUID
En vez de la 'x' en el grupo del usuario encontramos ahora una 's' (suid). passwd es un comando propiedad de
root, pero sin embargo debe de poder ser ejecutado por otros usuarios, no solo por root. Es aqu donde
interviene el bit SUID, donde al activarlo obliga al archivo ejecutable binario a ejecutarse como si lo hubiera
lanzado el usuario propietario y no realmente quien lo lanz o ejecut. Es decir, es poder invocar un comando
propiedad de otro usuario (generalmente de root) como si uno fuera el propietario.
SGID
El bit SGID funciona exactamente igual que el anterior solo que aplica al grupo del archivo. Es decir si el usuario
pertenece al grupo 'ventas' y existe un binario llamado 'reporte' que su grupo es 'ventas' y tiene el bit SGID
activado, entonces el usuario que pertenezca al grupo 'ventas' podr ejecutarlo. Tambin se muestra como una
's' en vez del bit 'x' en los permisos del grupo.

STICKY BIT (Bit de persistencia)


Este bit se aplica para directorios como en el caso de /tmp y se indica con una 't':

#> ls -ld /tmp


drwxrwxrwt 24 root root 4096 sep 25 18:14 /tmp
Puede apreciarse la 't' en vez de la 'x' en los permisos de otros. Lo que hace el bit de persistencia en directorios
compartidos por varios usuarios, es que el slo el propietario del archivo pueda eliminarlo del directorio. Es
decir cualquier otro usuario va a poder leer el contenido de un archivo o ejecutarlo si fuera un binario, pero slo
el propietario original podr eliminarlo o modificarlo. Si no se tuviera el sticky bit activado, entonces en estas
carpetas pblicas, cualquiera podra eliminar o modificar los archivos de cualquier otro usuario.

Estableciendo los permisos especiales


Para cambiar este tipo de bit se utiliza el mismo comando chmod pero agregando un nmero octal (1 al 7)
extra al principio de los permisos, ejemplo:

#> ls -l /usr/prog
-r-x--x--x 24 root root 4096 sep 25 18:14 prog
#>chmod 4511 /usr/prog
46

#> ls -l /usr/prog
-r-s--x--x 24 root root 4096 sep 25 18:14 prog
Ntese que el valor extra es el '4' y los dems permisos se dejan como se quieran los permisos para el archivo.
Es decir, los permisos originales en este ejemplo eran 511 (r-x--x--x), y al cambiarlos a 4511, se cambi el bit
SUID reemplazando el bit 'x' del usuario por 's'.
Los posibles valores seran los siguientes:
- - - - - - - - - = 0 Predeterminado, sin permisos especiales. No se requiere indicar.
- - - - - - - - t = 1 Bit de persistencia, sticky bit
- - - - - s - - - = 2 Bit sgid de grupo
- - - - - s - - t = 3 Bit sgid y sticky
- - s - - - - - - = 4 Bit suid
- - s - - - - - t = 5 Bit suid y sticky
- - s - - s - - - = 6 Bit suid y sgid
- - s - - s - - t = 7 Bit suid, sgid y sticky
MUY IMPORTANTE: Algo sumamente delicado y que se tiene que tomar muy en cuenta es lo que decidas
establecer con permisos de bit SUID y SGID, ya que recuerda que al establecerlos de esta manera, cualquier
usuario podr ejecutarlos como si fueran el propietario original de ese programa. Y esto puede tener
consecuencias de seguridad severas en tu sistema. Siempre considera y reconsidera si conviene que un usuario
normal ejecute aplicaciones propias de root a travs del cambio de bits SUID o SGID. Mejores alternativas
pueden ser los comandos sudo y su.

Permisos preestablecidos con umask


El comando umask establece la mscara de permisos de directorio y de archivos. Es decir los nuevos directorios
y archivos que se crean obtienen el valor de los permisos a partir de los valores de umask.

$> umask
0002
(o en formato simblico con la opcin -S)
$> umask -S
u=rwx,g=rwx,o=rx
Lo anterior indica que un directorio y archivos ejecutables se crearn con los permisos 775 y los archivos
comunes con los permisos 664. Esto se logra restando de 777 el valor de umask (777-002) y (666-002)
respectivamente. El primer valor de umask corresponde para valores de Sticky bit, GUID o SUID, que por default
es 0.

$> umask
47

0002
(Creamos un archivo y segn la mscara debemos de tener 666-002=664 o rw-rw-r--)
$> touch archivo
$> ll archivo
-rw-rw-r-- 1 sergio sergio 0 sep 25 20:14 archivo
(Ahora creamos un directorio y segn la mscara debemos de tener 777-002=775 o rwxrwxrx)
$> mkdir dir
$> ls -ld dir
drwxrwxr-x 2 sergio sergio 4096 sep 25 20:20 dir
Para establecer el valor de la mscara, simplemente se usa el mismo comando umask seguido del valor de
mscara que se desee:

$> umask 0022


Para dejarlo fijo en la sesin, entonces conviene agregarlo a .bash_profile o .bash_rc de nuestro directorio de
inicio.

48

Instalacin de Software
Hay 5 formas principales de instalar aplicaciones son:
1. Instalar paquetes DEB: los paquetes propios de distribuciones Debian (como la propia Ubuntu) son muy
populares y numerosos. Para instalarlos en Ubuntu basta con pinchar dos veces sobre el icono de ese paquete
DEB y luego seguir los pasos.
2. Instalar paquetes RPM: algo completamente natural para distribuciones como Fedora u openSUSE, pero que
en distribuciones como Debian o Ubuntu tambin es perfectamente posible gracias a la utilizacin de la utilidad
alien, que hace una conversin de RPM a DEB para luego proceder a la instalacin de ese paquete reconvertido.
3. Ficheros binarios BIN: algunas aplicaciones (sobre todo en el caso de desarrollos comerciales) llegan en
formato binario directo, y se trata de archivos ejecutables que simplemente tendremos que invocar desde la
consola de comandos para que los scripts de instalacin autocontenidos se ejecuten. Un ejemplo perfecto son
los drivers propietarios de NVIDIA.
4. A partir del cdigo fuente: si quieres un sistema a medida necesitars compilar tus propias aplicaciones, y
para ello tendrs que acudir a los tradicionales ./configure, make y make install que sirven para la inmensa
mayora de soluciones que nos descargamos en forma de cdigo fuente. Este tipo de instalaciones son algo ms
delicadas y en principio son adecuadas solo para usuarios avanzados, pero acabaremos con herramientas
tericamente ms eficientes y estables ya que han sido compiladas especficamente para nuestro sistema.
5. Lo ms fcil es usar el Gestor de paquetes que traen todas las distribuciones. Con l podemos instalar
muchsimos programas de forma inmediata usando los repositorios desde Internet o desde un CD. Por ejemplo,
en Ubuntu puedes instalar aplicaciones yendo al Centro de software (o tambin instalando el gestor de paquetes

Synaptic).
Las ventajas que tiene usar el sistema de paquetes es que te permite instalar, desinstalar y actualizar los
programas de forma muy sencilla, ya que cada programa est formado por uno o varios paquetes que el gestor
de paquetes controla que funcionen bien, adems si la aplicacin que instalas depende de otros paquetes extra,
el gestor los aadir automticamente.

49

Montaje de sistemas de archivo


Respecto a las unidades de almacenamiento, como hemos ido viendo poseen una serie de dispositivos
asociados, dependiendo del tipo de interfaz:
IDE: dispositivos /dev/hda disco mster, primer conector IDE; /dev/hdb disco slave del primer conector,
/dev/hdc mster segundo conector, /dev/hdd slave segundo conector.
SCSI: dispositivos /dev/sda, /dev/sdb, ... siguiendo la numeracin que tengan los perifricos en el Bus SCSI.
Respecto a las particiones presentes, el nmero que sigue al dispositivo representa el ndice de la particin
dentro del disco, y es tratado como un dispositivo independiente: /dev/hda1 primera particin del primer disco
IDE, o /dev/sdc2, segunda particin del tercer dispositivo SCSI. En el caso de los discos IDE, stos permiten
cuatro particiones denominadas primarias, y ms lgicas, as, si /dev/hdan, n ser inferior o igual a 4, se tratar
de una particin primaria, si no, se tratar de una particin lgica con n superior o igual a 5.
Con los discos y los filesystems asociados, los procesos bsicos que podemos realizar los englobamos en:
Creacin de particiones, o modificacin de stas. Mediante comandos
como fdisk o parecidos (cfdisk, sfdisk).
Creacin de filesystems linux, en particiones, mediante el comando mkfs. Hay versiones especficas para crear

filesystems diversos mkfs.ext2, mkfs.ext3, y tambin filesystems no linux: mkfs.vfat, mkfs.msdos, mkfs.minix. U
otros para CD-ROM como mkisofs para crear los iso9660 (con extensiones joliet o rock ridge), sobre CD-ROM, y
junto con comandos como cdrecord permite crear/grabar CD-ROM. Otro caso particular es la orden mkswap,
que permite crear reas de swap en particiones, que despus se pueden activar o desactivar con swapon y

swapoff.
Montaje de los filesystems: comandos mount, umount.
Verificacin de estado: la principal herramienta de verificacin de filesystems Linux es el comando fsck. Este
comando comprueba las diferentes reas del sistema de ficheros para verificar la consistencia y comprobar
posibles errores y, en los casos que sea posible, corregirlos. El propio sistema activa automticamente el
comando en el arranque cuando detecta situaciones donde se ha producido una parada incorrecta (un apagn
elctrico o accidental de la mquina), o bien pasado un cierto nmero de veces en que el sistema se ha
arrancado; esta comprobacin suele tardar cierto tiempo, normalmente algunos minutos. Tambin existen
versiones particulares para otros sistemas de ficheros: fsck.ext2, fsck.ext3, fsck.vfat, fsck.msdos, etc. El proceso del

fsck normalmente se realiza con el dispositivo en modo de slo lectura con particiones montadas; se
recomienda desmontar las particiones para realizar el proceso si se detectan errores y hay que aplicar
correcciones. En determinados casos, por ejemplo si el sistema por testar es la raz / y se detecta algn error
crtico, se nos pedir que cambiemos de modo de ejecucin del sistema ( runlevel) hacia modo slo root, y
hagamos all la verificacin. En general, si hay que hacerla verificacin, se recomienda hacer stas en modo
superusuario (podemos conmutar de modo de runlevel con los comandos init o telinit).
Procesos de backup: ya sean del disco, bloques de disco, particiones, filesystems, ficheros,... Hay varias
herramientas tiles para ello:

50

tar nos permite copiar ficheros hacia un fichero o a unidades de cinta;

cpio, de forma parecida, puede realizar backups de ficheros hacia un fichero; tanto cpio como tar
mantienen informacin de permisos y propietarios de los ficheros;

dd permite copias, ya sea de ficheros, dispositivos, particiones o discos a fichero; es un poco complejo y
hay que conocer informacin de bajo nivel, tipo, tamao, bloque o sector, y puede enviarse tambin a
cintas.

Utilidades diversas: algunos comandos individuales, algunos de ellos utilizados por los procesos anteriores
para hacer tratamientos diversos:

badblocks para encontrar bloques defectuosos en el dispositivo;

dumpe2fs para obtener informacin sobre filesystems Linux;

tune2fs permite hacer tunning del filesystem Linux de tipo ext2 o ext3 y ajustar diferentes parmetros de
comportamiento.

El montaje y desmontaje de los filesystems se consigue usando los comandos mount y umount respectivamente.
El proceso de montaje se realiza mediante la orden mount con el siguiente formato:

mount -t filesystem-type device mount-point


El tipo de filesystem puede ser msdos (fat), vfat(fat32), ntfs(ntfs lectura), iso9660 (para cdrom), ...
El dispositivo es la entrada correspondiente en el directorio /dev a la localizacin del dispositivo, los IDE tenia
/dev/hdxy donde x es a,b,c, o d (1 mster, 1 slave, 2 mster, 2 slave) y el numero de particin, los SCSI (/dev/sdx)
donde x es a,b,c,d ... (segn el id scsi asociado 0,1,2,3,4...). Vamos a ver algunos ejemplos:
mount -t iso9660 /dev/hdc /mnt/cdrom
montara el CD-ROM (si es el IDE que est en el segundo IDE de forma mster) en el punto /mnt/cdrom.
mount -t iso9660 /dev/cdrom /mnt/cdrom
montara el CD-ROM; /dev/cdrom se usa como sinnimo (es un link) del dispositivo donde est conectado..
mount -t ntfs /dev/hda2 /mnt/winXP
montara la segunda particin del primer dispositivo IDE (la C:), de tipo NTFS (por ejemplo un Windows XP).
Si estas particiones son ms o menos estables en el sistema (o sea, no cambian frecuentemente) y las queremos
utilizar, lo mejor ser incluir los montajes para que se hagan en tiempo de ejecucin, mediante la configuracin
del fichero /etc/fstab:
# /etc/fstab: Informacin esttica del sistema de ficheros
#
# <Sis. ficheros> <Punto montaje> <Tipo> <Opciones> <volcado> <pasada>
/dev/hda2 / ext3 errors = remountro 0 1
/dev/hdb3 none swap sw 0 0
proc /proc proc defaults 0 0
/dev/fd0 /floppy auto user,noauto 0 0
/dev/cdrom /cdrom iso9660 ro,user,noauto 0 0
/dev/sdb1 /mnt/usb vfat user,noauto 0 0
Por ejemplo, esta configuracin incluye algunos de los sistemas estndar, como la raz en /dev/hda2, la particin
de swap que est en hdb3, el sistema proc (que utiliza el kernel para guardar su informacin). Y el disquete, el
51

CD-ROM, y en este caso un disco USB de tipo Flash (que se ve como un dispositivo SCSI). En algunos casos, se
especifica auto como tipo de filesystem. Esto permite que lo autodetecte. Si se conoce, es mejor darlo en la
configuracin, y por otra parte, el noauto en las opciones permite que no sea montado de forma automtica
siempre, sino bajo peticin.
Si tenemos esta informacin en el fichero, el proceso de montaje se simplifica mucho, ya que se har o bien en
ejecucin o bien bajo demanda (para los noauto). Y puede hacerse ahora simplemente pidiendo que se monte el
dispositivo o el punto de montaje:
mount /mnt/cdrom
mount /dev/fd0
dado que el sistema ya tiene el resto de la informacin.
El proceso contrario, el desmontaje, es bastante sencillo, el comando umount con punto o dispositivo:
umount /mnt/cdrom
umount /dev/fd0
En el caso de medios extrables, tipo CD-ROM (u otros), puede usarse eject para la extraccin del medio:
eject /dev/cdrom o, en este caso, slo: eject
Los comandos mount y umount montan o desmontan todos los sistemas disponibles. En el fichero /etc/mtab se
mantiene una lista de los sistemas montados en un momento concreto se puede consultar o ejecutar mount sin
parmetros para obtener esta informacin.

52

NFS
El sistema NFS (Network File System) fue desarrollado para permitir montar una particin perteneciente a una
mquina remota como si fuese una particin local. Nos proporciona, por tanto, un mtodo rpido y eficaz de
compartir archivos y espacio de disco entre distintos ordenadores de una red que soporten este sistema.

Qu necesitamos?
Necesitaremos tener instalado portmap y el paquete nfs (nfs-utils) que se puede encontrar en la mayora de las
distribuciones en el computador que vaya a hacer de servidor de disco.
El portmap nos permitir realizar conexiones RPC al servidor y es el encargado de permitir o no el acceso al
servidor

los

equipos

que

especifiquemos.

Para saber si tenemos el portmap instalado bastar con un simple:


>> ps aux | grep portmap
Deberamos tener una salida parecida a:
rpc 1261 0.0 0.1 1560 568 ? S 15:48 0:00 portmap
bulconta 2544 0.0 0.1 1916 772 pts/0 S 16:04 0:00 grep portmap
Para saber si NFS est en marcha haremos una consulta al portmap para que nos indique qu servicios tiene en
marcha
>> rpcinfo p
Debera proporcionar una salida similar a:
programa vers proto puerto
100000

2 tcp

111 portmapper

100000

2 udp

100024

1 udp 1024 status

100024

1 tcp 1024 status

100011

1 udp

944 rquotad

100011

2 udp

944 rquotad

100011

1 tcp

947 rquotad

100011

2 tcp

947 rquotad

100005

1 udp 1025 mountd

100005

1 tcp 1056 mountd

100005

2 udp 1025 mountd

100005

2 tcp 1056 mountd

100005

3 udp 1025 mountd

100005

3 tcp 1056 mountd

100003

2 udp 2049 nfs

100003

3 udp 2049 nfs

100021

1 udp 1026 nlockmgr

111 portmapper

53

100021

3 udp 1026 nlockmgr

100021

4 udp 1026 nlockmgr

Debemos verificar que portmap proporciona el servicio nfs. De no ser as es normalmente porque no hemos
instalado

el

paquete

nfs-utils.

Compartiendo el disco
Una vez tenemos los servicios en marcha nicamente nos falta determinar qu queremos compartir. Vamos a
trabajar con un ejemplo donde compartiremos el directorio home y el directorio /var/db.
Debemos editar el archivo /etc/exports e introducir
/usr/local
/var/db

192.168.0.0/255.255.255.0(rw)
192.168.0.0./255.255.255.0(rw)

Con esto estamos indicando que vamos a exportar /usr/local y /var/db permitiendo acceso a nuestro rango de
direcciones

locales

en

modo

de

lectura/escritura.

Aunque en este caso este tipo de exportacin es suficiente, podramos haber indicado nicamente un equipo o
varios de ellos. Por ejemplo, si hubiese querido dar acceso a /tmp nicamente al equipo 192.168.0.10 en modo
slo lectura, hubiese aadido
/tmp

192.168.0.10(ro)

Un poco de seguridad
La prudencia nos aconseja editar los ficheros /etc/hosts.allow y /etc/hosts.deny para acabar de especificar qu
ordenadores de la red pueden usar los servicios del servidor. La documentacin del NFS recomienda las
siguientes
/etc/hosts.deny
portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL
/etc/hosts.allow
portmap:192.168.0.0/255.255.255.0
lockd:192.168.0.0/255.255.255.0
mountd:192.168.0.0/255.255.255.0
rquotad:192.168.0.0/255.255.255.0
statd:192.168.0.0/255.255.255.0

54

entradas

Para una red privada esto puede ser suficiente. De todos modos podramos hacer una configuracin mucho ms
fina especificando para cada servicio las direcciones IP que tendrn acceso a l.

Iniciar la comparticin de archivos


Si hemos cambiado el fichero /etc/exports despus de iniciar el servicio NFS deberemos indicar al sistema que
relea el fichero y active los cambios. Esto lo podemos hacer reiniciando el demonio nfsd o bien mediante:
>> exportfs ra
Configuracin de un equipo cliente NFS
Ahora que ya tenemos el servidor funcionando vamos a acceder al espacio compartido desde un computador
cliente.
Como root ejecutamos:
>> mount <servidor>:<directorio compartido> <punto de montaje>
En este ejemplo el servidor es la mquina 192.168.0.2 y el punto de montaje se ha dispuesto en /mnt/nfs que se
ha creado en la mquina cliente.
As y para nuestro ejemplo bastar ejecutar como root:
>> mount 192.168.0.2:/home /mnt/nfs
Un simple ls /mnt/nfs nos tendra que permitir ver que ya tenemos acceso al disco del servidor.
Si queremos que el sistema de ficheros NFS sea montado al arrancar deberemos aadir una entrada en el fichero
/etc/fstab.

En

nuestro

ejemplo

aadiramos:

192.168.0.2:/home /mnt/nfs nfs rw,hard,intr 0 0


Segn las opciones recomendadas en la documentacin.

Samba
Samba son un conjunto de aplicaciones libres para Linux que implementan el protocolo de comunicacin SMB
utilizado por los sistemas operativos Microsoft Windows para compartir carpetas e impresoras.
Bsicamente samba permite a PCs que utilizan Linux conectarse a carpetas compartidas en PCs con Windows y
compartir carpetas como si de un Windows se tratara. Gracias a samba, en una red podemos tener PCs con
Windows y PCs con Linux de forma que puedan intercambiar informacin en carpetas compartidas de la misma
forma

que

se

hara

si

todos

los

PCs

fueran

Windows.

Las funcionalidades de samba no se quedan solo en una simple comparticin de archivos e impresoras sino que
permite a un PC con Linux comportarse como un controlador de dominio de Windows para redes Microsoft con
prestaciones superiores a las que nos ofrecera un servidor con Windows NT Server 4.0. En las pginas siguientes
veremos cmo hacer que un PC con Linux haga las veces de controlador de dominio de nuestra red Windows.

55

Instalacin de samba
La 'suite' completa de samba se compone de varios paquetes. Se pueden localizar en http://packages.debian.org
buscando 'samba' en la descripcin de los paquetes. Destacamos los ms importantes:

samba - Servidor de archivos e impresoras tipo LanManager para Unix.

samba-common - Archivos comunes de samba utilizados para clientes y servidores.

smbclient - Cliente simple tipo LanManager para Unix.

swat - Herramienta de administracin de Samba va web

samba-doc - Documentacin de Samba.

smbfs - Comandos para montar y desmontar unidades de red samba

winbind: Servicio para resolver informacin de usuarios y grupos de servidores Windows NT

Instalaremos

los

paquetes

necesarios

para

disfrutar

del

servicio.

Para

ello

ejecutaremos:

#apt-get install samba samba-common smbclient samba-doc smbfs


as tendremos instalados y actualizados a la ltima versin, los paquetes bsicos para disfrutar del servicio
SAMBA.

Configuracin de samba
Samba, al igual que todas las aplicaciones para Linux, dispone de un archivo de texto para su configuracin. Se
trata del archivo:
/etc/samba/smb.conf
La sintaxis del archivo de configuracin de samba es bastante sencilla ya que est dividido en secciones que se
limitan a establecer el valor de unos cuantos parmetros y a determinar cules son las carpetas compartidas y
sus permisos. No obstante, para facilitar la configuracin de samba existe una herramienta llamada swat que
permite, va web, configurar la aplicacin.
Puesto que editando el archivo smb.conf se pueden configurar ms de 300 parmetros, dando lugar a miles de
configuraciones, nos limitaremos a analizar los parmetros ms relevantes y a la comparticin de archivos e
impresoras directamente.

Archivo smb.conf
A continuacin analizaremos un sencillo archivo smb.conf:
# Ejemplo de archivo de configuracin de samba smb.conf
[Global]// Seccin global, parmetros generales
security = user // Seguridad por usuarios
workgroup = Aula5 // Grupo de trabajo 'Aula5'
encrypt passwords = yes // Las contraseas se debern enviar encriptadas
wins support = yes // Samba ser servidor wins
log level = 1
max log size = 1000
read only = no // Por defecto, lectura y escritura
load printers = yes // Se comparten tambin las impresoras
56

[homes]// Seccin homes, carpetas home de usuarios


comment = Carpetas home // Comentario
browsable = no // No explorables
create mask = 0700 // Mscara de creacin de archivos (rxw------)
directory mask = 0700 // Mscara de creacin de carpetas
[Printers]// Seccin printers, impresoras
path = /var/tmp
printable = yes
min print space = 2000
[Teachers]// Carpeta comn profesores
path = /home/samba/profesores // Ruta de la carpeta compartida
browsable = yes // Explorable
read only = no // Lectura y escritura
create mask = 0770 // Mscara de creacin de archivos (rxwrxw---)
directory mask = 0770 // Mscara de creacin de carpetas
[Students]// Carpeta comn alumnos
browsable = yes
read only = no
path = /home/samba/profesores/alumnos
[Read-Only]// Carpeta comn del centro (solo lectura)
browsable = yes
read only = yes
guest ok = yes // Se admiten invitados
path = /home/samba/programas
[laserjet5] // Parmetros impresora
path = /tmp
printable = yes // Se permite imprimir
Todas las lneas que comienzan por almohadilla (#) o punto y coma ( son lneas de comentarios y son ignoradas
por samba.
El archivo smb.conf est dividido en secciones identificadas con corchetes [ ] . Ninguna de las secciones son
obligatorias aunque normalmente suelen tener las siguientes secciones:
Seccin [Global]
En la seccin [Global] se configuran los parmetros generales (globales) que determinarn el modo de
comportamiento general del servidor samba. Todos los parmetros que se omitan tomarn el valor predefinido
por defecto. Existen unos 300 parmetros que se pueden configurar en sta seccin. A continuacin exponemos
los parmetros ms significativos y ejemplo de valor:
hosts allow = 192. 127.
Permite especificar desde qu direcciones IPs se podr acceder al servicio. Ej.: Si ponemos 192.168. significa
todas las que empiecen por 192.168. Se pueden poner IPs concretas
hosts deny = 10.
Igual que hosts allow pero para especificar los rangos no permitidos
security = share

57

Permite determinar el modo de comparticin de recursos de samba. Hay cinco opciones posibles: share, user,
domain, server y ads.

'Share' significa compartir los recursos con contrasea (como W95, 98,...).

'User' gestiona los permisos por usuario (como W2000 y WXP).

'Domain' gestiona los permisos por dominio.

'Server' indica que los permisos son gestionados por otro servidor.

'Ads' hace que samba se comporte como un miembro de un dominio Active Directory y por lo tanto
requiere

un

servidor

W2000

Server

W2003

Server.

Samba no puede actuar como controlador de dominio de Active Directory, es decir, no puede sustituir a
Windows 2000 Server, pero s puede actuar como controlador de dominio de Windows NT.
domain logons = yes
Para que samba sea autentificador del dominio. En este caso, habr que poner 'security = user' porque no tiene
sentido que el samba sea servidor de dominio y que comparta los recursos con contrasea.
domain master = yes
Para que samba sea controlador de dominio. Lo lgico es que domain logons est a 'yes'
encrypt passwords = yes
Hace que samba solo reconozca passwords encriptados. Las primeras versiones de W95 enviaban las
contraseas en texto plano pero tanto las ltimas versiones de Windows 95 como W98, 2000 y XP las encriptan.
Se puede impedir que W98 las encripte cambiando un valor del registro (ver encription.txt en samba) pero lo
recomendable es que se enven encriptadas para impedir que otros usuarios puedan descubrirlas capturando
paquetes de datos (sniffing). Los password encriptados de samba se guardan en otro archivo:
smb passwd file = /etc/smbpasswd
Archivo que guarda las contraseas encriptadas de acceso a samba. Para que un usuario pueda acceder a samba
debe existir en el sistema pero no tiene por qu coincidir la contrasea de un usuario en el sistema linux con la
de samba aunque es aconsejable.
logon script = INICIO.BAT
Indica el script que ejecutarn los clientes windows al loguearse
password server = 192.168.0.10
Indica qu servidor autentificar a los usuarios
wins server = 192.168.0.10
Indica quin es el servidor de nombres wins
wins support = yes
Hace que nuestro samba sea servidor wins
load printers = yes
Para que automticamente comparta todas las impresoras del sistema
Seccin [homes]

58

En sta seccin se configuran los parmetros para compartir la carpeta home (carpeta donde se almacena el
perfil y todos los documentos) de cada usuario. Esta seccin es opcional. Si no existe, no se compartirn las
carpetas home de cada usuario. Se utiliza cuando se desean crear perfiles mviles de forma que cuando se
identifique el usuario en cualquiera de los PCs de la red, se mapee de forma automtica su perfil.
Seccin [Printers]
En sta seccin se configuran los parmetros para compartir las impresoras o colas de impresin disponibles en
el servidor.
Una seccin por cada carpeta compartida
Cada vez que se comparte una carpeta, hay que crear una seccin denominada como se desee ya que dicho
nombre

ser

el

nombre

del

recurso

compartido.

Ejemplo,

si

deseamos

compartir

la

carpeta

/home/samba/alumnos crearemos una seccin [Students] donde se configurar dicho recurso compartido con
los parmetros especficos para dicho recurso. Parmetros destacables:
browseable = yes
Indica si el recurso compartido ser visible cuando se escanea la red, por ejemplo haciendo clic en 'Mis sitios de
red' en Windows
create mask = 0770
Establece la mscara de creacin de archivos, igual con directory mask para la creacin de carpetas
guest ok = yes
Indica que cualquier usuario sin contrasea tiene permiso de acceso
valid users = pepe, juan
Indica qu usuarios pueden acceder al recurso
Consejos
Es conveniente crear en /home una carpeta llamada samba y que cuelguen de ella todas las carpetas
compartidas, para tener todos los datos de usuario dentro de /home y sea sencillo hacer las copias de seguridad.
Si somos servidores de dominio y vamos a tener en nuestra red clientes Windows, es conveniente crear un
recurso compartido llamado netlogon para poder almacenar scripts de inicio y archivos de polticas ya que los
clientes Windows estn preconfigurados para acceder a dicho recurso compartido:
//

Si

samba

es

controladores

de

dominio

se

recomienda

crear

recurso

'netlogon'

[netlogon]
path = /home/samba/netlogon
public = no
writeable = no
browsable = no
Si deseamos almacenar los drivers de impresora para los clientes Windows crearemos una seccin [print$]
Samba analiza cada 60 segundos el archivo smb.conf y si ha habido cambios, estos tomarn efecto. Es
conveniente crear una copia de seguridad del archivo smb.conf antes de hacer ningn cambio para poder
59

retornar al estado anterior en caso de que hagamos una modificacin incorrecta del archivo que impida que
arranque el servicio.
Para comprobar que nuestro archivo smb.conf est correcto, podemos utilizar el comando testparm que analiza
cada lnea en busca de errores.
Para tener una descripcin detallada de todos los parmetros se puede consultar la pgina del manual de
smb.conf:
$ man smb.conf

Gestin de usuarios, grupos y permisos de samba


Samba es un servicio que requiere de administracin de usuarios para poder gestionar los permisos de stos. En
funcin del usuario que acceda, samba se comportar de una forma u otra ya que cuando accede un usuario
normal, generalmente tiene unos permisos limitados y cuando accede un usuario administrador, deber
disponer

de

todos

los

permisos.

Para que esa administracin sea posible, samba dispone de su propia base de datos de 'usuarios samba' pero
como los usuarios utilizan otros recursos del servidor como carpetas e impresoras, es necesario que estn
creados en el sistema Unix. Resumiendo, podemos decir que para poder ser usuario de samba, es necesario
disponer de una cuenta de usuario en Unix y de una cuenta de usuario en samba.
Gestin de usuarios de samba
La gestin de usuarios de samba se realiza con el comando smbpasswd. Con l podremos crear y eliminar
usuarios,

cambiar

su

contrasea

algunas

cosas

ms.

Creacin de un usuario de samba


Para crear un usuario de samba debemos utilizar el comando smbpasswd, pero antes debemos haber creado el
usuario en Unix. Ejemplo, supongamos que queremos crear en Unix al usuario pepe:
# useradd pepe
Si deseamos que pepe pueda disfrutar de los servicios samba, debemos crear a pepe como usuario de samba
ejecutando el siguiente comando:
# smbpasswd -a pepe
Con la opcin -a indicamos que aada al usuario. Acto seguido nos preguntar dos veces la contrasea que
deseamos poner al usuario. Lo razonable es que sea la misma contrasea que tiene el usuario en Unix. A
continuacin veremos un ejemplo de utilizacin:
root@knoppix36:~# smbpasswd -a pepe
New SMB password: // Establecemos contrasea
Retype new SMB password: // Repetimos la contrasea'''
Added user pepe.

60

Eliminar un usuario de samba


Para eliminar un usuario de samba debemos ejecutar smbpasswd

con la opcin

-x, ejemplo:

# smbpasswd -x pepe
Inmediatamente el usuario habr desaparecido de la base de datos de 'usuarios samba' aunque seguir siendo
un usuario de Unix.
Otras opciones de smbpasswd
-d: Deshabilitar un usuario
-e: Habilitar un usuario
-n: Usuario sin password. Necesita parmetro null passwords = yes en seccin 'global' del archivo de
configuracin de samba.
-m: Indica que es una cuenta de mquina (equipo)
Para ms informacin se puede consultar la pgina del manual de smbpasswd.

61

Administracin de procesos
La ms simple definicin de un proceso podra ser que es una instancia de un programa en ejecucin
(corriendo). A los procesos frecuentemente se les refiere como tareas. El contexto de un programa que est en
ejecucin es lo que se llama un proceso. Este contexto puede ser mas procesos hijos que se hayan generado del
principal (proceso padre), los recursos del sistema que este consumiendo, sus atributos de seguridad, etc.
Linux, como se sabe, es un sistema operativo multitarea y multiusuario. Esto quiere decir que mltiples procesos
pueden operar simultneamente sin interferirse unos con los otros. Cada proceso tiene la "ilusin" que es el
nico proceso en el sistema y que tiene acceso exclusivo a todos los servicios del sistema operativo.
Programas y procesos son entidades distintas. En un sistema operativo multitarea, mltiples instancias de un
programa pueden ejecutarse simultneamente. Cada instancia es un proceso separado. Por ejemplo, si cinco
usuarios desde equipos diferentes, ejecutan el mismo programa al mismo tiempo, habra cinco instancias del
mismo programa, es decir, cinco procesos distintos.
Cada proceso que se inicia es referenciado con un nmero de identificacin nico conocido como Process ID
PID, que es siempre un entero positivo. Prcticamente todo lo que se est ejecutando en el sistema en cualquier
momento es un proceso, incluyendo el shell, el ambiente grfico que puede tener mltiples procesos, etc. La
excepcin a lo anterior es el kernel en s, el cual es un conjunto de rutinas que residen en memoria y a los cuales
los procesos a travs de llamadas al sistema pueden tener acceso.

ps
El comando ps es el que permite informar sobre el estado de los procesos. ps est basado en el sistema de
archivos /proc, es decir, lee directamente la informacin de los archivos que se encuentran en este directorio.
Tiene una gran cantidad de opciones, incluso estas opciones varan dependiendo del estilo en que se use el
comando. Estas variaciones sobre el uso de ps son las siguientes:

Estilo UNIX, donde las opciones van precedidas por un guin -

Estilo BSD, donde las opciones no llevan guin

Estilo GNU, donde se utilizan nombres de opciones largas y van precedidas por doble guin --

Sea cual sea el estilo utilizado, dependiendo de las opciones indicadas, varias columnas se mostrarn en el
listado de procesos que resulte, estas columnas pueden ser entre muchas otras, las siguientes (y principales):
p o PID

Process ID, nmero nico o de identificacin del proceso.

P o PPID

Parent Process ID, padre del proceso

U o UID

User ID, usuario propietario del proceso

t o TT o
TTY

Terminal asociada al proceso, si no hay terminal aparece entonces un '?'

T o TIME

Tiempo de uso de cpu acumulado por el proceso

c o CMD

El nombre del programa o comando que inici el proceso

RSS

Resident Size, tamao de la parte residente en memoria en kilobytes

SZ o SIZE

Tamao virtual de la imagen del proceso

62

Nice, valor nice (prioridad) del proceso, un nmero positivo significa menos tiempo de procesador y

NI

negativo ms tiempo (-19 a 19)

C o PCPU

Porcentaje de cpu utilizado por el proceso

STIME

Starting Time, hora de inicio del proceso

S o STAT

Status del proceso, estos pueden ser los siguientes

R runnable, en ejecucin, corriendo o ejecutndose

S sleeping, proceso en ejecucin pero sin actividad por el momento, o esperando por algn
evento para continuar

T sTopped, proceso detenido totalmente, pero puede ser reiniciado

Z zombie, difunto, proceso que por alguna razn no termin de manera correcta, no debe
haber procesos zombies

D uninterruptible sleep, son procesos generalmente asociados a acciones de IO del sistema

X dead, muerto, proceso terminado pero que sigue apareciendo, igual que los Z no
deberan verse nunca

Las opciones completas de ps las encuentras en las pginas del manual (man ps), o escribiendo en la terminal ps
L, y para ver un resumen de sus opciones ms comunes usa ps --help:
#> ps --help
********* simple selection ********* ********* selection by list *********
-A all processes

-C by command name

-N negate selection

-G by real group ID (supports names)

-a all w/ tty except session leaders -U by real user ID (supports names)


-d all except session leaders
-e all processes

-g by session OR by effective group name


-p by process ID

T all processes on this terminal

-s processes in the sessions given

a all w/ tty, including other users -t by tty


g OBSOLETE -- DO NOT USE

-u by effective user ID (supports names)

r only running processes

U processes for specified users

x processes w/o controlling ttys

t by tty

*********** output format ********** *********** long options ***********


-o,o user-defined -f full
-j,j job control s signal

--Group --User --pid --cols --ppid


--group --user --sid --rows --info

-O,O preloaded -o v virtual memory --cumulative --format --deselect


-l,l long

u user-oriented --sort --tty --forest --version

-F extra full

X registers

--heading --no-heading --context

********* misc options *********


-V,V show version

L list format codes f ASCII art forest

-m,m,-L,-T,H threads S children in sum

-y change -l format
63

-M,Z security data

c true command name -c scheduling class

-w,w wide output

n numeric WCHAN,UID -H process hierarchy

A continuacin algunos cuantos ejemplos de ps con la salida recortada.


># ps -e

(-e muestra todos los procesos)

PID TTY

TIME CMD

1?

00:00:01 init

2?

00:00:00 kthreadd

3?

00:00:00 migration/0

4?

00:00:00 ksoftirqd/0

#> ps -ef
UID

(-f muestra opciones completas)

PID PPID C STIME TTY

TIME CMD

root

0 0 10:12 ?

00:00:01 init [5]

root

0 0 10:12 ?

00:00:00 [kthreadd]

...
root

6130 5662 0 10:24 pts/0

00:00:00 su -

root

6134 6130 0 10:24 pts/0

00:00:00 -bash

sergon
root

6343 5604 0 10:28 ?


6475 6134 0 10:38 pts/0

#> ps -eF
UID

00:00:00 kio_file [kdeinit] file /home/sergon/tmp/ksocket-sergon/kl


00:00:00 ps -ef

(-F muestra opciones completas extra)

PID PPID C

SZ RSS PSR STIME TTY

root

0 0 412 556 1 16:59 ?

root

0 0

sergon

8326 8321 0 902 1272 0 17:07 ?

0 1 16:59 ?

TIME CMD

00:00:01 init [5]


00:00:00 [kthreadd]
00:00:00 /bin/sh /usr/lib/firefox-2.0.0.8/run-mozilla.sh

/usr/lib/f
sergon

8331 8326 4 53856 62604 0 17:07 ?

00:00:50 /usr/lib/firefox-2.0.0.8/mozilla-firefox-bin

sergon

8570 7726 2 15211 37948 0 17:17 ?

00:00:10 quanta

#> ps ax

(formato BSD sin guin, a muestra todos, x sin mostrar tty)

PID TTY

STAT TIME COMMAND

1?

Ss

0:01 init [5]

2?

S<

0:00 [kthreadd]

3?

S<

0:00 [migration/0]

4?

S<

0:00 [ksoftirqd/0]

#> ps aux (formato BSD sin guin, u muestra usuarios y dems columnas)
USER

PID %CPU %MEM

VSZ RSS TTY

root
64

1 0.0 0.0 1648 556 ?

STAT START TIME COMMAND

Ss 16:59 0:01 init [5]

root

2 0.0 0.0

0?

S< 16:59 0:00 [kthreadd]

root

3 0.0 0.0

0?

S< 16:59 0:00 [migration/0]

root

4 0.0 0.0

0?

S< 16:59 0:00 [ksoftirqd/0]

root

5 0.0 0.0

0?

S< 16:59 0:00 [migration/1]

#> ps -eo user,pid,tty (-o output personalizado, se indican los campos separados por coma, ver ps --help o ps
L)
USER

PID TT

root

1?

root

2?

sergon

8570 tty 1

root

8876 pts/1

#> ps -eH (muestra rbol de procesos)


#> ps axf (lo mismo en formato BSD)
#> ps -ec (el comando que se est ejecutando, sin la ruta, solo el nombre real)
#> ps -el (muestra formato largo de varias columnas, muy prctico)
#> ps L

(No muestra procesos, lista todos los cdigos de formatos)

pstree
Muestra los procesos en forma de rbol, pstree --help te da las opciones ms comunes. Recomiendo uses lo uses
con la opcin -A y -G para que te un rbol con lneas con lneas estilo ASCII y de terminal VT100
respectivamente, puedes aadir tambin -u para mostrar entre parntesis al usuario propietario del proceso:
#> pstree -AGu
init---acpid
|-atd(daemon)
|-automount----2*[{automount}]
|-avahi-daemon(avahi)
|-beagled(sergon)----7*[{beagled}]
|-beagled-helper(sergio)----3*[{beagled-helper}]
|-compiz(sergon)----kde-window-deco
|-console-kit-dae----61*[{console-kit-dae}]
|-crond
|-dbus-daemon(messagebus)
|-dbus-daemon(sergio)
|-dbus-launch(sergio)
|-dcopserver(sergio)
|-dhclient
|-gam_server(sergio)
65

|-gconfd-2(sergio)
|-hald(haldaemon)----hald-runner(root)----hald-addon-acpi(haldaemon)
|

|-hald-addon-cpuf

|-hald-addon-inpu

|-hald-addon-stor

|-httpd---8*[httpd(apache)]
|-2*[ifplugd]
|-ipw3945d
|-kaccess(sergio)

kill
El comando kill, que literalmente quiere decir matar, sirve no solo para matar o terminar procesos sino
principalmente para enviar seales (signals) a los procesos. La seal por default (cuando no se indica ninguna es
terminar o matar el proceso), y la sintaxis es kill PID, siendo PID el nmero de ID del proceso. As por ejemplo, es
posible enviar una seal de STOP al proceso y se detendr su ejecucin, despus cuando se quiera mandar una
seal de CONTinuar y el proceso continuara desde donde se quedo.
#> kill -l

(lista todas las posibles seales que pueden enviarse a un proceso)

1) SIGHUP

2) SIGINT

5) SIGTRAP

6) SIGABRT

9) SIGKILL
13) SIGPIPE
17) SIGCHLD

3) SIGQUIT

10) SIGUSR1
14) SIGALRM

4) SIGILL

7) SIGBUS

8) SIGFPE

11) SIGSEGV

12) SIGUSR2

15) SIGTERM

18) SIGCONT

16) SIGSTKFLT

19) SIGSTOP

21) SIGTTIN

22) SIGTTOU

25) SIGXFSZ

26) SIGVTALRM 27) SIGPROF

29) SIGIO

30) SIGPWR

23) SIGURG
31) SIGSYS

20) SIGTSTP
24) SIGXCPU
28) SIGWINCH

34) SIGRTMIN

35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4


39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6
59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
La lista previa presenta una lista de todas las posibles seales que pueden mandarse a un proceso y estas
pueden ser invocadas a travs del nmero de la seal o de su cdigo, por ejemplo:

#> kill -9 11428

(termina, mata un proceso completamente)

#> kill -SIGKILL 11428 (Lo mismo que lo anterior)

66

Las seales ms comunes son la 19 y 20 que detienen momentneamente la ejecucin de un proceso o


programa, 18 la continua, 1 que es la seal de hang up que obliga al proceso a releer sus archivos de
configuracin estando en ejecucin y 9 que termina rotundamente un proceso.

killall
El comando killall, que funciona de manera similar a kill, pero con la diferencia de en vez de indicar un PID se
indica el nombre del programa, lo que afectar a todos los procesos que tengan ese nombre. As por ejemplo si
se tienen varias instancias ejecutndose del proxy server squid, con killall squid eliminar todos los procesos que
se estn ejecutando con el nombre 'squid'

#> killall -l

(lista de posibles seales)

#> killall -HUP httpd

(manda una seal de "colgar", detenerse releer sus archivos de

configuracin y reiniciar)
#> killall -KILL -i squid (manda seal de matar a todos los procesos squid pero pide
confirmacin en cada uno)
nice
Permite cambiar la prioridad de un proceso. Por defecto, todos los procesos tienen una prioridad igual ante el
CPU que es de 0. Con nice es posible iniciar un programa (proceso) con la prioridad modificada, ms alta o ms
baja segn se requiera. Las prioridades van de -20 (la ms alta) a 19 la ms baja. Solo root o el superusuario
puede establecer prioridades negativas que son ms altas. Con la opcin -l de ps es posible observar la columna
NI que muestra este valor.

#> nice

(sin argumentos, devuelve la prioridad por defecto )

0
#> nice -n -5 comando (inicia comando con una prioridad de -5, lo que le da ms tiempo de
cpu)
renice
As como nice establece la prioridad de un proceso cuando se inicia su ejecucin, renice permite alterarla en
tiempo real, sin necesidad de detener el proceso.

#> nice -n -5 yes (se ejecuta el programa 'yes' con prioridad -5)
(dejar ejecutando 'yes' y en otra terminal se analiza con 'ps')
#> ps -el
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY
4S

0 12826 12208 4 75 -5 - 708 write_ pts/2

TIME CMD

00:00:00 yes

#> renice 7 12826


12826: prioridad antigua -5, nueva prioridad 7
67

#> ps -el
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY
4S

0 12826 12208 4 87 7 - 708 write_ pts/2

TIME CMD

00:00:15 yes

(obsrvese el campo NI en el primer caso en -5, y en el segundo con renice qued en 7, en


tiempo real)
nohup y &
Cuando se trata ejecutar procesos en background (segundo plano) se utiliza el comando nohup o el operador &
. Aunque realizan una funcin similar, no son lo mismo.
Si se desea liberar la terminal de un programa que se espera durar un tiempo considerable ejecutndose,
entonces se usa . Esto funciona mejor cuando el resultado del proceso no es necesario mandarlo a la salida
estndar (stdin), como por ejemplo cuando se ejecuta un respaldo o se abre un programa Xwindow desde la
consola o terminal. Para lograr esto basta con escribir el comando en cuestin y agregar al final el smbolo &
(ampersand).

$> yes > /dev/null &


$> tar czf respaldo /documentos/* > /dev/null/ &
$> konqueror & (con estos ejemplos se ejecuta el comando y se libera la terminal regresando
el prompt)
Sin embargo lo anterior produce que el padre del proceso PPID que se invoc sea el proceso de la terminal en
si, por lo que si cerramos la terminal o salimos de la sesin tambin se terminaran los procesos hijos que
dependan de la terminal, no muy conveniente si se desea que el proceso continu en ejecucin.
Para solucionar lo anterior, entonces se usa el comando nohup que permite al igual que '&' mandar el proceso y
background y que este quede inmune a los hangups (de ah su nombre nohup) que es cuando se cuelga o
termina la terminal o consola de la cual se ejecut el proceso.

$> nohup yes > /dev/null &


$> nohup czf respaldo /documentos/* > /dev/null/
$> nohup konqueror
As se evita que el proceso se "cuelgue" al cerrar la consola.

jobs
Si por ejemplo, se tiene acceso a una nica consola o terminal, y se tienen que ejecutar varios comandos que se
ejecutarn por largo tiempo, se pueden entonces como ya se vio previamente con nohup y el operador '&'
mandarlos a segundo plano o background con el objeto de liberar la terminal y continuar trabajando.
Pero si solo se est en una terminal esto puede ser difcil de controlar, y para eso tenemos el comando jobs que
lista los procesos actuales en ejecucin:

#> yes > /dev/null &


68

[1] 26837
#> ls -laR > archivos.txt &
[2] 26854
#> jobs
[1]- Running

yes >/dev/null &

[2]+ Running

ls --color=tty -laR / >archivos.txt &

En el ejemplo previo, se ejecut el comando yes y se envi a background (&) y el sistema devolvi [1] 26837,
indicando as que se trata del trabajo o de la tarea [1] y su PID, lo mismo con la segunda tarea que es un listado
recursivo desde la raz y enviado a un archivo, esta es la segunda tarea.
Con los comandos fg (foreground) y bg background es posible manipular procesos que estn suspendidos
temporalmente, ya sea porque se les envi una seal de suspensin como STOP (20) o porque al estarlos
ejecutando se presion ctrl-Z. Entonces para reanudar su ejecucin en primer plano usaramos fg:

#> jobs
[1]- Stopped

yes >/dev/null &

[2]+ Stopped

ls --color=tty -laR / >archivos.txt &

#> fg %1
#> jobs
[1]+ Running
[2]- Stopped

yes >/dev/null &


ls --color=tty -laR / >archivos.txt &

Obsrvese como al traer en primer plano al 'job' o proceso 1, este adquiri el smbolo [+] que indica que est al
frente. Lo mismo sera con bg que volvera a reiniciar el proceso pero en segundo plano. Y tambin es posible
matar los procesos con kill indicando el nmero que devuelve jobs: kill %1, terminara con el proceso en jobs
nmero 1.

top
Una utilera muy usada y muy til para el monitoreo en tiempo real del estado de los procesos y de otras
variantes del sistema es el programa llamado top, se ejecuta desde la lnea de comandos, es interactivo y por
defecto se actualiza cada 3 segundos.
$> top
top - 13:07:30 up 8 days, 6:44, 4 users, load average: 0.11, 0.08, 0.08
Tasks: 133 total, 1 running, 131 sleeping, 0 stopped, 1 zombie
Cpu(s): 0.0%us, 0.2%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.2%si, 0.0%st
Mem:

497356k total, 472352k used,

25004k free,

Swap: 1156640k total, 257088k used, 899552k free,


PID USER

PR NI VIRT RES SHR S %CPU %MEM

21500k buffers
60420k cached
TIME+ COMMAND
69

26156 sergon

15 0 2160 1016 784 R

1 0.2 0:00.93 top

1 root

15 0 2012 616 584 S

0 0.1 0:00.98 init

2 root

RT 0

0S

0 0.0 0:00.29 migration/0

3 root

34 19

0S

0 0.0 0:00.00 ksoftirqd/0

4 root

RT 0

0S

0 0.0 0:00.00 watchdog/0

5 root

RT 0

0S

0 0.0 0:00.38 migration/1

Estando adentro de la aplicacin, presionando 'h' muestra una ayuda de los posibles comandos que permiten
configurar top, por ejemplo, al presionar 's' pregunta por el tiempo en segundos de actualizacin, etc.

Utilidad para administrar procesos de inicio


Existen varias utilidades para administrar el inicio de procesos en Debian, una de las ms sencillas y fciles de
utilizar es rcconf.
Instalamos rcconf
# apt-get install rcconf
Lo ejecutamos como root
# rccconf
Vemos una imagen como la siguiente:

Luego solo nos resta desmarcar los servicios que no necesitamos.

70

Configuracin de red en Linux


Una de las configuraciones ms importantes a la hora de instalar desde cero nuestra distribucin Debian, es el
archivo de configuracin de las interfaces de red. El archivo en cuestin es /etc/network/interfaces y vamos a
intentar averiguar cmo configurarlo a la medida de nuestras necesidades.

Interfaz Loopback
En el archivo de configuracin, la primera interfaz que aparece es la de loopback. sta, aunque no es necesaria
para conectarnos a la red, s se utiliza para hacer pruebas de conectividad y para identificar al host/equipo. Dicha
interfaz viene configurada por defecto en el proceso de instalacin y para que se levante automticamente
cuando enciende la mquina.

# The loopback network interface


auto lo
iface lo inet loopback
Analizamos un poco estas lneas, no est de ms avisar que las lneas que empiezan con # son comentarios, no
son lneas de la configuracin de las interfaces:
1.

auto lo: esta lnea se encarga de levantar la interfaz que se especifica (en este caso lo de loopback)

2.

iface: diminutivo de interfaz

3.

lo: nombre de la interfaz

4.

inet: configura dicha interfaz para valores de Ipv4 (inet6, para las direcciones Ipv6)

5.

loopback: Especifica que se debe cargar la configuracin de loopback

Configuracin Esttica
Inicialmente comentar que est configurado para que no se levanten las interfaces, sino para hacerlo
manualmente. En el caso de querer tener una interfaz que se levante por defecto cuando se arranca el pc
deberemos aadir auto interfaz. Esto lo podemos hacer con:
1- Poner solamente un auto que englobe todas las interfaces que queramos:
auto lo eth0 wlan0
iface lo inet loopback
iface eth0 inet static
...
2- Poner auto en cada interfaz:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static

...
71

Las siguientes lneas del archivo de configuracin, dependern de las tarjetas que tengamos instaladas en el pc.
En mi nuestro ejemplo, tenemos una Ethernet y otra Wifi, las cuales estn identificadas con eth0 y wlan0
respectivamente. Recuerda averiguar primero el nombre de las tarjetas, por ejemplo con ifconfig -a para ver
todas las interfaces instaladas en el equipo aunque no estn levantadas si, por el contrario, utilizamos iwconfig
adems sabremos si alguna de las tarjetas instaladas es Wifi.
# Interfaz FastEthernet
iface eth0 inet static
address IP_Interfaz
netmask IP_mascara
network IP_Red
broadcast IP_Difusin
gateway IP_Router
# Interfaz Wifi
iface wlan0 inet static
address IP_Interfaz
netmask IP_mascara
network IP_Red
broadcast IP_Difusin
gateway IP_Router
wireless_essid essid
Para aclarar un poco este lo de lneas, diremos que:
1.

address: corresponde a la direccin IP de la tarjeta de red.

2.

netmask: direccin IP con la que junto a address se identifica la direccin IP de la Red.

3.

network: direccin que identifica a toda la red.

4.

broadcast: direccin que se utiliza para comunicarse con todos los equipos instalados en la red.

5.

gateway: puerta de enlace que identifica la interfaz del router/modem/server... uffs depende de lo que
tengas instalado.

6.

wireless-essid (solo para WIFI): nombre de la red inalmbrica que tengamos instalados.

Estas son las lneas de configuracin bsicas para poder conectarnos por red, pero si echamos un vistazo a las
pginas del manual y a la ayuda de los comandos ifconfig e iwconfig nos encontraremos con un montn ms
de opciones y parmetros para configurar las interfaces.
Es importante saber que, salvo wireless-essid, hay una relacin dura entre los parmetros de red.
Pasando las direcciones a su equivalente en binario, siempre deben cumplirse las siguientes relaciones lgicas
(notacin C):
Network = address & netmask
Broadcast = network | !netmask
Gateway & netmask = address & netmask
72

Configuracin dinmica
No solamente nos podemos conectar estticamente, es decir, con IP fija, si tenemos activado el servicio DHCP en
nuestro router o si tenemos corriendo dicho servicio con un servidor, podemos simplificar la configuracin de
las interfaces con una configuracin parecida a:

auto eth0
iface eth0 inet dhcp
Si no conseguimos obtener ninguna direccin IP, comprobamos que est instalado el paquete dhcp3-client. Si
falta lo instalamos y comprobamos el archivo /etc/resolv.conf; reiniciamos la red (/etc/init.d/networking

restart) o el pc (reboot) y comprobamos de nuevo si tenemos direccin. Para forzar la conexin con el servidor
DHCP utilizamos el comando:
$ dhclient eth0
Internet Systems Consortium DHCP Client V3.0.4
Copyright 2004-2006 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/<br>
Listening on LPF/eth0/XX:XX:XX:XX:XX:XX
Sending on LPF/eth0/XX:XX:XX:XX:XX:XX
Sending on Socket/fallback
DHCPDISCOVER on eth1 to 255.255.255.255 port 67 interval 8
DHCPOFFER from 192.168.0.1
DHCPREQUEST on eth1 to 255.255.255.255 port 67
DHCPACK from 192.168.0.1
bound to 192.168.0.118 -- renewal in 42300 seconds.
La lnea DHCPACK from 192.168.0.1 nos indica que hemos recibido un paquete desde la direccin
192.168.0.1 que corresponder con nuestro servidor DHCP donde se especifica la configuracin de la interfaz.
Por otro lado, renewal in 42300 seconds. especifica el tiempo que est configurado para renovar la
direccin IP.

Interfaces virtuales
Se nos puede presentar el caso de que tengamos un ordenador porttil que lo conectemos a varias redes, con
distintas configuraciones, ya sea en casa, en el trabajo, en la "zona wifi" del bar o de un "amigo".... Para este caso
podemos cambiar a mano la configuracin del interfaz (un poco cansino), o configurar interfaces virtuales en
nuestro pc.
73

Necesitamos hacer una pequea diferenciacin entre interfaz fsica y lgica. La fsica est clara, pero podemos
tener varias interfaces lgicas (que configuraremos) en una misma interfaz fsica. A la cual pertenecen; si se
activa una interfaz lgica tambin se activar la fsica, no pudindose dar dos interfaces lgicas por el mismo
interfaz fsico.
Una manera de definir interfaces lgicas es identificando, en nuestro archivo de interfaces, la interfaz fsica con
la lgica seguida de dos puntos (:), quedando algo tal que eth0:0; donde 0 es el identificador de dicha interfaz.
Quedando nuestro archivo interfaces, algo tal que:
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
iface eth0:0 inet dhcp
Donde eth0:0 est configurado para recibir la informacin de la red. Para levantar dicha interfaz, debemos de
introducir el comando ifup eth0:0
Tambin podemos introducir directamente, en el archivo interfaces, el identificador de la interfaz lgica y su
configuracin; quedando algo como:
iface hogar inet static
address 192.168.0.123
netmask 255.255.255.0
gateway 192.168.0.1
iface trabajo inet static
address X.X.X.X
netmask 255.255.0.0
gateway X.X.X.X
Para conectarnos en este caso, debemos introducir el comando ifup eth0=hogar. Identificando tras el "igual"
(=) la interfaz lgica que queremos activar.

Configuracin de los DNS


Para establecer los servidores DNS que se encargarn de resolver los nombres, se debe editar el archivo
/etc/resolv.conf
Este archivo debe contener la definicin de los servidores, de la siguiente forma:
nameserver 200.74.121.11
nameserver 190.160.0.11
74

Definicin de nombres particulares


Editando el archivo /etc/hosts es posible asignar un nombre a una direccin especfica.
ejemplo:
root@urano:~# ping router
ping: unknown host router
root@urano:~# cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 urano
# The following lines are desirable for IPv6 capable hosts
::1

localhost ip6-localhost ip6-loopback

fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
root@urano:~# echo '192.168.0.1 route' >> /etc/hosts
root@urano:~# cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 urano
# The following lines are desirable for IPv6 capable hosts
::1

localhost ip6-localhost ip6-loopback

fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
192.168.0.1 route
root@urano:~# ping route
PING route (192.168.0.1) 56(84) bytes of data.
64 bytes from route (192.168.0.1): icmp_seq=1 ttl=64 time=2.63 ms
64 bytes from route (192.168.0.1): icmp_seq=2 ttl=64 time=3.58 ms
^C

75

Administracin remota segura


La Administracin Remota es la capacidad algunos programas que permiten realizar ciertos tipos de acciones
desde un equipo local y que las mismas se ejecuten en otro equipo remoto.
Una de las grandes ventajas que tienen los sistemas operativos que se manejan mediante un intrprete de
comandos es la facilidad de manejarlos de forma remota desde otro equipo. En los sistemas UNIX esta funcin
la ha realizado durante mucho tiempo la aplicacin telnet, que hoy en da se ha quedado para usos marginales
debido a la posibilidad de capturar la contrasea de acceso al realizar la conexin entre el cliente y el servidor de
forma no cifrada.
Para solucionar estos problemas de telnet, surgieron varias aplicaciones que incluan el cifrado de las
comunicaciones, siendo ssh el estndar de facto hoy en da para la administracin de sistemas UNIX.
En este documento vamos a presentar algunos de los usos ms habituales de la aplicacin de gestin remota
ssh (Secure SHell, en espaol: intrprete de rdenes segura) que es el nombre de un protocolo y del programa
que lo implementa, y sirve para acceder de forma segura a mquinas remotas a travs de una red no segura. Las
principales caractersticas de SSH son las siguientes:

El cliente puede verificar que se est conectando a un determinado servidor.

La informacin de autenticacin es cifrada.

Todo el trfico de datos enviados y recibidos son cifrados.

Es posible enviar aplicaciones grficas lanzadas desde el intrprete de comandos (reenvo por X11 o X11
Forwarding).

Existen dos variedades de SSH actualmente (versin 1 y versin 2). La versin 1 de SSH hace uso de muchos
algoritmos de encriptacin patentados (sin embargo, algunas de estas patentes han expirado) y tiene problemas
de seguridad que potencialmente permite a un intruso insertar datos en la corriente de comunicacin. La versin
2 tiene un algoritmo de intercambio de claves mejorado que no es vulnerable a los problemas de seguridad
software de la versin 1, obviamente la versin recomendada y que hoy en da se instala por defecto es la 2.
El paquete ssh que incluye Debian recoge OpenSSH, la implementacin libre de SSH (versiones 1 y 2) que lleva a
cabo principalmente OpenBSD. Dentro del paquete, se encuentra un conjunto de herramientas seguras que
estudiaremos a continuacin como son: ssh, scp, sftp, . . .

Mtodos de autentificacin
Existen mltiples mecanismos de autenticacin/autentificacin y los ms importantes que implementa ssh son
los siguientes:

Contrasea Es el mtodo utilizado por defecto, y en el que para conectarnos a un host, tenemos que
indicar nombre de usuario y contrasea en dicho usuario en ese host. Todo el procedimiento de
autenticacin se realiza cifrado.

Clave pblica/privada Basado en los mecanismos de cifrado asimtrico RSA y DSA. Este mtodo, que
estudiaremos ms detalladamente a lo largo de este documento, nos da la posibilidad de conectar con
el host sin indicar la contrasea del usuario en el host.

76

Kerberos Como en cualquier otro servicio basado en autenticacin Kerberos, tanto el usuario como el
servidor deben garantizar al servidor Kerberos su autenticidad, lo que en nuestro caso permite acceder a
un equipo remoto sin necesidad de utilizar contrasea.

Instalacin y configuracin del servidor ssh


En Debian existe el metapaquete ssh, que incluye tanto el servidor (openssh-server) ssh como el
cliente(openssh-client). Por lo tanto para su instalacin ejecutamos:
avatar :# aptitude install ssh
El fichero de configuracin del servidor openssh lo encontramos en /etc/ssh/sshd config, y los parmetros ms
interesantes son:

AllowGroups Esta opcin puede ir seguida de una lista de grupos de nombres, separados por espacios.
Si se especifica, slo se permite realizar un login a los usuarios cuyo grupo principal o suplementarios
coincida con uno de los patrones establecidos. Se puede usar * y ? como comodines en los patrones.

AllowUsers Esta opcin puede ir seguida de una lista de usuarios, separados por espacios. Si se
especifica, slo se permite realizar login a los usuarios cuyo nombre concuerde con el patrn. Se pueden
usar * y ? para la construccin de patrones.

DenyGroups, DenyUsers Similares a los anteriores pero denegando el servicio.

KerberosAuthentication Especifica si el mtodo de autentificacin Kerberos est permitido. Esto puede


llevarse a cabo mediante un ticket Kerberos o si la opcin PasswordAuthentication est habilitada. En
ese caso, la contrasea suministrada por el usuario puede ser validada contra un KDC Kerberos.

LoginGraceTime El servidor desconecta despus de este tiempo a los usuarios que no se hayan
validado correctamente. Si el valor es 0, no hay lmite de tiempo. Por defecto, 120 (segundos).

PasswordAuthentication Especifica si la autentificacin por password est admitida. Por defecto, ''yes''.

PermitRootLogin Especifica si el superusuario puede validar usando ssh. Los argumentos posibles son:
''yes'', ''without-password'', ''forced-commands-only'' o ''no''. El valor por defecto es ''yes''. Si a esta
opcin se le asigna ''without-password'', la autentificacin por password se deshabilita para el usuario
root. Si a esta opcin se le asigna ''forced-commands-only'', el login del superusuario con
autentificacin de clave pblica ser admitido, pero slo si la opcin del comando se ha especificado (lo
que puede ser til para realizar backups remotos incluso si el login de superusuario no est admitido
normalmente). El resto de mtodos de autentificacin estn vetados para el root. Si a la opcin se le
asigna ''no'', el root no puede hacer login.

Port Especifica el nmero de puerto al que escucha sshd. El puerto predeterminado es el 22/tcp. Este
parmetro admite opciones mltiples.

Protocol Especifica las versiones del protocolo que soporta sshd. Las posibilidades son ''1'' y ''2''. Las
opciones mltiples se separan por comas. El valor por defecto es ''2''.

PubkeyAuthentication Especifica si se admite la autentificacin mediante clave pblica. Por defecto,


''yes''. Esta opcin slo se aplica a la versin 2 del protocolo.
77

StrictModes Especifica si sshd debe comprobar los permisos y propietarios de los ficheros del usuario y
el directorio home antes de aceptar el login. Es recomendable habilitar esta opcin pues los usuarios
noveles a veces dejan accidentalmente su directorio o sus ficheros con permisos de escritura universales.
El valor por defecto, ''yes''.

X11Forwarding Establece si se permite o no la ejecucin remota de aplicaciones grficas. Si se va a


acceder hacia el servidor desde red local, este parmetro puede quedarse con el valor yes. Si se va a
permitir el acceso hacia el servidor desde redes pblicas, resultar prudente utilizar este parmetro con
el valor no.

Despus de cambiar la configuracin del servidor tendremos que reiniciar el servicio:


avatar :# /etc/init.d/ssh restart

Configuracin y uso del cliente openssh


El fichero de configuracin del cliente lo encontramos en /etc/ssh/ssh config, inicialmente no es necesario
cambiar ningn parmetro, pero pueden verse las opciones en la pagina del manual correspondiente:
cliente :$ man 5 ssh_config

Utilizacin de ssh
Para acceder a un ordenador remoto que tenga instalado un servidor ssh, desde otro ordenador con un cliente
ssh, se utiliza la siguiente instruccin:
cliente :$ ssh nombredelequipo
En este caso la conexin se realizar con un usuario con el mismo nombre que estas usando ahora en el cliente,
en caso de que queramos especificar un usuario concreto, utilizaremos:
cliente :$ ssh usuario@nombredelequipo
Por ejemplo desde nuestro cliente podemos acceder a avatar de la siguiente manera:
cliente :$ ssh usuario@avatar.example.com
El proceso de conexin detallado de un cliente a un servidor podemos verlo con la opcin -v:
cliente :$ ssh -v usuario@avatar.example.com
OpenSSH_5 .1p1 Debian -5, OpenSSL 0.9.8g 19 Oct 2007
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to avatar.example.com [192.168.2.1] port 22.
debug1: Connection established.
debug1: identity file /home/usuario /.ssh/identity type -1
debug1: identity file /home/usuario /.ssh/id_rsa type -1
debug1: identity file /home/usuario /.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.1p1 Debian -5
debug1: match: OpenSSH_5 .1p1 Debian -5 pat OpenSSH*
78

debug1: Enabling compatibility mode for protocol 2.0


debug1: Local version string SSH -2.0- OpenSSH_5 .1p1 Debian -5
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server ->client aes128 -cbc hmac -md5 none
debug1: kex: client ->server aes128 -cbc hmac -md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST (1024 <1024 <8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
The authenticity of host 'avatar.example.com (192.168.2.1) ' can 't be established.
RSA key fingerprint is 8b:ef :98:39:0d:95:ab :75:28:92: e8:ab :61:6e:95:f3.
Are you sure you want to continue connecting (yes/no)?
Donde el cliente ssh nos comunica que no reconoce la clave pblica del servidor y nos pide permiso para confiar
en ella y almacenarla en el fichero de claves pblicas de servidores conocidas ( /.ssh/known hosts).
Warning: Permanently added 'avatar.example.com ' (RSA) to the list of known hosts.
debug1: ssh_rsa_verify: signature correct
Verifica que la clave del servidor es correcto y ahora empieza el proceso de autenticacin del cliente, donde se
establecen una serie de mtodos y se utiliza el primero que funcione, en este caso autenticacin mediante
contrasea.
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey ,password
debug1: Next authentication method: publickey
debug1: Trying private key: /home/usuario /.ssh/identity
debug1: Trying private key: /home/usuario /.ssh/id_rsa
debug1: Trying private key: /home/usuario /.ssh/id_dsa
debug1: Next authentication method: password
usuario@avatar.example.com 's password:
Para ejecutar un comando en el ordenador remoto, si necesidad de abrir un terminal, podemos usar la siguiente
expresin:
cliente :$ ssh usuario@nombredelequipo comando

79

Por ejemplo:
cliente :$ ssh@usuario@avatar.example.com ifconfig

Transferir ficheros con ssh


Para copiar un fichero de un ordenador a otro de forma segura, encriptando la informacin, podemos usar la
herramienta scp de la siguiente manera:

Copiar un fichero a un ordenador remoto


scp archivo_local usuario@servidor :/ archivo_remoto

Copiar un fichero desde un ordenador remoto


scp usuario@servidor :/ archivo_remoto archivo_local
Por ejemplo, para copiar un archivo que tengo en mi directorio personal del cliente, a un directorio del servidor:
cliente ::$ scp /home/usuario/documento.odt usuario@avatar.example.com:

80

Automatizacin de procesos
Qu es cron?
El nombre cron viene del griego chronos que significa tiempo. En el sistema operativo Unix, cron es un
administrador regular de procesos en segundo plano (demonio) que ejecuta procesos o guiones a intervalos
regulares (por ejemplo, cada minuto, da, semana o mes). Los procesos que deben ejecutarse y la hora en la que
deben hacerlo se especifican en el fichero crontab.

Cmo funciona cron


El demonio cron inicia de /etc/rc.d/ o /etc/init.d dependiendo de la distribucin. Cron se ejecuta en el
background, revisa cada minuto la tabla de tareas crontab /etc/crontab o en /var/spool/cron en bsqueda de
tareas que se deban cumplir. Como usuario podemos agregar comandos o scripts con tareas a cron para
automatizar algunos procesos. Esto es til por ejemplo para automatizar la actualizacin de un sistema o un
buen sistema de respaldos.

Qu es Crontab?
Crontab es un simple archivo de texto que guarda una lista de comandos a ejecutar en un tiempo especificado
por el usuario. Crontab verificar la fecha y hora en que se debe ejecutar el script o el comando, los permisos de
ejecucin y lo realizar en el background. Cada usuario puede tener su propio archivo crontab, de hecho el

/etc/crontab se asume que es el archivo crontab del usuario root, cuando los usuarios normales (e incluso root)
desean generar su propio archivo de crontab, entonces utilizaremos el comando crontab.
Crontab es la manera ms sencilla de administrar tareas de cron en sistemas multiusuario, ya sea como simple
usuario de sistema o usuario root.

Utilizando crontab
Vamos empezando con un ejemplo simple.
Vamos a automatizar la actualizacin de un sistema, para eliminar la molesta de siempre tengo que andar
actualizando y eso no me gusta!.
Primero que nada haremos un script. Este script ser llamado por cron y contendr todas las instrucciones que
queremos que haga, por lo tanto es necesario probarlo en varios casos y de varias formas antes de incluirlo a
cron, un sencillo script de actualizacin como este:
#!/bin/bash
#script ejemplo de actualizacin
#elija su distribucin
#debian-ubuntu
#apt-get update & apt-get -y upgrade
#fedora
#yum -y update
81

#Arch
#pacman --noconfirm -Syu
Qutale el # a la lnea de tu distro. En caso de que sea Ubuntu/Debian, a la que empieza con apt-get.
Guardamos el script como actualizacion.sh (ej. directorio scripts tu home). Cambiamos los permisos de ejecucin
del dichoso script con:

chmod a+x ~/scripts/actualizacion.sh


Ejecutamos el script un par de veces para verificar que todo ejecute sin problemas, modificamos lo necesario (no
debe contener errores, si no cron solo repetir un error una y otra vez). Ahora a agregar la tarea a nuestro
crontab.

Agregar tareas a crontab


Ejecutamos la edicin del crontab con crontab -e, en algunas distros (como ubuntu) nos da la opcin de elegir el
editor de textos que deseemos, los dems nos quedamos con vi. El archivo crontab lucir algo as.

# m h dom mon dow user command


donde:

m corresponde al minuto en que se va a ejecutar el script, el valor va de 0 a 59

h la hora exacta, se maneja el formato de 24 horas, los valores van de 0 a 23, siendo 0 las 12:00 de la
medianoche.

dom hace referencia al da del mes, por ejemplo se puede especificar 15 si se quiere ejecutar cada da
15

dow significa el da de la semana, puede ser numrico (0 a 7, donde 0 y 7 son domingo) o las 3 primeras
letras del da en ingls: mon, tue, wed, thu, fri, sat, sun.

user define el usuario que va a ejecutar el comando, puede ser root, u otro usuario diferente siempre y
cuando tenga permisos de ejecucin del script.

command refiere

al

comando

la

ruta

absoluta

del

script

ejecutar,

/home/usuario/scripts/actualizar.sh, si acaso llama a un script este debe ser ejecutable


Para que quedara claro unos cuantos ejemplos de tareas de cron explicados:

15 10 * * * usuario /home/usuario/scripts/actualizar.sh
Ejecutar el script actualizar.sh a las 10:15 a.m. todos los das
15 22 * * * usuario /home/usuario/scripts/actualizar.sh
Ejecutar el script actualizar.sh a las 10:15 p.m. todos los das
00 10 * * 0 root apt-get -y update Usuario root
Ejecutar una actualizacin todos los domingos a las 10:00 a.m
82

ejemplo:

45 10 * * sun root apt-get -y update


Usuario root ejecutar una actualizacin todos los domingos (sun) a las 10:45 a.m
30 7 20 11 * usuario /home/usuario/scripts/actualizar.sh
El da 20 de noviembre a las 7:30 el usuario correr el script
30 7 11 11 sun usuario /home/usuario/scripts/pastel_con_velitas.sh
El da 11 de noviembre a las 7:30 a.m. y que sea domingo, el usuario festejar su
sysadmin (o sea a m)
01 * * * * usuario /home/usuario/scripts/molestorecordatorio.sh
Un

molesto

recordatorio

cada

minuto

de

cada

hora

todos

los

das

(NO

recomendable).

Igual se pueden manejar rangos especiales:


30 17 * * 1,2,3,4,5
A las 5:30 de la tarde todos los das de lunes a viernes.
00 12 1,15,28 * *
A las 12

del da todos los das primero, quince y 28 de

cada mes (ideal para nminas)

Si esto resulta confuso, crontab maneja cadenas especiales para definir estos rangos.
@reboot Ejecuta una vez, al inicio
@yearly ejecuta slo una vez al ao: 0 0 1 1 *
@annually igual que @yearly
@monthly ejecuta una vez al mes, el da primero: 0 0 1 * *
@weekly Semanal el primer minuto de la primer hora de la semana. 0 0 * * 0 .
@daily diario, a las 12:00A.M. 0 0 * * *
@midnight igual que @daily
@hourly al primer minuto de cada hora: 0 * * * *
Su uso es muy sencillo.
@hourly usuario /home/usuario/scripts/molestorecordatorio.sh
@monthly usuario /home/usuario/scripts/respaldo.sh
@daily root apt-get update && apt-get -y upgrade

83

Administracin de trabajos en cron


crontab archivo
Remplaza el existente archivo crontab con un archivo definido por el usuario
crontab -e
Editar el archivo crontab del usuario, cada lnea nueva ser una nueva tarea de crontab.
crontab -l
Lista todas las tareas de crontab del usuario
crontab -d
Borra el crontab del usuario
crontab -c dir
Define el directorio de crontab del usuario (este debe tener permisos de escritura y ejecucin del usuario)
crontab -u usuario
prefijo para manejar el crontab de otro usuario, ejemplos:
$ sudo crontab -l -u root
$ sudo crontab -e usuario2
#crontab -d -u usuario

84

Vous aimerez peut-être aussi