Curso Linux Desde Cero

Embed Size (px)

DESCRIPTION

a

Citation preview

  • Curso para AprenderLinux desde Cero

    Impartido por

    CrditosCrditos

    Septiembre 2015

  • Que es GNU/Linux? GNU/Linux es un sistema operativo universal. El sistema operativo se define como un conjunto deprogramas que permiten interactuar con un pc y pueden ejecutar otros programas o aplicaciones.

    En GNU/Linux, este sistema operativo se forma por un conjunto de programas que permiten controlarlos diferentes elementos fsicos del pc para ofrecerlos al usuario a la hora de ejecutar programas:escribir y leer datos de discos duros, utilizar dispositivos como impresoras o escneres, etc. El ncleoque une todos estos programas, en este caso, se llama Linux; el resto del sistema fueron proyectosprogramados por o para el proyecto GNU, de ah que para denominar al sistema operativo se utilice eltrmino GNU/Linux, aunque de manera informal se suele llamar solamente Linux.

    Este sistema operativo est basado en la filosofa de Unix, es decir, est diseado para ser un sistemaoperativo multitarea y multiusuario. Estas caractersticas lo hacen desmarcarse de otros sistemasoperativos conocidos, aunque tambin radica en la filosofa que engloba ya que, a diferencia de otrossistemas operativos, nadie es dueo de Linux ya que gran parte de su desarrollo lo han realizado y lorealizan voluntarios de todo el mundo de forma altruista.

    Historia de Linux y GNULa historia de este sistema operativo comienza en 1984 gracias a una organizacin llamada FreeSoftware Foundation. Esta fundacin comenz a desarrollar un sistema operativo libre, de tipo Unix,que lo llamaron GNU. Este proyecto comenz a crecer con herramientas de software diseadas para serutilizadas inicialmente en sistemas operativos Unix, aunque ms tarde seran tambin compatibles paraLinux. Aunque han sido muchos los colaboradores, la Free Software Foundation ha sido quien ms hacontribuido en el desarrollo de dicho software, siendo Richard Stallman, fundador de la Free SoftwareFoundation y proyecto GNU, el encargado de su difusin mundial.

    El ncleo Linux apareci por primera vez en el ao 1991 gracias a un estudiante de informticafinlands llamado Linus Torvalds, quien liber su ncleo en el ao 1992. A partir de ese momento, laevolucin del ncleo junto con el software del proyecto GNU desemboc en lo que se conoce comoGNU/Linux, que ha tenido un amplio y profundo desarrollo hasta hoy da.

    Qu es una distribucin de GNU/Linux?Debido a que GNU/Linux es un sistema operativo completamente abierto, muchas organizacionescomenzaron a crear variantes de dicho sistema con unas ciertas caractersticas concretas orientadas a ungrupo de usuarios especficos. Estas variantes recibieron el nombre de distribuciones GNU/Linux.Existen muchos tipos de distribuciones, entre las que se pueden encontrar distribuciones que estnsoportadas comercialmente como Fedora (Red Hat), openSUSE(Novell) o Ubuntu (Canonical Ltd.),distribuciones mantenidas por la comunidad, como pueden ser Debian y Gentoo, o distribuciones queno estn relacionadas con ninguna de las anteriores como puede ser Slackware.

    Adems de esta clasificacin, las distribuciones pueden estar orientadas tambin a grupos de usuarios

  • concretos. Hoy da existen multitud de distribuciones Linux orientadas tanto a profesiones como adispositivos concretos. Como ejemplos en el mbito educativo estn Guadalinex o Edubuntu, en elartstico Musix, Ubuntu Studio, para las ciencias Scientific Linux, etc; as como recientemente lasdistribuciones de Android para Smartphones o Raspbian para los mini pcs tipo Rasperry Pi.

    Razones por las que usar LinuxExisten numerosas razones por las que usar GNU/Linux, tanto en el mbito laboral como en elpersonal.

    A da de hoy existen mltiples distribuciones diseadas para hacer la vida fcil al usuario particular,incluso distribuciones con una interfaz visual semejante a otros sistemas para que la curva deaprendizaje sea ms corta. Adems de esto, hay que tener en cuenta que todas las aplicaciones sonlibres, por tanto no existen limitaciones a la hora de adquirir software.

    Al ser multiusuario y multitarea, un solo equipo puede ser usado por mltiples usuarios a travs de laexportacin del display grfico por red, que puede ser una buena solucin empresarial para el ahorro decostes. Se aade la particularidad de que GNU/Linux, al estar desarrollado por la comunidad y sercompletamente gratuito, no es objetivo de organizaciones criminales u otros entes creadores de virus ymalware a gran escala, como le puede suceder a otros sistemas operativos privados, adems de contarcon un soporte de una comunidad de millones de personas que aportan constantemente soluciones yparches a los problemas de seguridad de las distribuciones. Esto hace que GNU/Linux sea uno de lossistemas operativos ms seguros y con mejor soporte del mercado actual.

    Acceso a los sistemas LinuxExisten diversos mtodos para la obtencin de distribuciones GNU/Linux. La ms usual es la descargade la imagen ISO de la distribucin, aunque tambin algunas distribuciones permiten la compra de CDso DVDs de las distribuciones desde su pgina oficial. Adems se suelen regalar distribuciones Linux enCD o Pendrives en las diferentes convenciones de software libre repartidas por todo el mundo.

    Para este curso vamos a ver dos distribuciones muy relevantes en el mbito empresarial y el personal:Debian y Ubuntu.

    Debian: https://www.debian.org/

    La portada web de la distribucin muestra un men superior donde podemos acceder a las ISOS desdeel apartado Cmo obtener Debian. Es este apartado vienen los diversos mtodos de descarga, ascomo la compra de material para su instalacin.

    Ubuntu: http://www.ubuntu.com/

    La portada de Ubuntu destaca por su aspecto visual, ya que tiene el soporte y mantenimientoeconmico de la empresa Canonical. En su men superior vemos como se pueden apreciar diferentesproductos, as como la zona de Download, que en su desplegable ya podemos elegir que tipo deproducto descargarnos.

  • Instalacin de SO Linux

    Instalacin mquina virtualUna vez la aplicacin est instalada vamos a crear una mquina virtual y procederemos a instalarUbuntu Desktop.

    Lo primero que vamos a hacer es descargar la versin correspondiente de la web de Ubuntu:

    Es recomendable utilizar versiones de 64 bits en las mquinas virtuales si contamos con los suficientesrecursos de ejecucin y/o la distribucin nos lo permite, puesto que algunas solo cuentan con la versinde 32 bits.

    Una vez descargada la ISO, procedemos a crear la nueva mquina virtual en Virtual Box.

  • En la pantalla principal, pulsamos el botn Nueva:

  • Y con esto finaliza la fase de creacin de la mquina virtual. Lo siguiente que veremos es en la pantallaprincipal la nueva mquina virtual ya creada en estado apagada. Para encenderla, podemos pulsar el botn Iniciar del men superior o bien con click derecho del ratn sobre la mquina Iniciar:

  • Instalando UbuntuLa instalacin del sistema operativo tiene muchas vertientes disponibles de configuracin. Para este caso concreto vamos a realizar la instalacin estndar.

    Una vez arrancada la mquina nos aparece una primera pantalla donde elegir el idioma y si queremos probar Ubuntu o instalarlo directamente. Seleccionamos la opcin de instalacin:

  • Tras esta pantalla comenzar la instalacin que tarda un poco en finalizar. Una vez se haya instalado, pulsamos el botn Reiniciar Ahora y finaliza la instalacin reiniciando el equipo.

  • Conectarse a Linux: Mtodos de acceso al sistema operativo GNU/Linux permite muchas formas de poder acceder al sistema operativo, a travs de interfacesgrficas, consolas virtuales e incluso a travs de la red.

    En este curso vamos a explicar, gracias a nuestra mquina virtual, el mtodo de acceso local (interfazgrfica y consola virtual) y el mtodo de acceso en remoto a travs del servicio ssh.

    Mtodo local: Interfaz grfica: Esta interfaz es la que nos aparece por defecto en el arranque del

    sistema operativo Ubuntu. Nos permite ejecutar una terminal en modo grfico Terminal virtual: Este tipo de terminales se pueden visualizar en el sistema pulsando la

    combinacin de teclas Alt + Ctrl + F1-F6. Linux crea por defecto 6 terminales virtuales para poder usar y dos displays grficos, ubicados en Ctrl + Alt + F7-F8.

    Mtodo remoto: SSH: Ssh es el acrnimo de Secure SHell y permite el acceso a una terminal de nuestro

    sistema a travs de la red con la caracterstica de aportar seguridad gracias a la encriptacin de sus comunicaciones. Es un servicio de estructura cliente-servidor, donde el servidor abre el puerto 22 para admitir conexiones y el cliente utiliza la aplicacin para conectarse a dicho puerto.

    Interfaz Grfica Terminal Virtual

  • Comprender y gestionar la estructura de directorios de Linux

    Estructura de directorios Linux Para comprender la estructura de directorios de Linux hay que analizar y conocer previamente el estndar FHS(Filesystem Hierarchy Standard). Esta norma determina como se definen los directorios principales y los contenidosdel sistema operativo GNU/Linux, llegando a completarse en 1995.Para entender cmo funciona Linux y su relacin con los elementos fsicos de almacenamiento,primero vamos a verlo desde el lado del software y a partir de ah desarrollaremos la relacin entre estoy los componentes fsicos (particiones).

    Esta es la composicin del rbol de directorios de un sistema Linux:

    Cada directorio que cuelga directamente del raz (/) tiene un propsito concreto en el sistema. Segn elestndar FHS, cada directorio tiene el siguiente cometido:

    Directorios Importantes y sus ContenidosFHS define algunos directorios con mucha precisin. Los ms comunes definidos por FHS o utilizadospor convencin, son los siguientes:

    / : Los sistemas de ficheros Linux tienen su raz en un mismo directorio conocido como sistema deficheros raz o directorio raz. Todos los dems directorios se ramifican desde ste. Linux no utilizaletras de unidad sino que las particiones o discos extrables se montan en un punto dentro del sistemade ficheros raz. Algunos directorios crticos deben residir siempre en la particin raz pero otrospueden encontrarse en particiones independientes. No se debe confundir el directorio /root con eldirectorio raz.

  • /boot : Contiene ficheros estticos y no compartibles relacionados con el arranque del ordenador.Algunos sistemas imponen limites particulares a /boot , por ejemplo, en BIOS antiguas y versionesantiguas del LILO pueden requerir que /boot se encuentre por debajo del cilindro 1024 del disco duro.Tambin puede que se requiera que /boot sea una particin independiente.

    /bin : Contiene algunos ficheros ejecutables que son accesibles para todos los usuarios y constituyenlos comandos ms importantes que pueden ejecutar los usuarios normales. Contiene ficheros estticos.Sus ficheros son compartibles pero son tan importantes para el funcionamiento bsico del ordenadorque este directorio casi nunca se comparte. Cada cliente debe tener su directorio /bin en local.

    /sbin : Es similar a /bin pero contiene programas que slo ejecuta el administrador. Es esttico y enteora compartible. En la prctica sin embargo, no tiene sentido compartirlo.

    /lib : Contiene bibliotecas de programa que son cdigo compartido por muchos programas y que sealmacenan en ficheros independientes, para ahorrar RAM y espacio en disco. /lib/modules contienemdulos o drivers que se pueden cargar y descargar segn necesitemos. Es esttico y tericamentecompartible aunque en la prctica no se comparten.

    /usr : Aloja el grueso de los programas de un ordenador Linux. Tiene un contenido compartible yesttico lo que permite montarlo en modo slo lectura. Se puede compartir con otros sistemas Linux;muchos administradores separan /usr en una particin independiente aunque no es necesario. Contienealgunos subdirectorios similares a los del directorio raz como /usr/bin y /usr/lib , que contienenprogramas y bibliotecas que no son totalmente crticos para el funcionamiento del ordenador.

    /usr/local : Contiene subdirectorios que reflejan la organizacin de /usr . Aloja los ficheros que instalalocalmente el administrador y es un rea a salvo de las actualizaciones automticas de todo el SO.Despus de la instalacin de Linux debera estar vaco, excepto para determinados subdirectorios stub.Se suele separar en una particin para protegerlo de las reinstalaciones del SO.

    /usr/X11R6 : Alberga los ficheros relacionados con el sistema X Window (entorno GUI). Contienesubdirectorios similares a los de /usr, como /usr/X11R6/bin y /usr/X11R6/lib.

    /opt : Es similar a /usr/local pero est pensado para los paquetes que no vienen con el SO como losprocesadores de texto o juegos comerciales, que se guardan es sus propios subdirectorios. El contenidode /opt es esttico y compartible. Se suele separar en su propia particin para convertirlo en un enlacesimblico a un subdirectorio de /usr/local.

    /home : contiene los datos de los usuarios y es compartible y variable. Se considera opcional en FHS,pero, en la prctica lo opcional es el nombre. El directorio /home con mucha frecuencia reside en supropia particin.

    /etc: Contiene archivos de configuracin del sistema especficos del Host de todo el sistema.

    /root : Es el directorio home del usuario root. Como la cuenta de root es tan crtica y especfica delsistema, este directorio variable no es realmente compartible.

    /var : Contiene ficheros efmeros de varios tipos, de registro del sistema, de cola de impresin, de

  • correo y news, etc. El contenido del directorio es variable pues algunos subdirectorios son compartiblesy otros no. Se suele colocar /var en su propia particin, sobre todo si el sistema registra una granactividad en /var.

    /tmp : Es donde se crean los archivos temporales y variables que necesitan los programas. La mayorade las distribuciones limpian este directorio peridicamente en el inicio. Este directorio raramente secomparte pero se suele poner en una particin independiente para que los procesos no controlados noprovoquen problemas en el sistema de ficheros al ocupar demasiado.

    /mnt : La finalidad de este directorio es albergar el montaje de los dispositivos. En la estructura dedirectorios, algunas distribuciones crean subdirectorios dentro de /mnt para que hagan de puntos demontado; otras utilizan directamente /mnt o incluso puntos de montado independientes de /mnt, como/floppy o /cdrom . FHS slo menciona /mnt y no especifica cmo se ha de utilizar. Los mediosmontados en esta particin pueden ser estticos o variables y, por norma general son compartibles.

    /media : Es una parte opcional del FHS como /mnt , pero que podra contener subdirectorios para tiposde medio especficos. Muchas distribuciones modernas utilizan subdirectorios /media como punto demontado para los discos extrables.

    /dev: Linux trata la mayora de los dispositivos de hardware como si fueran ficheros y el SO debe tenerun lugar para estos en su sistema de ficheros. Ese lugar es el directorio /dev que contiene un grannmero de ficheros que hacen de interfaces de hardware. Con los permisos apropiados se accede alhardware del dispositivo leyendo y escribiendo en el fichero de dispositivo asociado. El kernel permiteque /dev sea un sistema de ficheros virtual creado automticamente. El kernel y las herramientas desoporte crean sobre la marcha entradas en /dev para adaptarse a las necesidades de los driversespecficos. La mayora de las distribuciones emplean este recurso.

    /proc : Es un directorio inusual ya que no corresponde a un directorio o particin normal sino que setrata de un sistema de ficheros virtual que proporciona acceso a ciertos tipos de informacin delhardware dinmicamente. Esta informacin no se encuentra accesible a travs de /dev.

    En la administracin de Linux conocer la finalidad de los directorios resulta tremendamente til ya quesi instalamos por ejemplo un programa en una ubicacin equivocada, un binario colocado en /bin c uando debera estar en /usr/local/bin puede que se sobrescriba o elimine al realizar una actualizacin delsistema.

    Ref: https://es.wikipedia.org/wiki/Filesystem_Hierarchy_Standard#Especificando_los_directorios_definidos_por_FHS

    Tras este estudio del sistema de ficheros a nivel software, a continuacin vamos a ilustrar con unejemplo grfico cmo se distribuyen los discos y particiones dentro del sistema de ficheros. El ejemploconsta de un disco SATA que tiene 5 particiones, y cada una de ellas albergar un directorio (o punto demontaje) de la estructura de directorios visto anteriormente:

  • Como se puede apreciar en la imagen, cada particin del disco duro est asociado a un directorio de laestructura de directorios nica del sistema operativo, a diferencia de windows que cada particin deldisco duro se le asigna una letra de unidad (C:, D:, etc) y en ella se contiene su propia estructura dedirectorios.

    Esta forma de componer la estructura de directorios tiene una serie de ventajas en cuanto a la integridady seguridad del sistema operativo que son:

    Soporte multi-operativo: Permite alojar varios sistemas operativos. Eleccin del sistema de ficheros: Cada sistema de ficheros ofrece diferentes caractersticas

    eligindolas segn las necesidades que se tengan para esa particin. Control y administracin del espacio en disco: Se puede controlar el acceso de los usuarios a las

    diferentes particiones. Proteccin de errores en el disco: Al estar dividida la particin un error fsico del disco

    probablemente afectar a una parte del sistema operativo, dejando la posibilidad de que se pueda seguir trabajando con l e intentar recuperar el sector daado.

    Seguridad: Puedes asegurar un sector de tu sistema de datos crticos montndolo en solo lectura.La ventaja de agregar esta caracterstica a la particin y no a los ficheros es por cuestiones de redundancia.

    Backup: Las herramientas de copias de seguridad trabajan mejor en sistemas pequeos y aislados de tareas de escritura.

  • Qu es una shell? El shell es el entorno que hace de intermediario entre el usuario y los recursos del ordenador, como sifuera un entorno de programacin en tiempo real para ejecutar tareas. La shell aparece cuando noslogueamos en el sistema en modo consola, o bien cuando en el entorno grfico abrimos una terminal.

    La shell se compone de un prompt, que es un texto inicial que normalmente nos ofrece informacin tilcomo el usuario que est utilizando la shell, el hostname de la mquina o incluso el directorio sobre elque estamos posicionados en cada momento, y el cursor que recibe las ordenes de teclado.

    Diferentes shells en LinuxExisten multitud de shells diferentes para poder interactuar con nuestro sistema operativo, aunque lams conocida y habitual en la mayora de distribuciones es la shell bash. Cada shell cuenta con suspropias caractersticas de uso, contando con atajos de teclado, visualizacin en vivo de ficheros, yatajos durante la navegacin entre directorios. A continuacin vamos a citar las shells mas famosas yuna pequea descripcin de su procedencia:

    bash (Bourne Again Shell): Se basa en los principios de shell Bourne de Unix pero se haextendido en varios aspectos. Es la shell por defecto para la mayoria de las cuentas de usuario yes la que se tratar con ms detalle en este curso.

    bsh: El shell Bourne es la shell sobre la que est basada bash. Se conoce con el nombre de BSH.Su uso no es frecuente en Linux aunque el comando bsh suele ser un enlace simblico a bash.

    tcsh: Este shell tcsh se basa en el anterior shell C (csh). Es una shell bastante popular en algunoscrculos pero no hay distribuciones de Linux que lo traigan por defecto. Aunque es similar abash en muchos aspectos difiere en algunos aspectos de operacin. Por ejemplo, no se asignanvariables de entorno de la misma manera que en bash.

    csh: El original csh shell C no es muy utilizado en Linux pero si un usuario est familiarizadocon csh, tcsh es un buen sustituto.

    ksh: El shell Korn (ksh) fue diseado cogiendo las mejores opciones de la shell Bourne y el Cshell. Tiene un pequeo pero dedicado numero de seguidores.

    zsh: El shell zsh Z (zsh) es la evolucin de la shell Korn e incorpora caractersticas de estaltima adems de agregar otras.

  • Uso inicial de bash y variables de entorno

    Para usar inicialmente la shell bash, en nuestra mquina virtual abrimos una terminal, buscando en elmen Terminal.

    La pantalla inicial de la terminal ya veremos el prompt y el cursor para poder escribir. La shell bashcuenta con una serie de atajos de teclado que permiten la navegacin ms sencilla:

    Si al acceder a directorios pulsamos la tecla TAB se autocompleta en el caso de existir slo unaiteracin o te muestra un desplegable de las diferentes iteraciones existentes.

    Las teclas del cursor arriba y abajo nos permiten navegar por el historial decomandos que hemos escrito anteriormente. La shell almacena los comandos ejecutados en unfichero de historial a la que se tiene acceso mediante esta combinacin de teclas.

    Las teclas de cursor derecha e izquierda nos permiten navegar sobre lo que hemosescrito en la shell, de este modo nos permite hacer modificaciones en vivo en la lnea decomandos antes de ejecutar por si en algn momento hemos escrito algo errneo. Tambin sepuede utilizar la combinacin Ctrl + Derecha o izquierda para saltar palabras ocampos en vez de caracter a caracter.

    Existe un mtodo para buscar en el historial de comandos mucho ms afinado que con lasflechas de cursor arriba y abajo. Si pulsamos la combinacin de teclas Ctrl + r nosaparecer un men donde, si escribimos el comando que estamos buscando, nos aparecer laprimera iteracin buscada. Si una vez encontrado, seguimos pulsando Ctrl +r, se seguirrealizando la bsqueda de forma inversa de esta misma iteracin.

    La shell, adems de esto, se compone tambin de una serie de comandos internos y de variables deentorno que definirn parmetros en la configuracin del sistema.

    Variables de entorno: Las variables de entorno son muy utilizadas tanto por la shell como por otrosprogramas para recuperar datos fundamentales del pc para su configuracin. Algunas de las variablesde entorno ms importantes son las siguientes:

    SHELL: Define la shell que estamos usando. El valor que toma es el binario que ejecuta la shellde bash, que se ubica en /bin/bash

    USER: Define el usuario que est actualmente logueado en la shell. PATH: Esta variable es fundamental a la hora de ejecutar programas en Linux, ya que contiene

    un conjunto de rutas donde el sistema va a buscar los ejecutables. Para indicar varias rutas, cadauna de ellas se separa de la otra con el carcter dos puntos :. De este modo, no es necesarioindicarle al sistema en que ubicacin se encuentra el programa para poder ejecutarlo.

    PWD: Esta variable muestra en qu directorio estamos posicionados en todo momento. Porejemplo el uso ms claro de esta variable es en el propio prompt del sistema, que se nutre dedicha variable para mostrar dnde estamos ubicados en cada momento. Tambin el comandopwd consulta esta variable para mostrar nuestra ubicacin en la estructura de directorios.

  • LANG: Esta variable almacena el cdigo de lenguaje y la codificacin de caracteres queestamos utilizando.

    HOME: Esta variable almacena el home del usuario con el que estamos logueados en la shell.El home del usuario es el espacio en la estructura de directorios donde se almacenan todos losdatos de un usuario. Su ubicacin reside en el directorio /home, y dentro de este existen unaserie de subdirectorios con los diferentes nombres de usuarios creados en el sistema. Por tanto,el contenido de esta variable siempre ser del tipo /home/usuario

    LANGUAGE: Determina el lenguaje utilizado para el sistema.

    Comandos internos: Los comandos internos de la shell tienen la particularidad que no generan unIDentificador de Proceso (PID) adicional, sino que utilizan el de la propia shell. Algunos de estoscomandos internos son muy utilizados, a continuacin veremos una lista de los ms importantes y paraque sirven:

    alias: Crea un nombre alternativo (alias) para un comando. Esto es til para facilitar la entradade comandos recurrentes que llevan varios argumentos. El ejemplo anterior muestra un aliaspara rm . Cada vez que se utilice el comando rm pedir confirmacin antes de borrar.

    Usar alias sin argumentos muestra que alias estn configurados:

    En el ejemplo anterior hay configurado un alias para el comando ls con el modificador --colory el que se ha creado anteriormente para el comando rm . Los alias pueden tener cualquier nombre siempre y cuando no tengan espacios o caracteresespeciales, como signos de admiracin o interrogacin.

    exec: Este comando se utiliza para la ejecucin de un programa especificado. Tiene lafuncionalidad adicional de ejecutarse junto a la sesin de consola, no crea un nuevo proceso.Cuando se finalice la ejecucin del programa se finalizar tambin la sesin en consola.

    echo: Repite el texto o el contenido de una variable introducido como argumento.

    Devuelve la palabra Prueba

    Muestra el contenido de la variable de entorno PATH

  • env: Sin argumentos muestra las variables de entorno y el contenido de las mismas. Se puedeutilizar tambin para ejecutar un comando con una variable de entorno modificadatemporalmente.

    En este ejemplo se ejecuta el programa xterminal con la variable DISPLAY modificada a :1.0 envez de :0.0 que es el valor que tiene establecido. Una vez se finalice el comando la modificacinde dicha variable se perder.

    export: Define una variable de entorno para la sesin actual y para todas las sesiones iniciadasa partir de sta.

    Incluye en la variable $PATH la ruta /usr/local/bin/

    pwd . Muestra el directorio de trabajo actual.

    set . Muestra las variables definidas.

    unset . Elimina una variable definida en la sesin.

  • Comandos bsicosAntes de pasar a los comandos para la navegacin debemos comprender un poco mejor como funcionael sistema de archivos y directorios.

    Directorios y archivosUna ruta seala la localizacin exacta de un archivo o directorio mediante una cadena de caracteresconcreta. En lneas generales se compondr de los nombres de los directorios que conforman el caminohasta nuestro archivo o directorio a lo largo del rbol de directorios, y finalmente estar el nombre delarchivo o directorio al que se quiere llegar.

    En Linux estos nombres estarn separados por el carcter delimitador "/".

    El acceso a archivos y directorios se hace mediante rutas absolutas o rutas relativas.

    Las rutas absolutas sealan la ubicacin de un archivo o directorio desde el directorio raz delsistema de archivos. Por ejemplo es una ruta absoluta /home/usuario/prueba.txt que seala laubicacin del archvo de texto prueba.txt desde la raz del sistema de archivos.

    En este ejemplo dentro del directorio /home se hace uso de una ruta absoluta para visualizar el archivode texto prueba.txt

    Las rutas relativas sealan la ubicacin de un archivo o directorio a partir de la posicin actual en elsistema de archivos. Por ejemplo es una ruta relativa usuario/prueba.txt que seala al archivo prueba.txt dentro del directorio /home en la ubicacin actual.

    En el ejemplo anterior se hace uso de una ruta relativa teniendo en cuenta que se est dentro del directorio /home.

  • A continuacin veremos los comandos necesarios para la navegacin y visualizacin de ficheros ydirectorios, as como la gestin de directorios y ficheros:

    touch: Se utiliza para modicar la fecha de un archivo, aunque tambin se puede utilizar paracrear un fichero vaco. Si se usa sin argumentos, touch modica la fecha y la hora de creacin ymodicacin de un archivo a los valores actuales del sistema. Las opciones principales son:

    -m: Se usa para modicar nicamente la fecha de modicacin -a: Se usa para modicar nicamente la fecha de acceso. -t: Modifica otros valores de tiempo.

    cd: Se utiliza para moverse por el rbol de directorios de linux. Cuando no se especica ningndirectorio como argumento va al directorio personal. Para acceder al directorio Descargas dentro deldirectorio personal:

    mkdir. Se utiliza para crear directorios.

    -p: Crea un rbol de directorios recursivamente, sin necesidad de crearlos uno a uno:

    -m: Permite especificar los permisos del directorio en el momento de creacin.

    rmdir. Permite borrar directorios vacos. Para borrar el directorio creado en el ejemplo anterior:

  • El comando ls se utiliza para listar archivos y contenido de un directorio. Tiene varias opciones, entrelas que destacaremos las siguientes:

    -l muestra detalles sobre los archivos.

    -s muestra el tamao en Kb.

    -d muestra las propiedades de un directorio, no su contenido

    -h muestra el tamao de los ficheros y directorios en formato de lectura humano (por ejemplo1K, 234M, 2G)

    -a muestra todos los ficheros, incluidos los ocultos (en Linux los ficheros ocultos comienzancon un punto [.])

    -R lista los directorios de forma recursiva.

    Un ejemplo del comando ls -lh :

    Esta informacin puede dividirse en columnas, de izquierda a derecha:

    La primera columna muestra el tipo y los permisos del archivo.

    La segunda columna muestra el nmero de enlaces de referencia (hardlinks) para el archivo.

    La tercera y la cuarta muestran el propietario y el grupo a los cuales pertenece el archivo.

    La quinta muestra el tamao, por defecto en bytes.

    La sexta y la sptima muestran la fecha y la hora de la ltima modicacin en el archivo.

    La octava columna muestra el nombre del archivo. Si el archivo fuera un enlace simblico, se mostraruna flecha apuntando al archivo al que hace referencia dicho enlace.

  • Permisos y propietarios Ya hemos visto que con el comando ls podemos ver tanto los permisos como el propietario y grupo alque pertenece un fichero o directorio. A continuacin vamos a explicar la poltica de identidad de losficheros contenidos en el sistema Linux:

    Los ficheros y directorios tienen 3 tipos de identidad: La individual, la de grupo y la del resto delsistema. Por tanto, se puede indicar que un fichero o directorio en el sistema Linux tiene un perfil depropietario, un perfil de grupo y un perfil de sistema. Cada uno de estos perfiles se le pueden asignarunas normas de uso llamado permisos. Los permisos se componen de tres elementos: lectura,escritura y ejecucin. De este modo, la combinacin de perfiles con sus respectivos permisos nosofrecen una administracin eficiente de los diferentes ficheros y directorios existentes en nuestrosistema.

    Existe una pequea apreciacin en el permiso de ejecucin, ya que hay que discriminar su uso aficheros y directorios, puesto que no realizan la misma funcin en ellos. Para los ficheros, el permiso deejecucin hace que el fichero sea ejecutable. Esto se suele hacer en shell scripts y otros ficherosespeciales del sistema. Sin embargo para los directorios el permiso de ejecucin permite que se puedaacceder al directorio (ya que un directorio, por lgica, no se puede ejecutar).

    Teniendo esta regla en cuenta, lo habitual es que todos los directorios tengan el permiso de ejecucinincluido en ellos para, al menos, el propietario del directorio.

    Los permisos de lectura, escritura y ejecucin se muestran con las siglas r, w y x respectivamente.Estos permisos se pueden observar en el comando ls al inicio:

    Adems de esto, la primera letra representa el tipo de archivo y determinar como Linux interpretar elarchivo, como un dato, un directorio, etc.

  • El tipo puede ser:

    d : Directorio: Contienen nombres de archivos que apuntan a inodos de disco.

    l : Enlace simblico. Este archivo contiene el nombre de otro archivo o directorio.

    c : Dispositivo especial de caracteres. Un archivo que corresponde a un dispositivo de hardware el cultransfiere los datos en unidades de un bit.

    p : Se le denomina canal, ya que permite tener disponibles dos programas de linux y que se puedancomunicar uno con el otro. Uno abre el canal para leer y otro para escribir, permitiendo que los datossean transferidos de uno a otro.

    s : Socket. Es similar al llamado canal (p), pero ste permite redireccionar enlaces. - : Archivo convencionalDebe ser texto, un archivo ejecutable, grficos, etc.

    Los restantes caracteres de la cadena se dividen en 3 grupos de 3 caracteres. El primer grupo, controlael acceso al fichero del propietario, el segundo grupo controla el acceso del grupo y el tercero controlalos accesos de todos los dems usuarios. En cada uno de los tres caracteres la cadena de permisosdetermina la presencia o ausencia de cada uno de los tres tipos de acceso: lectura, escritura y ejecucin.

    Si se incluye el permiso de ejecucin el fichero se podr ejecutar como un programa y definir el bit deejecucin en un fichero que no es un programa no tiene ningn tipo de consecuencia. Si en la cadena depermisos aparece un guin (-) quiere decir que el permiso est ausente. La presencia del permiso seindica con una r para lectura, un w para la escritura y una x para la ejecucin.

    Por tanto, la cadena de permisos rwxr-xr-x significa que tanto el propietario del fichero como losmiembros de su grupo y todos los dems usuarios pueden leer y ejecutar el fichero, pero slo supropietario tiene permisos de escritura sobre l.

    Linux codifica en formato binario la informacin de los permisos que se puede expresar como un niconmero de 9 bits. Este nmero se suele expresar en formato octal (base 8) debido a que un nmero enbase 3 tiene 3 bits de longitud, lo que significa que la representacin en base 8 de una cadena depermisos tiene 3 dgitos de longitud que corresponden al propietario, el grupo y los permisos globales.Los permisos de lectura, escritura y ejecucin se corresponden con cada uno de los bits. El resultado esque se pueden determinar los permisos aadiendo nmero en base 8.

  • Permisos de ejemplo y sus usos:

  • El permiso de ejecucin tiene sentido para los ficheros normales pero no para el resto. Los directoriosutilizan el bit de ejecucin de otra manera: si est definido significa que se puede buscar en elcontenido del directorio. Por eso es difcil ver un directorio en el que el bit de ejecucin no se definajunto al de lectura. Si a un usuario se le da permiso para escribir en un directorio, este usuario podrcrear, borrar o renombrar los ficheros del directorio aunque no sea el propietario de los ficheros y notenga permisos para escribir en ellos.

    Los enlaces simblicos siempre tienen permisos 777, sin embargo, este acceso se aplica slo al propiofichero del enlace y no al fichero enlazado. En cambio, los permisos del enlace de referencia afectan alfichero enlazado.

    La mayora de las reglas de permisos no se aplican a root, por lo que puede leer o escribir en cualquierfichero del ordenador, incluso en aquellos que tienen permisos 000, ya que root puede cambiar lospermisos de cualquier fichero. Hay algunos ficheros que pueden ser inaccesibles para root, pero sloporque existe una restriccin subyacente, como por ejemplo que un disco duro no est instalado en elordenador.

  • Modificar permisos y propietarios

    Cambiar el propietario de un fichero

    El superusuario (root) puede cambiar el propietario de un fichero mediante el comando chown cuyasintaxis es la siguiente:

    Las opciones ms usuales del comando chown son:

    -R: Cambia el permiso de archivos que estn en subdirectorios del directorio en el que ests enese momento.

    -C : Cambia el permiso para cada archivo. -f: cuando es incapaz de cambiar la titularidad del archivo, previene al comando chown de

    mostrar mensajes de error.

    En la sintaxis de este comando, los argumentos "nuevo propietario" y" nuevo grupo" se refieren alnuevo propietario y el nuevo grupo del fichero. Se pueden proporcionar ambos pero slo se puedeomitir uno de ellos. El comando chown admite muchas opciones, pero la ms utilizada es -R o recursive , que permite cambiar de propiedad un rbol de directorios completo. Slo root puede utilizarel comando chown ; si trata de utilizarlo un usuario normal devolver un mensaje de error.

    Cambiar el grupo de un ficheroEl comando chgrp cambia el grupo de un fichero de un archivo o directorio. Este comando lo puedenejecutar tanto el usuario root como los usuarios normales. Los usuarios slo pueden cambiar el grupode un fichero por un grupo al que pertenezcan. Su sintaxis es la siguiente:

    Este comando acepta muchas opciones, entre las que se incluyen -R o recursive. Esta herramienta esun subconjunto de funcionalidades de chown , pero la pueden utilizar los usuarios normales.

    Las opciones ms usuales del comando chgrp son las siguientes:

    -R: Cambia el permiso de archivos que estn en subdirectorios del directorio en el que ests en esemomento.

    -C : Cambia el permiso para cada archivo.

    -f : Esta opcin lo que hace es forzar el cambio. No informa de mensajes de errores.

  • Cambiar Permisos de un ArchivoCon el comando chmod se pueden modificar los permisos de un fichero. Este comando se puedeejecutar de varios modos para obtener el mismo efecto. Su sintaxis es:

    La opcin recursive o -R modifica los permisos de un rbol de directorios.

    Se puede especificar el modo de dos formas bsicas: con un nmero en octal o con un modo simblico,que es un conjunto de cdigos relacionados con la representacin en cadena de los permisos.

    Adems de modificar los 3 dgitos de permisos del archivo, si al comando anterior se le aade uncuarto bit al principio se pueden definir permisos especiales: si se aade un 4, se definir el bit de la IDde usuario (SUID); si se aade un 2, se definir la ID de grupo (SGID); y si se aade un 1 se definir elsticky bit.

    Si se omite el primer dgito como en el ejemplo anterior Linux tomar los 3 bits como bits parapermisos y no como bits para permisos especiales.

    El modo simblico consta de tres componentes: un cdigo que indica el conjunto de permisos que sequieren modificar, un smbolo que indica si se desea aadir, borrar o definir el modo del valor indicadoy un cdigo que especifica cul debera ser el permiso. Estos cdigos distinguen entre maysculas yminsculas:

  • Para utilizar los parmetros de los permisos simblicos, se combinarn uno o ms cdigos de laprimera columna con un smbolo de la tercera columna y uno o ms cdigos de la quinta columna. Sepueden combinar varios parmetros, separndolos por comas:

    Ejemplos de permisos simblicos con chmod:

  • Encontrar ficheros y directorios

    Herramientas para Localizar FicherosLo ms habitual para localizar ficheros es hacerlo por su nombre, pero a veces se pueden localizar porotros criterios, como por ejemplo la fecha de modificacin. Los comandos de localizacin de ficherosde Linux pueden buscar en un rbol de directorios un fichero que coincida con el criterio especificado eincluso podran rastrear el sistema completo.

    El Comando findEl comando find implementa un sistema de fuerza bruta para localizar ficheros ya que realiza unabsqueda por todo el rbol de directorios especificado para localizar los que satisfagan el criterioespecificado. find tiende a ser lento pero es flexible y tiene una mayor probabilidad de xito.

    Se le pueden especificar una o ms rutas para restringir sus operaciones. La expresin es un modo deespecificar lo que queremos buscar; las expresiones ms comunes permiten buscar por varios criterios:

    Buscar por nombre de fichero: Utilizando la expresin -nombre patrn se buscarn losficheros que coincidan con el patrn especificado. Se pueden emplear comodines delimitando elpatrn entre comillas.

    Buscar por el modo de permiso: La expresin -perm modo permite localizar ficheros quetengan ciertos permisos. El modo se puede expresar simblicamente o en modo octal si vaprecedido de un mas (+). El comando find localizar los ficheros en los que estn definidostodos los bits de permisos especificados.

    Buscar por el tamao del fichero: Se puede realizar una bsqueda de un fichero de un tamaodeterminado con la expresin -size n , donde n especifica en bloques de 512 bytes (se puedemodificar con una letra que sirva de cdigo para el valor, por ejemplo, k para kilobytes).

    Buscar por grupo: La expresin -gid GID , busca los ficheros cuya ID de grupo es GID. Laopcin -group nombre localiza ficheros cuyo grupo tiene el nombre indicado. Esta ltimaopcin suele ser ms fcil de utilizar pero la primera es til en caso de que la GID se hayaquedado hurfana y no tenga nombre.

    Buscar por ID de usuario: -uid UID busca los ficheros cuyo propietario tiene UID como ID deusuario. -user nombre busca los ficheros cuyo propietario es nombre. Esta ltima opcin sueleser ms fcil de utilizar pero la primera es til en caso de que la UID se haya quedado hurfanay no tenga nombre.

    Restringir la profundidad de la bsqueda: Para limitar el nmero de subdirectorios en los quebuscar se emplea la expresin -maxdepth niveles .

    find tiene muchas variantes y opciones adicionales, pero por ejemplo si se desean localizar todos los

  • ficheros fuente en cdigo #C con nombres que normalmente acaban en .c y se encuentran el directoriohome , se ejecutar:

    Esta expresin devolver todos los ficheros que coincidan con el criterio de bsqueda.

    Los usuarios normales pueden utilizar find, pero si carecen de permisos para listar el contenido de undirectorio, find devolver un error junto con el nombre del directorio.

    El Comando locateEsta utilidad funciona de forma similar a find pero difiere en dos aspectos importantes:

    Es mucho menos sofisticado en sus opciones de bsqueda ya que se utiliza para buscar por elnombre de fichero con lo que el programa devuelve todos los ficheros que contienen la cadenaespecificada.

    Trabaja con una base de datos que se encarga de mantener. Normalmente, se incluye una tareacron que llama a locate para que actualice su base de datos peridicamente. El comandoupdatedb sirve para actualizar la base de datos manualmente. Es importante que se mantengaactualizada, ya que en caso contrario, al realizar las bsquedas puede que devuelva nombres deficheros que ya no existan o que no localice ficheros recientes.

    Al trabajar con una base de datos es ms rpido que find , sobre todo en las bsquedas por todo elsistema. Tambin es probable que devuelva muchas falsas alarmas, especialmente si se quiere localizarun fichero con un nombre corto. Algunas distribuciones utilizan slocate en vez de locate, que incluyecaractersticas de seguridad que impiden que los usuarios vean los nombres de los ficheros o de losdirectorios a los que no tienen acceso. En la mayora de los sistemas con slocate, locate es un enlace aslocate.

    El Comando whereisBusca los ficheros en un conjunto restringido de localizaciones. Esta herramienta no busca endirectorios de usuario pero es un modo rpido de localizar ejecutables de programas y ficherosrelacionados como ficheros de documentacin o configuracin. El programa whereis devuelve losnombres de fichero que comienzan por aquello que se escribe como criterio de bsqueda, incluso losficheros que contienen extensiones, con frecuencia suele hallar los ficheros de configuracin de /etc ,paginas MAN y ficheros similares. Para localizar por ejemplo el programa ls, se escribir:

  • El Comando whichEst considerado comando de bsqueda pero es poco potente. Busca la ruta del comando escrito y lalista completa, desde la primera coincidencia que encuentre. La opcin -a permite buscar todas lascoincidencias. Puede resultar til, por ejemplo, para saber la ruta completa de un programa que sedesee llamar desde un script.Realiza la bsqueda solamente en los directorios definidos en la variabledel entorno PATH.

  • Visualizacin de ficheros Existen mltiples formas de visualizar ficheros con Linux, con diferentes tipos de criterios a la hora devisualizarlos.

    A continuacin vamos a ver algunos de estos comandos para la visualizacin de ficheros:

    cat: Concatena ficheros o la entrada estndar, y lo muestra a la salida estndar; aunque el usomas habitual de este comando es para mostrar ficheros.

    El comando cuenta con varias opciones, entre las que se destacan las mas importantes:

    -b aade el nmero de lnea en la salida. Si hay lneas vacias, no las cuenta.

    -E muestra el signo dolar ($) al final de cada lnea. Util para scripts.

    -n similar a la opcin -b con la diferencia que si cuenta las lneas vacias.

    -T muestra el simbolo ^I para las tabulaciones en el fichero.

    tac: Tiene la misma funcin del comando cat pero muestra el contenido de forma inversa.

    head: Este comando muestra por defecto las diez primeras lneas de un fichero dado. Si se le pasanmas de un fichero al comando, este mostrar las diez primeras lneas de cada fichero indicando elnombre del mismo con una cabecera.

    La opcin -n X indica que muestre X lneas de cada fichero, en vez de diez por defecto.

    La opcin -c K muestra los primeros K bytes de cada fichero.

  • tail: Este comando muestra por defecto las diez ltimas lneas de un fichero dado. Al igual que con elcomando head , si se le pasa mas de un fichero mostrar las diez primeras lneas de cada fichero.Cuenta con las siguientes opciones:

    La opcin -n X indica que muestre X lneas de cada fichero, en vez de diez por defecto.

    La opcin -c K muestra los primeros K bytes de cada fichero.

    La opcin -f (follow) hace que el comando no finalice, haciendo que se muestre por la salida estndarlos datos que se van introduciendo en el fichero. Esta opcin tremendamente til para visualizar entiempo real cualquier log del sistema, haciendo que sea una opcin muy utilizada por losadministradores.

    nl: Numera las lneas en los ficheros. Algunas de sus opciones son las siguientes:

    Con las opciones -ba se consigue que se numeren todas las lneas.

    Con las opciones -bt se consigue que se numeren nicamente las lneas que no estn en blanco.

    uniq: Este comando muestra por defecto el contenido de archivos eliminando las lneas consecutivasque esten repetidas. Algunas de sus opciones son:

    -u muestra nicamente las lneas que no se repiten.

    -d muestra nicamente la lnea repetida.

  • sort: Ordena alfabticamente. Con la opcin -n ordena numricamente y la opcin -r invierte elresultado.

    fmt: Formatea un texto para determinado nmero de caracteres por lnea. Por defecto es 75.

  • Las opciones ms utilizadas son:

    - w : Indica el nmero de caracteres por lnea.

    - s : Divide lneas grandes, pero no las rellena.

    - u : Un espacio entre palabras y dos espacios entre sentencias.

    pr: Prepara y formatea un archivo para su impresion desde la lnea de comandos. Por defecto es de 66lneas por 72 caracteres de ancho, modicados por -l y -w , respectivamente.

    Formatea el archivo prueba.txt para su impresin desde lnea de comandos.

  • Edicin de ficheros En el apartado de edicin de ficheros, Linux cuenta con varias herramientas para esta funcin. Las msfamosas con vim y nano, aunque existen otras como mcedit, emacs o joe. Para este curso vamos a vernano, ya que es un editor bastante sencillo de utilizar, y vim para el uso ms profesional

    Nano: Es un sencillo editor de textos que viene instalado en la mayora de distribuciones Linux de usoprofesional y domstico. Debido a su sencillez, cualquier usuario poco experimentado con la terminalpuede aprender a utilizar este editor de textos gracias a las lneas de ayuda inferiores que se muestrandurante la ejecucin de la aplicacin. El uso del comando es bastante sencillo, basta con escribir nanonombre_archivo y pasaremos a la pantalla de edicin de la aplicacin. Durante la ejecucin de laaplicacin podremos modificar todo el contenido del texto, aunque los cambios no se harn efectivoshasta que salvemos. Nano tiene una serie de atajos que vienen explicados en la ayuda inferior. Elcarcter ^ representa la tecla < Ctrl >. Asi, la combinacin de teclas < Ctrl + o > nos permiten guardarlos cambios que hemos realizado en el fichero. Un uso interesante de los atajos son la combinacin deteclas < Ctrl + k > y < Ctrl + u >, que nos permiten cortar y pegar texto respectivamente.

    Vim: Este potente editor de texto nos permite la edicin de forma profesional de un fichero. Su uso esbastante mas complicado que Nano, ya que tiene diferentes modos de uso, pero esto otorga a laaplicacin unas mejoras en cuanto a la gestin del sistema durante el uso de la aplicacin. Hay quedecir que vim es una evolucin de la herramienta vi, y hereda de esta la funcionalidad bsica de laherramienta. A continuacin procedemos a explicar un poco su uso:

    El uso de la herramienta es similar a nano, tecleando vim nombre_archivo pasaremos a la pantalla deedicin de la aplicacin. Una vez ah, vamos a comprender los diferentes modos de la herramienta:

    Modo de navegacinEs el modo inicial de Vim . En ste, las teclas del teclado actan bsicamente para la navegacin yedicin de bloques de texto. Generalmente los comandos son letras nicas. Si viene precedido por unnmero, el comando se repetir de acuerdo con el valor de este nmero. Algunas teclas comunesutilizadas en el modo de navegacin son:

  • Modo de insercinLa manera ms comn de entrar en el modo de insercin es por medio de la tecla [i] o [a] , ya sea enmayscula o minscula. Es el modo ms intuitivo usado para escribir texto en un documento. La tecla[ESC] sale del modo de insercin y vuelve al modo de navegacin.

    Modo de comandoAccesible al pulsar la tecla [:] en el modo de navegacin. Se utiliza para realizar bsquedas, guardar,salir, ejecutar comandos en el shell, modicar conguraciones de VI , etc.

    Para volver al modo de navegacin se utiliza la instruccin visual o simplemente se pulsa [Enter] con lalnea vaca. A continuacin se muestran los comandos de VI :

  • Gestin de ficheros Las herramientas de gestin de ficheros en Linux nos permiten realizar las tareas cotidianas deeliminacin, copia, movimiento y renombramiento de ficheros y directorios. Vamos a explicar acontinuacin cuales son estas herramientas y sus opciones de uso, tanto en el mbito local como en elmbito de red:

    Ambito local: Las herramientas que se utilizan son cp, mv y rm:

    cp: Se utiliza para copiar ficheros y directorios. Por ejemplo, para copiar el archivo de texto prueba.txt al directorio Documentos haciendo uso de rutas absolutas:

    Sus opciones principales son:

    -i: Modo interactivo, pregunta antes de sobrescribir un archivo.

    -p: Copia tambin los atributos del archivo original.

    -r: Copia recursivamente el contenido del directorio de origen.

    Es importante saber que al copiar un directorio recursivamente el uso de la barra [/] al nal deldirectorio de origen determinar que nicamente se copie el contenido de dicho directorio al destino.En caso que no se use la barra se copiar el propio directorio de origen y su contenido al destino.

    mv: Se utiliza para mover archivos de una ubicacin a otra. Se puede utilizar con la opcin -i que pedir conrmacin antes de sobrescribir un archivo que ya est en el destino. Si se utilizael mismo archivo que en el anterior ejemplo y se quiere mover desde el directorio /home/usuario/Documentos/ a donde se encontraba inicialmente:

    rm. Borra un archivo especificado.

    -p: Borra un rbol completo de directorios vacos.

    -r. Borra directorios con contenido.

    -f: Fuerza la eliminacin del directorio especificado.

  • Fuerza el borrado del directorio Documentos con todo su contenido.

    Ambito remoto: Las herramientas de copia de ficheros en remoto mas utilizadas son scp y rsync. Eneste curso solo veremos scp, que se basa en el comando cp a travs de ssh. La sintaxis es la siguiente:

    Tanto el origen como el destino puede ser una direccin remota. Para acceder a la ubicacin remota, elformato es usuario@host:ruta. Las opciones mas utilizadas del comando son las siguientes:

    -i identity_file: Utiliza una llave privada de certificado concreta para realizar la comunicacincon el host remoto.

    -P puerto: Especifica el puerto de conexin con el host remoto. -p: Preserva los tiempos de modificacin, de acceso y permisos de los ficheros que se copian. -r: Copia de forma recursiva (obligatorio para copiar directorios)

  • Entrada, salidas, redirecciones y tuberas

    IntroduccinLos flujos, la redireccin y las tuberias son algunas de las herramientas ms potentes de la lnea decomandos. Linux trata la entrada y salida de comandos como un flujo (datos que podemos manipular).Normalmente la entrada es el teclado y la salida la pantalla, pero se pueden redirigir estos flujos deentrada y salida hacia otros comandos o archivos. La tuberia [ | ] se utiliza para redirigir la salida de uncomando hacia otro. Esto supone una magnfica herramienta de conexin entre comandos, lo cual permite realizar tareas complejas combinando varias herramientas sencillas.

    Para empezar a entender el redireccionamiento y tuberas hay que comprender primero los diferentestipos de flujos de entrada y salida. Todo comando en Linux posee tres canales bsicos por donde fluyela informacin y estos canales son:

    Entrada Estndar , en ingls standard input ( stdin ) es el mecanismo por el cual un usuario leindica a los programas la informacin que estos deben procesar. Esta informacin sueleintroducirse por el teclado. Ejemplos:

    Al ejecutar estos ejemplos sin argumentos el comando espera a que el usuario inserte informacin paraposteriormente procesarla, dicha informacin de entrada debe ser proporcionada por la entradaestndar, en este caso por el teclado.

    Salida Estndar , en ingls standard output ( stdout ) es el mtodo por el cual el programapuede comunicarse con el usuario. Por defecto la salida estndar es la pantalla donde se ejecutandichos comandos. Ejemplos:

  • Al terminar de procesar la informacin dada como argumentos el comando mostrar un mensaje en lapantalla donde se ha ejecutado. Dicha pantalla o ventana ser la salida estndar del comando ejecutado.

    Error Estndar , en ingls standard error output ( stderr ) es utilizado para mostrar mensajesde error que surjan durante el transcurso de su ejecucin. Al igual que stdout, stderr ser lapantalla donde se procesaron las instrucciones. Ejemplos:

    De igual forma stderr devolver mensajes que indicarn los errores de los comandos ejecutados.

    El ujo de datos para redireccionamiento y tuberas en lnea de comandos se inicia de izquierda aderecha.

    RedireccionamientoPara redireccionar la salida estndar de un comando a un archivo se utiliza el smbolo > despus delcual debe indicarse el nombre del archivo que se crear:

    Si el archivo existe previamente, se sobrescribir. Para agregar los valores sin borrar el contenidoexistente, se utiliza >> .

    Para redireccionar el contenido de un archivo a la entrada estndar de un comando se utiliza < . En estecaso, el ujo de datos va de derecha a izquierda. Este tipo de redireccin se suele utilizar con comandoscomo tr que no lee archivos directamente.

    Normalmente se suele redireccionar la salida estandar pero si se quiere redireccionar la salida deerrores podemos utilizar 2> . Para redireccionar ambos simultneamente, se usa &> .

  • > Crea un fichero nuevo con el contenido de la salida estndar. Si el archivo existe se sobrescribir.

    >> Aade la salida estndar al contenido de un archivo existente. Si no se especifica el archivo este se crea.

    2> Crea un fichero nuevo con el contenido de la salida de errores. Si el archivo existe se sobrescribir.

    2>> Aade la salida de errores al contenido de un archivo existente. Si no se especifica el archivo este se crea.

    &> Crea un fichero nuevo con el contenido de la salida estndar y la salida de errores. Si el archivoexiste se sobrescribir.

    < Enva el contenido del fichero especificado para su uso en la entrada estndar.

  • Tubera (pipe)Es posible enviar la salida de un comando a la entrada de otro comando, utilizando el carcter detubera [ | ]. Por ejemplo:

    Sustitucin de ComandosTambin es posible utilizar la salida de un comando como argumento para otro, utilizando comillasejecutivas [ ` ] (en el teclado se ubica en la tecla de apertura de corchetes):

    En este ejemplo se formatea el contenido de la variable PATH con el comando tr , para listar con ls los directorios contenidos en dicha variable.

    El resultado ser el mismo con:

  • Visualizacin de ficheros II: Uso de expresiones regulares Como ya se ha visto, la potencia de las redirecciones y tuberias nos permiten personalizar muchisimo labusqueda de contenido en fichero y su posterior tratamiento. Un aspecto fundamental en el uso de estosfiltros son las expresiones regulares, que nos permiten establecer carcteres comodin para realizarfiltros en las bsquedas de texto.

    Las herramientas que suelen utilizarse para el uso de expresiones regulares son grep y sus derivadas.

    Comando grepMuchos programas soportan el uso de estos elementos y el comando grep es el ms comn pararealizar bsquedas en textos mediante patrones. Algunos caracteres tienen un signicado especial enexpresiones regulares como se muestra a continuacin:

    ^ Inicio de lnea.

    $ Final de lnea.

    . (punto) Cualquier carcter

    * Cualquier secuencia de cero o ms caracteres.

    [ ] Cualquier carcter que est presente en los corchetes.

    Un uso comn del comando grep es mostrar el contenido de archivos de conguracin ignorandonicamente las lneas que corresponden a los comentarios, es decir, las lneas que se inician con elcarcter almohadilla [#]. Para hacer esto, es necesario aadir el parmetro -v que invierte el patrn debusqueda, seleccionando las lneas que no coincidan con el patrn.

    Por ejemplo, para hacerlo con el archivo /etc/default/grub :

    -c: Cuenta las lneas en las cuales esta el patrn.

    -i: Ignora la diferencia entre maysculas o minsculas.

    -f: Usa la expresin regular incluida en el archivo indicado por esta opcin.

    -n: Busca solamente en el nmero de lnea indicada por esta opcin.

    -v: Realiza la accin inversa, es decir, muestra todas las lneas excepto la que corresponde al patrn.

  • Comandos egrep y fgrepLos comandos egrep y fgrep complementan las funciones del comando grep.

    El comando egrep es equivalente al comando grep -E que incorpora otras funcionalidades ademsde las expresiones regulares estndar. Por ejemplo, con egrep se puede utilizar el operador pipe |"(tubera), que acta como el operador O lgico:

    Expresiones regularesBueno en esta gua os quera explicar de forma mas clara y con ejemplos explicados quees esto de las expresiones regulares. Para comenzar lo primero que hay que aclarar es ladiferencia entre expresiones regulares y patrones de ficheros, ya que se puedenconfundir y a nivel funcional son diferentes. Las expresiones regulares son lasutilizadas para buscar un texto dentro de un fichero, mientras que los patrones deficheros son normalmente los argumentos pasados a los comandos como rm, cp,mv, etc. para hacer referencia a varios ficheros en el disco duro. Por tanto, podemosconcluir en que tenemos un grupo de comandos que sern los que utilicen expresionesregulares y que estn orientados al tratamiento de texto: grep, egrep, ed, sed, awk,vi, etc...

    Existen dos tipos de expresiones regulares: las bsicas y las extendidas. Como sepuede deducir de su nombre las extendidas otorgan muchas mas opciones a la hora detratar con los patrones a buscar. Antes de comenzar con la gua y ver ejemplos vamos aver todas las expresiones regulares as como las reglas de uso de estas mismas:

  • Reglas Cuando hablamos de expresiones, estas pueden ser un carcter, un conjunto de caracteres o un

    metacracter.

    Para utilizar las expresiones regulares es necesario ponerlas entre comillas simples ' '

    Para usar las expresiones regulares extendidas, es necesario otorgar al comando lafuncionalidad. Por ejemplo, para el comando grep es necesario utilizar la opcin -E o utilizardirectamente el comando egrep, y para el comando sed es necesario aadirle la opcin -r.

    Los caracteres son tratados de forma literal, es decir, que concuerdan consigo mismo. Porejemplo x concuerda con x, abc concuerda con abc, etc...

    La excepcin a la regla anterior esta en los metacaracteres:

    Para utilizar estos metacaracteres como literales, es necesario escaparlos, esto se consigueantecediendole el metacaracter de barra invertida \

    A continuacin seguiremos viendo algunas reglas ms en conjunto de las diferentes expresionesregulares. Estas expresiones se pueden subdividir en varias categoras, que son las siguientes:

    Expresiones regulares bsicas de un solo carcterDentro de esta categora tenemos las siguientes expresiones:

  • Estas expresiones tienen las siguientes reglas especiales:

    Dentro de los corchetes [ ] los metacaracteres pierden su funcin especial y se tratan como literales.

    Hay varias excepciones a la regla anterior. Por ejemplo el carcter del sombrerito si se pone alinicio del corchete gana una funcionalidad diferente, como hemos visto en la tabla anterior.

    Expresiones regulares bsicas de repeticinPodemos repetir una expresin regular tantas veces como queramos con la secuencia \{ \}. Esta repeticin se puede realizar de las siguientes formas:

    Expresiones regulares extendidasComo hemos visto antes, para poder utilizar estas expresiones es necesario darle al comando que seejecuta el soporte para poder usarlas. Antes de comenzar a verlas, es necesario ver reglas deconversin:

    El uso de las barras invertidas en los corchetes y los parntesis no sirve en las expresionesregulares extendidas. Esto quiere decir que lo que hemos visto antes de \( \) y \{ \} ahora sedebe poner de este modo: ( ) y { }. Si queremos que sean caracteres literales esnecesario escaparlos.

    Expresiones regulares extendidas de un solo carcterEn este grupo se agregan las siguientes expresiones:

  • Expresiones regulares extendidas de alternanciaCon el metacarcter tubera | podemos alternar entre dos expresiones regulares. Por ejemplo siqueremos buscar una palabra que sea abc o bbc podemos indicarlo del siguiente modo (a|b)bc

    Expresiones regulares extendidas de etiquetadoUn etiquetado consiste en referenciar una expresin regular en otro lugar del patrn de bsqueda.Para etiquetar una expresin regular debemos hacer uso de los parntesis ( ) y luego parareferenciar esa expresin debemos indicarlo con \n siendo n el nmero de la etiqueta en ordenascendente comenzando por uno (pueden existir varias etiquetas dentro del patrn).

    Por ejemplo la expresin (.)e\1e concuerda con pepe y con nene

    Otros metacaracteres utilizados en las expresiones regulares extendidasExisten otros metacaracteres para las expresiones regulares extendidas, entre los cuales solamentevamos a ver uno muy utilizado que hace referencia a la delimitacin entre el principio y el fin de unapalabra. Para referenciar el principio se debe usar \< y para referenciar el final \>

    Casos prcticosBueno, una vez visto todo esto, vamos al caso prctico! Vamos a utilizar este texto para nuestrosejemplos:

  • Lo primero que vamos a hacer para esta gua es configurar el comando grep con la opcin de color.Esto nos va a ayudar mucho a saber realmente lo que estamos filtrando con el patrn que hemos puesto.Para activar esta opcin se puede hacer de dos formas: o bien con la variable deentornoGREP_OPTIONS contenga el valor --color o bien creando un alias al comando aliasgrep='grep color=always'.

    Comenzamos con el ejemplo mas bsico que es buscar una palabra concreta. En este caso vamos abuscar la palabra Debian:

    Como podemos apreciar, no nos ha cogido las palabras debian que existen en el texto. Esto sedebe a que, como ya sabemos, Linux discrimina entre maysculas y minsculas. Para ignorar estadiscriminacin, debemos ponerle al comando grep la opcin -i

    Esto mismo podriamos abordarlo del siguiente modo, aunque no es el mas correcto. Usando el puntopodemos sustituir cualquier carcter dentro del patrn de bsqueda, por tanto:

  • De este modo buscara cualquier palabra que contenga cualquier carcter seguido de ebian.

    Ahora vamos a complicarlo mas. Vamos a realizar una bsqueda de todas las lneas que contengan lafecha de release pertenecientes a los dias 10 hasta el 19 de cualquier mes. Analizando el textodebemos notar que la expresin debe coincidir los nmeros al inicio de lnea. Viendo la estructura delfichero lo podemos acometer del siguiente modo:

    El acento circunflejo ^ lo utilizamos para indicar que la expresin se debe buscar al inicio de linea,despues escapamos el corchete para hacerlo literal, a continuacin ponemos el uno y luego un rangoque comprenda entre el 0 y el 9.

    Lo siguiente que vamos a ver es el uso de una expresin regular extendida, que va a ser lainterrogacin. Por ejemplo, vamos a seleccionar las lneas que contengan tanto http como https. Paraello construimos el patrn del siguiente modo:

    La interrogacin permite que el carcter que esta a su izquierda sea opcional, por tanto nos va abuscar tanto cadenas http como https.

    Para comprender como funciona el metacarcter + vamos a ver una sucesin de comandos parapoder comprenderlo:

  • El siguiente ejemplo vamos a utilizar el concepto de repeticiones. Vamos a complicarlo un pocobuscando palabras que solo contengan 4 letras. Hay que tener en cuenta que debemos delimitar elpatrn con el inicio y el fin de una palabra, ya que si no buscara dentro de las palabras secuenciasde 4 letras, y eso no es lo que queremos. Por tanto la construccin se hara del siguiente modo:

  • Como podemos apreciar, con los delimitadores \< y \> hacemos que solo encuentren un carctercomprendido entre la a y z tanto minscula como mayscula repetida la secuencia 4 veces.

    Ahora algo mas complicado, vamos a seleccionar las lneas que tengan frases de dos palabras. Paraello lo primero a la hora de montar la expresin regular es saber que una palabra es una serie deletras consecutivas. Para afrontarlo como patrn de bsqueda podriamos indicar [a-zA-z]+

    Lo siguiente que debemos entender que entre palabras hay un espacio, por tanto lo siguiente quedeberiamos buscar sera cualquier cosa que no sea una letra, tambin hay que tener en cuenta queel final de la frase entendemos que se realiza con un punto, por tanto [^a-zA-Z]

    Bien, ya tenemos una palabra y un espacio/punto. Ahora para saber una frase de dos palabras lonico que tendriamos que indicarle es que se repitiera 2 veces, pero claro, si lo ponemos de formaliteral no va a comprender lo que queremos realizar. Por tanto es necesario agrupar las dosexpresiones anteriores para realizar la repeticin y delimitndolas para que entienda que es unafrase, quedando una cosa asi:

    Si analizamos la expresin regular, el inicio de la frase lo expresamos con ^ y el final con $. Losiguiente es entre parntesis la unin de una letra con un espacio o un punto, y ese conjunto serepite dos veces.

  • Procesos y trabajosEn el sistema Linux, cuando una aplicacin se ejecuta genera lo que llamamos un proceso. Esteproceso tiene un identificador de proceso (PID) y, si la propia aplicacion ejecuta otra aplicacin,generar otro proceso hijo de la aplicacin inicial, que tambin tendr su propio (PID).

    Esta regla tiene la excepcin de los programas internos de la shell, que como ya vimos en el apartadode la shell, utilizan el propio PID de la shell para su ejecucin.

    A continuacin veremos las diferentes aplicaciones que se utilizan en Linux para monitorizar ygestionar procesos.

    Monitorizar procesosPueden utilizarse diversos comandos para inspeccionar procesos y son especialmente tiles paralocalizar y nalizar procesos que no son necesarios o son sospechosos.

    Una de las herramientas ms importantes de administracin de procesos es el comando ps , quemuestra el estado de los procesos. Incluye algunas opciones muy tiles y ayuda a monitorizar lo queest ocurriendo en el sistema. Su sintaxis es bastante simple:

    Algunas de las caractersticas ms comunes son:

    Mostrar todos los procesos: Por defecto, ps muestra solo los procesos arrancados desde lapropia terminal (por ejemplo xterm, login en modo texto o login remoto). Las opciones -A y -e muestran todos los procesos en el sistema, y x muestra todos los procesos de los que espropietario el usuario que ejecut el comando. La opcin x tambin incrementa la cantidad deinformacin mostrada sobre cada proceso.

    Mostrar procesos de un usuario: Se pueden mostrar los procesos de un usuario concreto con laopcin -u user, U user, y --User user. La variable user debe ser un nombre de usuario o elID de un usuario.

    Mostrar informacin extra: Las opciones -f , -l , j , l u y v expanden la informacin sacadaen pantalla. La mayora de los formatos de salida incluyen una lnea por proceso, pero ps puede mostrar tal cantidad de informacin que sea imposible mostrar en una sola lnea lainformacin de un proceso concreto.

    Mostrar jerarqua de procesos: Las opciones -f , -H y --forest agrupan procesos y muestranla jerarqua y relaciones entre ellos. Estas opciones pueden ser tiles si se desea saber cual es elpadre de un proceso, o viceversa.

  • Ejemplo del comando ps :

    Aqu se muestran los procesos iniciados por el usuario "usuario" y la jerarqua y relacin entre ellos.

    Una variante del comando ps es pstree que muestra procesos activos en formato de rbolgenealgico (procesos hijos vinculados a sus respectivos procesos padre).

    Para monitorizar continuamente los procesos, mostrando informacin como utilizacin de memoria yCPU de cada uno de ellos, se usa el comando top . La tecla [H] proporciona ayuda sobre lautilizacin del programa. Puede utilizarse para modicar la prioridad de un proceso. Esta herramientaes un programa en modo texto que se puede arrancar desde una terminal, aunque tambin existenalgunas variantes en modo grfico. Como cualquier comando Linux, acepta diferentes opciones,

  • algunas de las ms tiles son las siguientes:

    -d delay : Especifica el intervalo entre actualizaciones que por defecto es 5 segundos. Esto indica eltiempo que tarda el programa en actualizar los datos que se estn presentando por pantalla.

    -p PID: Para monitorizar procesos especficos se puede usar esta opcin.

    -n iter: Se puede especificar que muestre cierto nmero de actualizaciones, y despus finalice elprograma.

    k: Para matar un proceso, el comando preguntar por el PID y matar dicho proceso siempre que estcapacitado de hacerlo.

    q: Salir del programa.

    r: Se puede cambiar la prioridad de un proceso con esta opcin. Habr que insertar a continuacin elPID del proceso seguido de un nuevo valor de prioridad. Un valor positivo decrementar su prioridad yun valor negativo la incrementar, asumiendo que la prioridad por defecto con que inicia un proceso es0.

    P: Ordena la salida por pantalla segn el uso de la CPU que hace cada proceso.

    M: Ordena la salida por pantalla segn el uso de la memoria que hace cada proceso.

    Una variante del programa top es htop , que a diferencia de top muestra una lista completa de procesosen ejecucin en lugar de los procesos que estn consumiendo recursos. Adems usa colores y da unaspecto visual ms amigable ofreciendo informacin sobre la CPU, la swap y el estado de la memoria.

    Se puede obtener el PID de un programa concreto con el comando pidof , siempre que dicho programaest en ejecucin. Su sintaxis es como sigue:

    Como programa se debe especificar el nombre del programa cuyo PID deseemos consultar. El PIDpuede ser uno solo o varios, ya que un programa puede tener distintos procesos en ejecucinrelacionados entre s (procesos padre e hijos).

    Ejemplo de pidof:

  • Otra aplicacin que permite visualizar los procesos filtrando por cierto criterio es el programa pgrep .Funciona de un modo similar al comando grep pero esta variante permite filtrar procesos segn uncriterio dado. La sintaxis bsica es la siguiente:

    Como se puede ver, existen muchos criterios de filtrado para pgrep , permitiendo un control total en laseleccin de criterio a la hora de mostrar procesos. Este comando es muy utilizado en scripts, donde elfiltrado y seleccin de procesos para su gestin se vuelve fundamental para no cometer errores en laautomatizacin de tareas. Un ejemplo sencillo de utilizacin de este comando es, por ejemplo, el defiltrar los procesos sshd del usuario root. Esto se realiza del siguiente modo:

    Finalizar procesosUn programa puede llegar a quedarse totalmente sin respuesta o bien puede ocurrir que se deseefinalizar un programa que no debera estar arrancado. En estos casos el comando kill es la herramientaa usar.

    Este comando enva una seal (es un mtodo que Linux usa para comunicarse con los procesos) a unproceso. La seal estndar cuando no se informa ninguna seal es SIGTERM, con el valor numrico 15que solicita al programa en cuestin su finalizacin. El proceso no necesariamente obedece a la seal amenos que la seal sea SIGKILL. En algunos casos la seal SIGHUP puede interpretarse como ordenpara que el proceso lea nuevamente su(s) archivo(s) de conguracin.

    Por ejemplo, para enviar la seal SIGTERM al proceso nmero 4902:

  • Existen otros comandos muy relacionados con kill para la eliminacin de procesos. El comando pkill funciona del mismo modo que el comando pgrep visto anteriormente, salvo que la nicadiferencia es que el primero le enva la seal por defecto SIGTERM (se puede modificar con laopcin -singal ) y el segundo solo muestra el PID del proceso por pantalla.

    Otro de los comandos utilizados para eliminar procesos es killall . Este comando enva una seal atodos los procesos en ejecucin que se relacionen con el patrn dado. Por defecto, al igual que pkill ,enva la seal SIGTERM , siendo modificable por sus parmetros. La diferencia con pkill reside ensu posibilidad de seleccionar el criterio de eliminacin de procesos mediante expresiones regulares,eliminacin de procesos de forma interactiva y verificacin de que todos los procesos se han eliminadocon xito. Su sintaxis bsica es la siguiente:

    Tareas en Primer y Segundo Plano (jobs), tareas desatendidasUna de las tareas ms bsicas de la administracin de procesos es controlar si un proceso se ejecuta enprimer o segundo plano. Cuando se inicia un programa, ste normalmente toma el control de laterminal impidiendo realizar cualquier otra tarea. Para liberar la terminal basta con pulsar control + Z que pausa el programa.

    El inconveniente de este procedimiento es que el programa no sigue ejecutndose. Si se pausanprocesos se pueden recuperar con fg y si hay ms de uno debe aadirse el nmero de tarea que sequieren recuperar. El nmero de tarea asociado con un terminal se obtiene con el comando jobs .

  • Programacin de tareas con cron

    Qu es cron?Cron es el nombre del programa que permite a usuarios Linux/Unix ejecutar automticamentecomandos o scripts (grupos de comandos) a una hora o fecha especfica. Es usado normalmente paracomandos de tareas administrativas, como respaldos, pero puede ser usado para ejecutar cualquier cosa.

    Cron es el demonio del sistema con el que se programan acciones en base al tiempo. Las realiza cadahora, da, semana, mes y con cierto intervalo de das, desde segundo plano, siempre y cuando el sistemase encuentre en modo multiusuario. Para esto, debe leer el archivo llamado crontab, que se localizanormalmente en /etc o algn otro directorio, dependiendo de la versin de Unix que se maneje.

    Entendiendo el papel de cronEl programa cron es un demonio, por lo que funciona de forma continua, en busca de eventos quehacen que entre en accin. A diferencia de la mayora de los demonios, que son los servidores de red,cron responde a eventos temporales. En concreto, se "despierta" una vez por minuto, examina losarchivos de configuracin en los directorios /var/spool/cron y /etc/cron.d y el archivo /etc/crontab yejecuta los comandos especificados por estos archivos de configuracin si el tiempo coincide con lahora indicada en estos archivos.

    Se pueden agregar comandos o scripts como tareas de cron para automatizar algunos procesos. Esto estil por ejemplo para automatizar la actualizacin de un sistema o establecer un robusto sistema decopias de seguridad.

    Existen dos tipos de tareas de cron: tareas cron del sistema y tareas cron de usuario. Las tareas de crondel sistema se ejecutan como root y se convierten en tareas de mantenimiento del sistema. Por defecto,la mayora de las distribuciones incluyen tareas cron del sistema que limpian los archivos antiguosdel /tmp, realizan rotaciones de logs, y dems tareas de mantenimiento.

    Normalmente los usuarios pueden crear tareas cron de usuario, las cuales ejecutarn algunos programasde usuario habituales. Se pueden crear tareas cron de usuario como root, las cuales pueden ser tiles sise necesita realizar alguna tarea en algn momento no cubierto por las tareas cron del sistema, queestn programadas de forma mas rgida.

    Una de las cuestiones crticas de las tareas del cron es que se ejecutan sin supervisin. Por lo tanto, nose debe incluir cualquier programa en una tarea programada si el programa requiere intervencin delusuario. Por ejemplo, no se podra ejecutar un editor de texto en una tarea cron, pero es posible ejecutarun script que manipule automticamente los archivos de texto.

  • Creando tareas cron del sistemaCrontab es un simple archivo de texto que guarda una lista de comandos a ejecutar en un tiempoespecificado por el usuario. Crontab verificar la fecha y hora en que se debe ejecutar el script o elcomando, los permisos de ejecucin y lo realizar en segundo plano (background). Cada usuario puedetener su propio archivo crontab, de hecho el /etc/crontab se asume que es el archivo crontab delusuario root, cuando los usuarios normales (e incluso root) desean generar su propio archivo decrontab, entonces se utiliza el comando crontab.

    Crontab es la manera mas sencilla de administrar tareas de cron en sistemas multiusuario, ya sea comosimple usuario de sistema o usuario root.

    El archivo /etc/crontrab controla las tareas cron del sistema. Este archivo normalmente comienza convarias lneas que establecen las variables de entorno como por ejemplo $PATH y $MAILTO.

    Se ejecuta la edicin del crontab con crontab -e, en algunas distribuciones (como ubuntu) existe laopcin de elegir el editor de textos que se desea, aunque en la mayora de las distribuciones se usa pordefecto vi. El archivo /etc/crontab tiene la siguiente sintaxis:

  • Las entradas del archivo /etc/crontab generalmente utilizan run-parts, cronloop, o una utilidad similarque ejecuta todos los scripts ejecutables dentro de un directorio. La mayora de las distribucionesincluyen tareas cron del sistema mensuales, diarias, semanales, y por cada hora, cada una de ellascorrespondiente a los scripts en un directorio llamado /etc/cron.interval, en el que interval es la palabraasociada a la frecuencia de funcionamiento. Otras distribuciones colocan estos scripts en directorios/etc/cron.d/interval.

  • Creando tareas cron de usuarioEn un sistema Linux, cada usuario tendr su propio crontab, incluido root. Por supuesto, en el crontabde cada usuario slo se permitir ejecutar tareas para las que ese usuario tenga permisos (por ejemplo,un usuario que no sea root no podr apagar el sistema). Para crear tareas cron de usuario se utilizan lascrontab, pero no se debe confundir con la configuracin del archivo /etc/crontab.

    La sintaxis del comando crontab es la siguiente:

    Como alternativa, se puede crear un archivo de configuracin de la tarea cron y pasar el nombre delarchivo a crontab utilizando el parmetro file.

    Si se crea la tarea programada y se enva a travs del parmetro file o editndolo con -e, el formato delarchivo cron es similar a lo descrito anteriormente. Se pueden establecer variables de entorno usando laforma VARIABLE=valor o se puede especificar un comando precedido de cinco nmeros o comodinesque indican cuando se va a ejecutar la tarea. En una tarea cron de usuario no se especifica el nombre deusuario utilizado para ejecutar el trabajo como en las tareas cron del sistema. Esta informacin estderivada del propietario de la tarea cron.

    Los archivos que almacenan las tareas de usuario se pueden localizar en los directorios/var/spool/cron, /var/spool/cron/tabs o /var/spool/cron/crontabs. Cada archivo en este directorio es elnombre del usuario a cuyo nombre se ejecuta la tarea. Por ejemplo, el archivo de tareas programadasdel usuario carlos ser nombrado como /var/spool/cron/tabs/carlos. No se puede editar directamenteeste archivo en este directorio pero sin embargo, el uso de crontab permitir realizar cambios.

    Permisos ejecutablesEl acceso a la utilidad cron puede ser restringido de varias maneras.

    Los permisos de los programas de cron y crontab pueden ser restringidos usando mecanismos estndaren Linux. No todas las distribuciones se configuran de esta forma, pero en aquellas que lo hacen, losusuarios deben ser capaces de programar los trabajos concron y aadirse al grupo apropiado.

    Este grupo normalmente se le llama cron, pero se debe verificar el propietario del grupo y los permisosen el directorio /usr/sbin/cron y /usr/bin/crontab para estar seguro. El archivo /etc/cron.allow contieneuna lista de usuarios a los que se le permite el acceso a cron.

  • Si este archivo est presente, solo los usuarios cuyos nombres aparecen en la lista pueden usar cron y alresto se les deniega el acceso. Si el archivo no est presente cualquiera podr usar cron asumiendo queel acceso no est restringido por permisos ejecutables o lista de usuarios no permitidos.

    La lista a los que no se les permite el acceso est en el archivo /etc/cron.deny. Si este fichero estpresente a cualquier usuario cuyo nombre aparezca en la lista tendr el acceso denegado a cron, pero elresto podr utilizarlo, asumiendo que los permisos ejecutables y los usuarios de la lista permitida notienen el acceso restringido.

  • Gestin de usuarios Los usuarios del sistema es uno de los aspectos fundamentales de GNU/Linux. Debido a queGNU/Linux es multiusuario, la gestin de estos en el sistema se torna sumamente importante en elaspecto tanto de la propia gestin como de la seguridad del sistema. Podemos identificar 3 perfiles deusuarios en un sistema Linux:

    Usuario root: Tambin llamado superusuario o administrador. Es la nica cuenta de usuario quetiene privilegios sobre todo el sistema, contando con el acceso a todos los ficheros y directorioscon independencia del propietario o permisos. Adems, puede controlar la administracin decuentas de usuario, ejecutar tareas de mantenimiento, detener el sistema, instalar software ytareas ms avanzadas como reconfigurar el Kernel, compilar e instalar controladores, etc.

    Usuarios especiales: Tambin llamadas cuentas del sistema. Estas cuentas tienen privilegiospara el servicio o programa al que estn asociados, siendo esto as para aumentar la seguridaddel sistema. La mayora de estas cuentas no tienen contrasea debido a que no estn pensadaspara iniciar sesin con ellas, y su creacin o gestin dependen del servicio. As, estas cuentas secrean o destruyen dependiendo si el paquete est o no instalado en el sistema. Un ejemplo deestas cuentas pueden ser bin, daemon, adm, lp, sync, shutdown, mail, operator, squid, apache,etc.

    Usuarios normales: Estas son las cuentas de los usuarios personales. Cada usuario dispone de undirectorio de trabajo que se ubica generalmente en /home. Estas cuentas de usuario tienen todoslos privilegios solo en su espacio de trabajo, por tanto pueden personalizar su entornomodificando ficheros relacionados con el inicio de sesin.

    Linux tiene un sistema de identificacin de usuarios, llamado UID, as tambin para los grupos delsistema llamado GID. El usuario root siempre tiene el UID cero, la gestin de cuentas del sistema sueletener una reserva de identificaciones que van del 1 al 100, y finalmente los usuarios normales quesuelen comenzar a partir del 500 en adelante. Todos estos valores se pueden modificar en el fichero/etc/login.defs

    Todos los usuarios almacenan la definicin de sus cuentas en el fichero /etc/passwd. Este fichero tieneun formato concreto, dividido en 7 campos separados por el carcter dos puntos :. Estos camposdeterminan el nombre del usuario, la contrasea, el UID del usuario, el GID del usuario, comentarios,el directorio de trabajo y la shell que utiliza.

    La contrasea del usuario, ya de forma predeterminada, se encuentra, de forma encriptada, en el fichero/etc/shadow. En este fichero, adems de esto, se encuentra otro tipo de informacin relacionada con laadministracin avanzada de usuarios: caducidad de la cuenta, cambios de contrasea, etc.

    Para cambiar de usuario la forma general es con el comando su. Esta aplicacin tambin nos permite laejecucin de comandos con un usuario diferente al nuestro. Si escribimos solamente el comando su,cambiaremos de forma automtica al usuario root.

  • El uso del guin intermedio en el comando anterior es importante como elemento de seguridad. Lautilizacin de su - permite al nuevo usuario o comando ejecutado tomar sus variables de entorno,debido a que la opcin de guin crea una nueva shell para el usuario. Para la ejecucin de comandoscomo otros usuarios existe otra herramienta que se ha convertido en un estndar de administracinllamada sudo.

    La mayora de distribuciones de escritorio (como el caso de Ubuntu) se basa en un estndar deadministracin que indica que el sistema debe tener usuarios normales logueados en su uso habitual, ypara tareas puntuales de administracin usar al usuario root. El uso del comando su tiene unadesventaja o problema de seguridad debido a que, para ejecutar un comando de administracin, se debeescribir la clave de root en la terminal, y aplicaciones como los keyloggers pueden obtenerla. Elcomando sudo fue creado precisamente para evitar esta situacin, ya que la aplicacin permite elevarlos permisos del usuario a root estableciendo la clave del propio usuario para tareas concretas.

    Sudo tiene un fichero de administracin y unos comandos para su gestin. El fichero /etc/sudoers tieneinformacin de los usuarios permitidos por la aplicacin, adems de que comando concreto puedenejecutar.

    Un ejemplo del fichero es el siguiente:

  • Instalacin de Software La gestin de software de Linux es una de las bazas ms importante de las que usar software libre.Como su propio indica, al ser libre los sistemas Linux utilizan los llamados repositorios de paqueterapara nutrirse de aplicaciones. Estos repositorios son servidores web esparcidos por internet dondecuentan con el almacenamiento de todos los paquetes de las distribuciones. De este modo, cualquierusuario de Linux se podr descargar de una forma cmoda y sencilla cualquier aplicacin, sin tener quebuscar por pginas web dicho software.

    El s