Diferencia entre revisiones de «Página principal»
Línea 9: | Línea 9: | ||
Para simplificar, a partir de este momento, nos referiremos a GNU/Linux como Linux, aunque conviene no olvidar que Linux es tan solo el núcleo del sistema. | Para simplificar, a partir de este momento, nos referiremos a GNU/Linux como Linux, aunque conviene no olvidar que Linux es tan solo el núcleo del sistema. | ||
− | + | === El sistema operativo === | |
La función de cualquier sistema operativo (SO) es proporcionar una interfaz para utilizar las prestaciones del hardware de un ordenador. Los programadores acceden a estas prestaciones a través del SO y pueden diseñar aplicaciones de propósito específico para usuarios finales. Éstos, a su vez, utilizan el SO para poder ejecutar dichas aplicaciones. | La función de cualquier sistema operativo (SO) es proporcionar una interfaz para utilizar las prestaciones del hardware de un ordenador. Los programadores acceden a estas prestaciones a través del SO y pueden diseñar aplicaciones de propósito específico para usuarios finales. Éstos, a su vez, utilizan el SO para poder ejecutar dichas aplicaciones. | ||
Linux pertenece a la familia de sistemas denominada Unix y su filosofía está heredada de este tipo de sistemas. En lo que sigue, cuando definamos muchas de las características, funcionamiento e incluso comandos de Linux, podemos asumir que se puede aplicar a prácticamente cualquier sistema Unix con mínimos cambios. Así por ejemplo, ya podemos decir que Linux es un sistema multiusuario y multitarea, es decir, permite a varios usuarios trabajar simultáneamente y ejecutar diversas aplicaciones a la vez. Estas características determinan de forma importante el funcionamiento del sistema, el cual debe garantizar que toda esta carga de trabajo simultánea se lleve a cabo de forma segura y eficiente. | Linux pertenece a la familia de sistemas denominada Unix y su filosofía está heredada de este tipo de sistemas. En lo que sigue, cuando definamos muchas de las características, funcionamiento e incluso comandos de Linux, podemos asumir que se puede aplicar a prácticamente cualquier sistema Unix con mínimos cambios. Así por ejemplo, ya podemos decir que Linux es un sistema multiusuario y multitarea, es decir, permite a varios usuarios trabajar simultáneamente y ejecutar diversas aplicaciones a la vez. Estas características determinan de forma importante el funcionamiento del sistema, el cual debe garantizar que toda esta carga de trabajo simultánea se lleve a cabo de forma segura y eficiente. | ||
Línea 15: | Línea 15: | ||
Las aplicaciones que funcionan sobre el núcleo constituyen el último nivel y el único visible para los usuarios. Algunas de estas aplicaciones son utilidades básicas para la gestión de la información y la ejecución de programas y ya vienen con el sistema operativo, por lo que es habitual hablar de Linux refiriéndonos no sólo al núcleo, sino también a dicho conjunto de utilidades, desarrolladas por el proyecto GNU. | Las aplicaciones que funcionan sobre el núcleo constituyen el último nivel y el único visible para los usuarios. Algunas de estas aplicaciones son utilidades básicas para la gestión de la información y la ejecución de programas y ya vienen con el sistema operativo, por lo que es habitual hablar de Linux refiriéndonos no sólo al núcleo, sino también a dicho conjunto de utilidades, desarrolladas por el proyecto GNU. | ||
− | ¿Quién me escucha? | + | === ¿Quién me escucha? === |
Una de las ideas fundamentales de Linux que deriva de la estructura de capas es que los usuarios no ‘hablan’ directamente con el sistema, sino que lo hacen a través de una aplicación denominada intérprete de comandos (shell). Esta aplicación está constantemente ‘escuchando’ todo lo que el usuario teclea e interpreta (a partir de unas ciertas reglas sintácticas) sus peticiones. | Una de las ideas fundamentales de Linux que deriva de la estructura de capas es que los usuarios no ‘hablan’ directamente con el sistema, sino que lo hacen a través de una aplicación denominada intérprete de comandos (shell). Esta aplicación está constantemente ‘escuchando’ todo lo que el usuario teclea e interpreta (a partir de unas ciertas reglas sintácticas) sus peticiones. | ||
El intérprete de comandos dispone de una serie de comandos internos que él mismo ejecuta, pero, asimismo, puede ejecutar otros comandos externos, pasándoles las opciones que el usuario ha especificado. En la imagen vemos el comando cat que permite visualizar el contenido de un fichero especificado por el usuario. Algunos comandos ejecutan aplicaciones que proporcionan sus propia interfaz y conjuntos de órdenes para interactúar con los usuarios, como el editor de textos vi. | El intérprete de comandos dispone de una serie de comandos internos que él mismo ejecuta, pero, asimismo, puede ejecutar otros comandos externos, pasándoles las opciones que el usuario ha especificado. En la imagen vemos el comando cat que permite visualizar el contenido de un fichero especificado por el usuario. Algunos comandos ejecutan aplicaciones que proporcionan sus propia interfaz y conjuntos de órdenes para interactúar con los usuarios, como el editor de textos vi. | ||
+ | == El sistema de archivos == | ||
+ | Un sistema multiusuario necesita una forma de permitir a los usuarios tener distintos ficheros con el mismo nombre. También debe permitirles organizar los ficheros en grupos lógicos. La mayoría de sistemas operativos resuelven estas cuestiones proporcionando un sistema de ficheros jerárquico. | ||
+ | En un sistema de este tipo los ficheros se organizan en directorios, que no son otra cosa que un tipo especial de fichero que agrupa a otros. Puesto que un directorio puede contener también otros directorios, la estructura del sistema de ficheros se asemeja a un árbol. | ||
+ | Como se puede observar en la figura, hay un directorio en la parte superior del árbol con un nombre especial (‘/’) y llamado directorio raíz(root). | ||
+ | === Organización del sistema de ficheros === | ||
+ | Siguiendo las convenciones habituales en Unix, el sistema de ficheros de Linux se organiza en una serie de directorios estándar de propósito específico. Algunos de los más importantes son los siguientes: | ||
+ | '''/dev''' Contiene ficheros representando los dispositivos físicos del ordenador. | ||
+ | '''/etc''' Está reservado para ficheros de configuración del sistema. | ||
+ | '''/lib''' Contiene las librerías necesarias para ejecutar los programas que residen en /bin. | ||
+ | '''/proc''' Contiene ficheros especiales que reciben información del núcleo. | ||
+ | '''/sbin''' Contiene programas que sólo son accesibles para el usuario ‘root’ | ||
+ | '''/usr''' Contiene los programas de uso común para todos los usuarios y presenta una estructura con directorios /etc, /bin o /lib propios para dichos programas | ||
+ | '''/var''' Contiene información temporal sobre la ejecución de algunos programas. | ||
+ | '''/home''' Contiene los directorios personales de los usuarios del sistema. | ||
+ | |||
+ | === El directorio personal === | ||
+ | A diferencia de otros sistemas operativos donde tras inicializar el ordenador el usuario accede por defecto al directorio raíz, en Linux cada usuario lo hace a un directorio personal (home directory) ubicado en algún lugar de la jerarquía de directorios del sistema. A menudo los directorios personales están ubicados debajo del directorio /home. | ||
+ | === Directorios especiales === | ||
+ | Existe una notación especial para hacer referencia a dos directorios en particular, el directorio actual y el directorio inmediatamente superior al mismo. El primero, se representa mediante un punto(.), mientras que el segundo se indica mediante dos puntos (..) | ||
+ | === Rutas absolutas y relativas === | ||
+ | Una ruta es el “nombre completo” de un fichero que incluye no sólo su nombre, sino su situación en la jerarquía, separando cada directorio mediante una barra (/). Por defecto, el intérprete asume que los comandos introducidos y los nombres de ficheros y directorios a los que se hace referencia poseen una ruta relativa al directorio actual. Al conectarnos por primera vez, el directorio actual es el directorio personal. Supongamos que acabamos de hacerlo y que es /home/luis. Si escribimos una orden como lista-ficheros-graficos, el intérprete asumirá que la ruta completa del fichero es /home/luis/lista-ficheros-graficos. La idea es que no es necesario indicar toda la ruta, sino sólo el desplazamiento necesario teniendo en cuenta el punto del sistema de ficheros donde estamos situados. También podemos indicar ficheros situados más arriba en la jerarquía. Por ejemplo, si escribimos la orden anterior como ../../bin/lista-ficheros-gráficos, el intérprete buscará el comando dos niveles por encima y luego bajará a bin. | ||
+ | En algunas ocasiones puede ser más conveniente o fácil indicar un nombre completo utilizando una ruta absoluta. Este tipo de rutas comienza siempre por una barra (/) para indicar que la ruta comienza a definirse desde el directorio raíz, independientemente de cuál sea nuestro directorio actual. En el último de los ejemplos anteriores, podríamos especificar la situación del comando como /bin/lista-ficheros-gráficos. | ||
+ | |||
+ | === Montaje de unidades de disco === | ||
+ | En Linux, a diferencia de otros sistemas, las unidades no se representan con letras (por ejemplo, ‘C:’) sino que se ubican en algún punto de la jerarquía de directorios. La acción de vincular un directorio de la jerarquía a una unidad de disco se denomina montar la unidad. | ||
+ | Si añadimos unidades de disco a nuestro sistema, deberemos montarlas para poder usarlas. Sea un disco duro, un CD, o una unidad USB la instrucción a usar será siempre la misma: | ||
+ | mount [dispositivo] [punto_de_montaje] | ||
+ | Donde dispositivo es el disco que queremos montar y punto_de_montajeel directorio donde queremos montarlo. Los discos duros los encontraremos en /dev/sdXN dónde la X representa el disco (el primero será a, el segundo b, etc.) y N será el número de la partición (en caso de que el disco esté particionado). Así, para montar un segundo disco en el directorio /mnt/discoduro escribiremos: | ||
+ | mount /dev/sdb /mnt/discoduro | ||
+ | El directorio /mnt/discoduro debe existir y estar vacío. Si tiene datos, no estarán disponibles hasta que no se desmonte la unidad, aunque no se perderán. | ||
+ | Para desmontar el disco usaremos la instrucción umount: | ||
+ | umount [dispositivo] | ||
+ | Evidentemente, el disco duro principal sda siempre estará montado, generalmente con varias particiones (sda1, sda2, sda3) . Por otra parte, cuando estemos trabajando con servidores remotos, normalmente no necesitaremos montar ni desmontar unidades. | ||
+ | |||
+ | |||
+ | == El interprete de comandos == | ||
+ | === El intérprete de comandos es programable === | ||
+ | Una característica esencial del intérprete de comandos es que no sólo lee e interpreta las órdenes del usuario, sino que también es un lenguaje de programación bastante sencillo de utilizar. Los programas pueden ser tan sencillos cómo un sólo comando con algunas opciones o contener conjuntos de comandos y sentencias de programación del intérprete. | ||
+ | |||
+ | === Los programas están diseñados para colaborar === | ||
+ | Una idea básica que distingue Linux de otros sistemas operativos es que los programas son herramientas, y como tales, deben tener una función específica pero han de poder usarse para diferentes propósitos. Tres características son necesarias para conseguir esto: | ||
+ | • Los resultados de un programa deben poder usarse como datos de entrada para otros. | ||
+ | • Los programas deben estar preparados para trabajar en modo no interactivo, de forma que todas las opciones y datos que necesitan les puedan venir a través de un fichero. | ||
+ | • Por defecto, los programas deben leer la entrada estándar (el teclado) y mostrar los resultados en la salida estándar (la pantalla). | ||
+ | Cuando los programas pueden usarse de esta forma, es posible indicarle al intérprete que deseamos encadenarlos secuencialmente de forma que la salida de cada uno de ellos constituye la entrada para el siguiente. | ||
+ | |||
+ | === Complejidad a la carta === | ||
+ | La filosofía de Linux es proporcionar una gran cantidad de utilidades que realizan tareas simples de forma que el usuario básico pueda desenvolverse con comodidad, Pero al mismo tiempo, a través de la combinación de comandos y las capacidades de programación del intérprete, proporciona la posibilidad de crear nuevos comandos más complejos para los usuarios que así lo requieran. | ||
+ | |||
+ | === El modo consola === | ||
+ | Originalmente la interacción con el intérprete de comandos se realizaba a través de lo que se denominaban consolas (conjunto de teclado y pantalla) introduciendo órdenes en un entorno sin visualización gráfica, únicamente de texto. El intérprete muestra un indicador (prompt) en lalínea de comandos para mostrar al usuario que puede introducir una orden. El formato del prompt es muy flexible, pudiendo mostrar información como el nombre del usuario conectado o el directorio actual, por ejemplo. | ||
+ | Actualmente, entornos como XWindow proporcionan interfaces gráficas que evitan muchas de las complejidades de la interacción a través de la consola. Sin embargo, existen todavía comandos (sobre todo de administración del sistema) que no están completamente soportados por aplicaciones gráficas y se hace necesario la interacción a través de lo que denominaremos modo consola o texto en contraste con el modo gráfico. | ||
+ | Sin embargo, en el mantenimiento remoto de servidores Linux, suele ser habitual usar el modo consola. Es conveniente, pues, estar familiarizado con su uso si vamos a tener que trabajar con servidores remotos. | ||
+ | Cuando tengamos que introducir órdenes, debemos tener en cuenta que los intérpretes de comandos de Linux distinguen mayúsculas y minúsculas. | ||
+ | |||
+ | === Variables de entorno === | ||
+ | Muchas utilidades de Linux, incluyendo el intérprete de comandos, necesitan información sobre el usuario y sus preferencias. Este tipo de información se almacena en las variables de entorno, que son gestionadas por el intérprete de forma que son accesibles a los programas que las necesitan. | ||
+ | Aunque es posible definirlas, existe una serie de variables de entorno predefinidas como por ejemplo las siguientes: | ||
+ | • PATH: Contiene la lista de directorios donde el intérprete buscará los comandos que el usuario pida ejecutar. | ||
+ | • HOME: Contiene la ruta absoluta hasta el directorio personal del usuario. | ||
+ | • PS1: Contiene la definición del prompt principal que muestra el intérprete en modo texto. | ||
Revisión del 13:09 23 feb 2015
Contenido
Introducción
Wiki de la asignatura Seguridad y Calidad en Servidores Web del Grado de Multimedia de la Universitat Oberta de Catalunya
En este wiki encontraréis las instrucciones básicas de Linux que necesitaréis para poder hacer la práctica de la asignatura.
GNU/Linux
GNU/Linux (aunque habitualmente suele conocerse como Linux) es un sistema operativo (SO) libre. Nació a partir del núcleo Linux creado en 1991 por Linus Torvalds. El núcleo (Linux) junto con el resto de aplicaciones que componen un sistema operativo (creadas en el proyecto GNU) es lo que habitualmente conocemos como GNU/Linux o, simplemente, Linux. Actualmente es ampliamente utilizado como servidor web, entre otras cosas por que puede instalarse en diferentes máquinas, es estable y libre. Así, Facebook, Gmail, LinkedIn o Yahoo utilizan servidores GNU/Linux, lo cual puede dar una idea de la importancia de este SO. Prácticamente todas las empresas de alojamiento web (hosting en inglés) ofrecen planes de alojamiento basados en Linux. También para grandes empresas pueden crearse redes de servidores funcionando con GNU/Linux. Para simplificar, a partir de este momento, nos referiremos a GNU/Linux como Linux, aunque conviene no olvidar que Linux es tan solo el núcleo del sistema.
El sistema operativo
La función de cualquier sistema operativo (SO) es proporcionar una interfaz para utilizar las prestaciones del hardware de un ordenador. Los programadores acceden a estas prestaciones a través del SO y pueden diseñar aplicaciones de propósito específico para usuarios finales. Éstos, a su vez, utilizan el SO para poder ejecutar dichas aplicaciones. Linux pertenece a la familia de sistemas denominada Unix y su filosofía está heredada de este tipo de sistemas. En lo que sigue, cuando definamos muchas de las características, funcionamiento e incluso comandos de Linux, podemos asumir que se puede aplicar a prácticamente cualquier sistema Unix con mínimos cambios. Así por ejemplo, ya podemos decir que Linux es un sistema multiusuario y multitarea, es decir, permite a varios usuarios trabajar simultáneamente y ejecutar diversas aplicaciones a la vez. Estas características determinan de forma importante el funcionamiento del sistema, el cual debe garantizar que toda esta carga de trabajo simultánea se lleve a cabo de forma segura y eficiente. Linux está organizado por capas. La capa más profunda corresponde al hardware, que proporciona una serie de servicios (proceso, gestión de ficheros, impresión, etc.). La única capa que interactúa directamente con el hardware es el núcleo (kernel). De esta manera, los programas no necesitan saber nada sobre el hardware y sólo se comunican con el núcleo. Una de las ventajas de esta estructura es que la mayoría de programas son independientes del hardware y pueden portarse de un modelo de ordenador a otro. Las aplicaciones que funcionan sobre el núcleo constituyen el último nivel y el único visible para los usuarios. Algunas de estas aplicaciones son utilidades básicas para la gestión de la información y la ejecución de programas y ya vienen con el sistema operativo, por lo que es habitual hablar de Linux refiriéndonos no sólo al núcleo, sino también a dicho conjunto de utilidades, desarrolladas por el proyecto GNU.
¿Quién me escucha?
Una de las ideas fundamentales de Linux que deriva de la estructura de capas es que los usuarios no ‘hablan’ directamente con el sistema, sino que lo hacen a través de una aplicación denominada intérprete de comandos (shell). Esta aplicación está constantemente ‘escuchando’ todo lo que el usuario teclea e interpreta (a partir de unas ciertas reglas sintácticas) sus peticiones. El intérprete de comandos dispone de una serie de comandos internos que él mismo ejecuta, pero, asimismo, puede ejecutar otros comandos externos, pasándoles las opciones que el usuario ha especificado. En la imagen vemos el comando cat que permite visualizar el contenido de un fichero especificado por el usuario. Algunos comandos ejecutan aplicaciones que proporcionan sus propia interfaz y conjuntos de órdenes para interactúar con los usuarios, como el editor de textos vi.
El sistema de archivos
Un sistema multiusuario necesita una forma de permitir a los usuarios tener distintos ficheros con el mismo nombre. También debe permitirles organizar los ficheros en grupos lógicos. La mayoría de sistemas operativos resuelven estas cuestiones proporcionando un sistema de ficheros jerárquico. En un sistema de este tipo los ficheros se organizan en directorios, que no son otra cosa que un tipo especial de fichero que agrupa a otros. Puesto que un directorio puede contener también otros directorios, la estructura del sistema de ficheros se asemeja a un árbol.
Como se puede observar en la figura, hay un directorio en la parte superior del árbol con un nombre especial (‘/’) y llamado directorio raíz(root).
Organización del sistema de ficheros
Siguiendo las convenciones habituales en Unix, el sistema de ficheros de Linux se organiza en una serie de directorios estándar de propósito específico. Algunos de los más importantes son los siguientes: /dev Contiene ficheros representando los dispositivos físicos del ordenador. /etc Está reservado para ficheros de configuración del sistema. /lib Contiene las librerías necesarias para ejecutar los programas que residen en /bin. /proc Contiene ficheros especiales que reciben información del núcleo. /sbin Contiene programas que sólo son accesibles para el usuario ‘root’ /usr Contiene los programas de uso común para todos los usuarios y presenta una estructura con directorios /etc, /bin o /lib propios para dichos programas /var Contiene información temporal sobre la ejecución de algunos programas. /home Contiene los directorios personales de los usuarios del sistema.
El directorio personal
A diferencia de otros sistemas operativos donde tras inicializar el ordenador el usuario accede por defecto al directorio raíz, en Linux cada usuario lo hace a un directorio personal (home directory) ubicado en algún lugar de la jerarquía de directorios del sistema. A menudo los directorios personales están ubicados debajo del directorio /home.
Directorios especiales
Existe una notación especial para hacer referencia a dos directorios en particular, el directorio actual y el directorio inmediatamente superior al mismo. El primero, se representa mediante un punto(.), mientras que el segundo se indica mediante dos puntos (..)
Rutas absolutas y relativas
Una ruta es el “nombre completo” de un fichero que incluye no sólo su nombre, sino su situación en la jerarquía, separando cada directorio mediante una barra (/). Por defecto, el intérprete asume que los comandos introducidos y los nombres de ficheros y directorios a los que se hace referencia poseen una ruta relativa al directorio actual. Al conectarnos por primera vez, el directorio actual es el directorio personal. Supongamos que acabamos de hacerlo y que es /home/luis. Si escribimos una orden como lista-ficheros-graficos, el intérprete asumirá que la ruta completa del fichero es /home/luis/lista-ficheros-graficos. La idea es que no es necesario indicar toda la ruta, sino sólo el desplazamiento necesario teniendo en cuenta el punto del sistema de ficheros donde estamos situados. También podemos indicar ficheros situados más arriba en la jerarquía. Por ejemplo, si escribimos la orden anterior como ../../bin/lista-ficheros-gráficos, el intérprete buscará el comando dos niveles por encima y luego bajará a bin. En algunas ocasiones puede ser más conveniente o fácil indicar un nombre completo utilizando una ruta absoluta. Este tipo de rutas comienza siempre por una barra (/) para indicar que la ruta comienza a definirse desde el directorio raíz, independientemente de cuál sea nuestro directorio actual. En el último de los ejemplos anteriores, podríamos especificar la situación del comando como /bin/lista-ficheros-gráficos.
Montaje de unidades de disco
En Linux, a diferencia de otros sistemas, las unidades no se representan con letras (por ejemplo, ‘C:’) sino que se ubican en algún punto de la jerarquía de directorios. La acción de vincular un directorio de la jerarquía a una unidad de disco se denomina montar la unidad. Si añadimos unidades de disco a nuestro sistema, deberemos montarlas para poder usarlas. Sea un disco duro, un CD, o una unidad USB la instrucción a usar será siempre la misma: mount [dispositivo] [punto_de_montaje] Donde dispositivo es el disco que queremos montar y punto_de_montajeel directorio donde queremos montarlo. Los discos duros los encontraremos en /dev/sdXN dónde la X representa el disco (el primero será a, el segundo b, etc.) y N será el número de la partición (en caso de que el disco esté particionado). Así, para montar un segundo disco en el directorio /mnt/discoduro escribiremos: mount /dev/sdb /mnt/discoduro El directorio /mnt/discoduro debe existir y estar vacío. Si tiene datos, no estarán disponibles hasta que no se desmonte la unidad, aunque no se perderán. Para desmontar el disco usaremos la instrucción umount: umount [dispositivo] Evidentemente, el disco duro principal sda siempre estará montado, generalmente con varias particiones (sda1, sda2, sda3) . Por otra parte, cuando estemos trabajando con servidores remotos, normalmente no necesitaremos montar ni desmontar unidades.
El interprete de comandos
El intérprete de comandos es programable
Una característica esencial del intérprete de comandos es que no sólo lee e interpreta las órdenes del usuario, sino que también es un lenguaje de programación bastante sencillo de utilizar. Los programas pueden ser tan sencillos cómo un sólo comando con algunas opciones o contener conjuntos de comandos y sentencias de programación del intérprete.
Los programas están diseñados para colaborar
Una idea básica que distingue Linux de otros sistemas operativos es que los programas son herramientas, y como tales, deben tener una función específica pero han de poder usarse para diferentes propósitos. Tres características son necesarias para conseguir esto: • Los resultados de un programa deben poder usarse como datos de entrada para otros. • Los programas deben estar preparados para trabajar en modo no interactivo, de forma que todas las opciones y datos que necesitan les puedan venir a través de un fichero. • Por defecto, los programas deben leer la entrada estándar (el teclado) y mostrar los resultados en la salida estándar (la pantalla). Cuando los programas pueden usarse de esta forma, es posible indicarle al intérprete que deseamos encadenarlos secuencialmente de forma que la salida de cada uno de ellos constituye la entrada para el siguiente.
Complejidad a la carta
La filosofía de Linux es proporcionar una gran cantidad de utilidades que realizan tareas simples de forma que el usuario básico pueda desenvolverse con comodidad, Pero al mismo tiempo, a través de la combinación de comandos y las capacidades de programación del intérprete, proporciona la posibilidad de crear nuevos comandos más complejos para los usuarios que así lo requieran.
El modo consola
Originalmente la interacción con el intérprete de comandos se realizaba a través de lo que se denominaban consolas (conjunto de teclado y pantalla) introduciendo órdenes en un entorno sin visualización gráfica, únicamente de texto. El intérprete muestra un indicador (prompt) en lalínea de comandos para mostrar al usuario que puede introducir una orden. El formato del prompt es muy flexible, pudiendo mostrar información como el nombre del usuario conectado o el directorio actual, por ejemplo. Actualmente, entornos como XWindow proporcionan interfaces gráficas que evitan muchas de las complejidades de la interacción a través de la consola. Sin embargo, existen todavía comandos (sobre todo de administración del sistema) que no están completamente soportados por aplicaciones gráficas y se hace necesario la interacción a través de lo que denominaremos modo consola o texto en contraste con el modo gráfico. Sin embargo, en el mantenimiento remoto de servidores Linux, suele ser habitual usar el modo consola. Es conveniente, pues, estar familiarizado con su uso si vamos a tener que trabajar con servidores remotos. Cuando tengamos que introducir órdenes, debemos tener en cuenta que los intérpretes de comandos de Linux distinguen mayúsculas y minúsculas.
Variables de entorno
Muchas utilidades de Linux, incluyendo el intérprete de comandos, necesitan información sobre el usuario y sus preferencias. Este tipo de información se almacena en las variables de entorno, que son gestionadas por el intérprete de forma que son accesibles a los programas que las necesitan. Aunque es posible definirlas, existe una serie de variables de entorno predefinidas como por ejemplo las siguientes: • PATH: Contiene la lista de directorios donde el intérprete buscará los comandos que el usuario pida ejecutar. • HOME: Contiene la ruta absoluta hasta el directorio personal del usuario. • PS1: Contiene la definición del prompt principal que muestra el intérprete en modo texto.
La práctica de esta asignatura la vamos a hacer en máquinas virtuales del servicio ec2 de Amazon. Este servicio ofrece mucha flexibilidad a la hora de crear nuevos proyectos web, pues permite ampliar el número de máquinas conforme se van necesitando.
Como vamos a hacer un uso de las máquinas un poco especial (puesto que no las vamos a poner en producción), el funcionamiento será un poco especial, aunque nada complicado, el proceso será el siguiente:
- Antes de conectarnos a nuestra máquina deberemos ponerla en marcha a través del enlace correspondiente del aula. Es importante volver a pararla una vez dejemos de usarla.
- Una vez aparezca como funcionando copiaremos su dirección IP (cambia cada vez que se arranca) y ya podremos conectarnos a ella. Para hacerlos tenemos dos opciones dependiendo del sistema operativo que usemos.
- En Linux o Mac, basta con abrir una ventana del terminal y poner ssh user@xxx.xxx.xxx.xxx (Deberéis sustituir las x por los números que aparezcan en la IP).
- En Windows la opción mejor es bajarse la aplicación PuTTy. No necesita instalación y es muy fácil de usar.
- Se os pedirá una contraseña. La habréis recibido por correo. Es obligatorio cambiar esa contraseña la primera vez que se accede a la máquina.
Como veréis, vamos a trabajar con la línea de comandos, con lo que será necesario que conozcáis al menos los comandos que deberéis usar durante el desarrollo de la práctica.
Algunas ideas básicas
- Los archivos en Linux, igual que en otros sistemas operativos, se organizan en un árbol de directorios (o carpetas) a partir de una raíz. En Linux el directorio raíz es / (en Windows es \)
- El camino o ruta (path) es la dirección del directorio donde se encuentra un archivo. Así, un archivo (con nombre nombre_archivo) que esté en el directorio A, que a su vez está en el directorio B, que a su vez está en el directorio raíz, estará en la ruta /B/A/ y nos referiremos a él como /B/A/nombre_archivo
- En Linux mayúsculas y minúsculas se tratan como letras diferentes. Es importante usarlas correctamente.
- Si alguna vez listamos algo que no cabe en la pantalla, podemos redireccionarlo (con | ) hacia el comando less para que nos permita subir y bajar por el contenido. Por ejemplo: ls -la | less (la barra la encontraréis en vuestro teclado en la tecla 1)
Enlaces a materiales de referencia
- Administración de sistemas GNU/Linux - Guía de lectura
- Administración avanzada del sistema operativo GNU/Linux - Guía de lectura
Os pedirá el primer apellido y el DNI (20+DNI) para poder acceder. Es posible que la primera vez no os permita bajar correctamente el archivo que queráis, volver a atrás y volver a entrar soluciona el problema...
Comandos básicos de Linux
- Lista de archivos de un directorio ls
- Cambiar de directorio cd
- Crear un nuevo directorio mkdir
- Borrar un directorio rmdir
- Copiar achivos o directorios cp
- Borrar archivos rm
- Mover y renombrar archivos o directorios mv
- Visualizar archivos de texto less
- El editor vi
- Listado de comandos básicos de Linux
Instalando aplicaciones en CentOS
- Instalar MySQL+Apache+PHP5
- Configuración de Apache
- Configuración de MySQL
- Navegador modo texto links. Facilita el acceder a las páginas web desde las que tenemos que bajar archivos.