martes, 27 de septiembre de 2016


Comandos Básicos de Linux

Cat
Cat (de concatenar), es una maravillosa utilidad que nos permite visualizar el contenido de un archivo de texto sin la necesidad de un editor. Para utilizarlo solo debemos mencionarlo junto al archivo que deseamos visualizar:

$ cat prueba.txt

Ls
Ls (de listar), permite listar el contenido de un directorio o fichero. La sintaxis es:

$ ls /home/directorio

 El comando ls tiene varias opciones que permiten organizar la salida, lo que resulta particularmente útil cuando es muy grande. Por ejemplo, puedes usar -a para mostrar los archivos ocultos y -l para mostrar los usuarios, permisos y la fecha de los archivos. Así como para todos los comandos Linux, estas opciones pueden combinarse, terminando en algo como:

$ ls -la /home/directorio

Cd
Cd (de change directory o cambiar directorio), es como su nombre lo indica el comando que necesitarás para acceder a una ruta distinta de la que te encuentras. Por ejemplo, si estas en el directorio /home y deseas acceder a /home/ejercicios, seria:

$ cd /home/ejercicios

 Si estás en /home/ejercicios y deseas subir un nivel (es decir ir al directorio /home), ejecutas:

$ cd ..

Comandos para crear Archivos
Touch, Nano y Gedit

Touch crea un archivo vacío, si el archivo existe actualiza la hora de modificación. Para crear el archivo prueba1.txt en /home, seria:

$ touch /home/prueba1.txt
$ nano  /home/prueba1.txt
$ gedit  /home/prueba1.txt

Mkdir
Mkdir (de make directory o crear directorio), crea un directorio nuevo tomando en cuenta la ubicación actual. Por ejemplo, si estas en /home y deseas crear el directorio ejercicios, sería:

$ mkdir /home/ejercicios

 
Mkdir tiene una opción bastante útil que permite crear un árbol de directorios completo que no existe. Para eso usamos la opción -p:

$ mkdir -p /home/ejercicios/prueba/uno/dos/tres

Cp

Cp (de copy o copiar), copia un archivo o directorio origen a un archivo o directorio destino. Por ejemplo, para copiar el archivo prueba.txt ubicado en /home a un directorio de respaldo, podemos usar:

$ cp /home/prueba.txt /home/respaldo/prueba.txt


En la sintaxis siempre se especifica primero el origen y luego el destino. Si indicamos un nombre de destino diferente, cp copiará el archivo o directorio con el nuevo nombre.

El comando también cuenta con la opción -r que copia no sólo el directorio especificado sino todos sus directorios internos de forma recursiva. Suponiendo que deseamos hacer una copia del directorio /home/ejercicios que a su vez tiene las carpetas ejercicio1 y ejercicio2 en su interior, en lugar de ejecutar un comando para cada carpeta, ejecutamos:

$ cp -r /home/ejercicios /home/respaldos/

Mv

Mv (de move o mover), mueve un archivo a una ruta específica, y a diferencia de cp, lo elimina del origen finalizada la operación. Por ejemplo:

$ mv /home/prueba.txt /home/respaldos/prueba2.txt



Al igual que cp, en la sintaxis se especifica primero el origen y luego el destino. Si indicamos un nombre de destino diferente, mv moverá el archivo o directorio con el nuevo nombre.

Rm

Rm (de remove o remover), es el comando necesario para borrar un archivo o directorio. Para borrar el archivo prueba.txt ubicado en /home, ejecutamos:

$ rm /home/prueba.txt


Este comando también presenta varias opciones. La opción -r borra todos los archivos y directorios de forma recursiva. Por otra parte, -f borra todo sin pedir confirmación. Estas opciones pueden combinarse causando un borrado recursivo y sin confirmación del directorio que se especifique. Para realizar esto en el directorio respaldos ubicado en el /home, usamos:

$ rm -fr /home/respaldos


Este comando es muy peligroso, por lo tanto es importante que nos documentemos bien acerca de los efectos de estas opciones en nuestro sistema para así evitar consecuencias nefastas.

Pwd

Pwd (de print working directory o imprimir directorio de trabajo), es un conveniente comando que imprime nuestra ruta o ubicación al momento de ejecutarlo, así evitamos perdernos si estamos trabajando con múltiples directorios y carpetas. Su sintaxis seria:

$ pwd

Clear

Clear (de limpiar), es un sencillo comando que limpiara nuestra terminal por completo dejándola como recién abierta. Para ello ejecutamos:

$ clear

jueves, 22 de septiembre de 2016

 Clase Nº 3
Clase Teórica de Linux Server:

Entrar al terminal como superusuario


El terminal le mostrará el prompt (lugar para escribir comandos) con un pequeño cuadrito, del tamaño de una letra, titilante, luego de un texto similar a


user@user-desktop:~$

Escriba allí sudo -s como se ilustra a continuación.

user@user-desktop:~$sudo -s

Aparecerá la segunda línea solicitándole que escriba su password.

[sudo] password for user:

Escribalo (NO LO VERÁ y parecerá que no está escribiendo, no notará haber escrito algo; cuando termine de escribir su password pulse la tecla de retorno (enter o nueva línea) Si escribió mal recibirá un "mensaje de regaño" que le indica que ese no es su password. Repita la tarea y escriba bien el password. Cuando el terminal verifique su password mostrará nuevamente el prompt (tercera línea) con un ligero cambio:

root@user-desktop:~#

que le indica que se ha loggeado como superusuario. Y le confiere derechos para hacer los cambios y asignaciones deseados.

Asignar / cambiar el password de root

En el prompt escriba la orden: sudo passwd root así:

root@user-desktop:~#sudo passwd root

Recibirá un mensaje solicitándole escribir la contraseña, con una imagen titilante a su derecha

introduzca la nueva contraseña de UNIX:

Escriba la nueva sin dudar. Ocurre igual que en el momento en que escribió su contraseña. Cuando pulse la tecla de retorno (enter) el terminal le pedirá que la confirme:

Vuelva a escribir la nueva contraseña de UNIX:

Si la escribió correctamente (si las dos entradas coinciden), recibirá un mensaje de confirmación:

passwd: contraseña actualizada correctamente

y bajo ella aparecerá nuevamente el prompt a la espera de otras órdenes:

root@user-desktop:~#

Cerrar la sesión en el terminal

Antes de cerrar el terminal debe terminar la sesión del superusuario. (Es una costumbre sana cerrar las sesiones antes de abandonar las ventanas). Escriba exit en el prompt

root@user-desktop:~$exit

Volverá a aparecer el prompt del usuario activo

user@user-desktop:~$

Cierre el terminal. La tarea ha sido satisfactoria. Ahora podrá tener acceso a los directorios importantes para instalar y ejecutar software y realizar los cambios que necesite. 
 Trabajo investigativo de Linux Ubuntu
  1. Defina el comando su de Linux
  2. Defina el comando sudo de Linux
  3. Cual es la diferencia entre el comando su y sudo de Linux
  4. Defina el comando root de Linux
  5. Mencione los comandos para Crear Usuarios y Grupos en Linux
    1. Crear Usuario
    2. Crear Grupos
    3. Modificar Usuario
    4. Modificar Grupo
    5. Eliminar Usuario
    6. Añadir Usuarios al Grupo
    7. Eliminar Grupos
  6. Mencione y Defina cada Tipo de Permisos en Linux Ubuntu
  7. Defina que es un DNSmasq
  8. Escriba la Sintaxis de Comando para instalar un dnsmasq
  9. Escriba la Sintaxis de Comando para el arranque de  dnsmasq
  10. Escriba la Sintaxis de Comando para detener  dnsmasq

lunes, 19 de septiembre de 2016


Clase N° 2
 

Componentes de Linux

Linux se puede dividir generalmente en cuatro componentes principales: el núcleo(kernel), el shell, el sistema de archivos y las utilidades.
  1. El núcleo: es el programa medular que ejecuta programas y gestiona dispositivos de hardware tales como los discos y las impresoras.
  2. El shell: proporciona una interfaz para el usuario. Recibe órdenes del usuario y las envía al núcleo para ser ejecutadas.
  3. El sistema de archivos: organiza la forma en que se almacenan los archivos en dispositivos de almacenamiento tales como los discos. Los archivos están organizados en directorios. Cada directorio puede contener un número cualquiera de subdirectorios, cada uno de los cuales puede a su vez, contener otros archivos.
  4. Las utilidades: son programas especializados, tales como editores, compiladores y programas de comunicaciones, que realizan operaciones de computación estándar. Incluso uno mismo puede crear sus propias utilidades.
Distribuciones Linux
Una distribución Linux o distribución GNU/Linux (coloquialmente llamadas distros) es una distribución de software basada en el núcleo Linux que incluye determinados paquetes de software para satisfacer las necesidades de un grupo específico de usuarios, dando así origen a ediciones domésticas, empresariales y para servidores. Por lo general están compuestas, total o mayoritariamente, de software libre, aunque a menudo incorporan aplicaciones o controladores propietarios.
 
En general, las distribuciones Linux pueden ser:
  • Comerciales o no comerciales.
  • Ser completamente libres o incluir software privativo.
  • Diseñadas para uso en el hogar o en las empresas.
  • Diseñadas para servidores, escritorios o dispositivos empotrados.
  • Orientadas a usuarios regulares o usuarios avanzados.
  • De uso general o para dispositivos altamente especializados, como un cortafuegos, un enrutador o un clúster computacional.
  • Diseñadas e incluso certificadas para un hardware o arquitectura específicos.
  • Orientadas hacia grupos en específico, por ejemplo a través de la internacionalización y localización del lenguaje, o por la inclusión de varios paquetes para la producción musical o para computación científica.
  • Configuradas especialmente para ser más seguras, completas, portables o fáciles de usar.
  • Soportadas bajo distintos tipos de hardware.
La diversidad de las distribuciones Linux es debido a cuestiones técnicas, de organización y de puntos de vista diferentes entre usuarios y proveedores. El modo de licenciamiento del software libre permite que cualquier usuario con los conocimientos e interés suficiente pueda adaptar o diseñar una distribución de acuerdo a sus necesidades.
La gran popularidad de Linux incluye los siguientes puntos:
  • Se distribuye su código fuente, lo cual permite a cualquier persona que así lo desee hacer todos los cambios necesarios para resolver problemas que se puedan presentar, así como también agregar funcionalidad. El único requisito que esto conlleva es poner los cambios realizados a disposición del público.
  • Es desarrollado en forma abierta por cientos de usuarios distribuidos por todo el mundo, los cuales la red Internet como medio de comunicación y colaboración. Esto permite un rápido y eficiente ciclo de desarrollo.
  • Cuenta con un amplio y robusto soporte para comunicaciones y redes, lo cual hace que sea una opción atractiva tanto para empresas como para usuarios individuales.
  • Da soporte a una amplia variedad de hardware y se puede correr en una multitud de plataformas: PC's convencionales, computadoras Macintosh y Amiga, así como costosas estaciones de trabajo.
  Distribución de Linux
 
CentOS (Community  ENTerprise Operating System) es un clon a nivel binario de la distribución  RedHat Enterprise Linux, compilado por voluntarios a partir del código fuente  liberado  por Red Hat. Los desarrolladores de CentOS usan ese código fuente  para  crear  un producto final que es muy similar al Red Hat Enterprise Linux y está libremente disponible para  ser bajado y usado por el público.
Red Hat es una empresa dedicada al software libre, y además es un importante proveedor, distribuidor y promotor  de Linux. Red Hat fue fundada en 1995 y tiene su sede en Raleigh,  Carolina del Norte con oficinas en todo el mundo.
Fedora es una distribución  Linux patrocinada oficialmente por Red Hat. El Proyecto Fedora Linux desarrollaba paquetes extra para  viejas distribuciones de Red Hat Linux (RHL 8, RHL 9, FC 1, FC2), antes de convertirse en parte  del Proyecto Fedora. Cuando la distribución  Red Hat Linux quedó entre  Red Hat Enterprise Linux y el Proyecto Fedora existente, los usuarios domésticos y de pequeñas empresas tuvieron incertidumbre acerca de qué hacer; Red Hat Professional Workstation se creó en este mismo momento con la intención  de llenar el nicho que  Red Hat Linux había ocupado una vez, pero con un futuro incierto.
Debian  es una comunidad conformada por desarrolladores y usuarios, que pretende crear  y mantener un sistema operativo GNU basado en software libre pre compilado y empaquetado, en un formato sencillo para  múltiples arquitecturas y en varios
Ubuntu es una distribución  Linux que ofrece  un sistema operativo enfocado a computadoras de escritorio  aunque también proporciona soporte para  servidores. Es una de las más importantes distribuciones de GNU/Linux a nivel mundial.
OpenSuse es el nombre de la distribución  y proyecto libre auspiciado por Novell y AMD para  el desarrollo y mantenimiento de un sistema operativo basado en Linux. Luego de adquirir SUSE  Linux en enero de 2004,  Novell decidió  lanzar  SUSE  Linux Professional como un proyecto completamente de código abierto,  involucrando a la comunidad en el proceso de desarrollo. La versión  inicial fue una versión  beta  de SUSE  Linux 10.0
 
Otras distribuciones se especializan en grupos específicos:

Guía de trabajo No 2
  1. Averiguar sobre la cuenta root o administrador
  2. Averiguar sobre el comando APT-GET
 Clases Teóricas de Linux
 Clase Nº1
INTRODUCCION A LINUX

Linux es una de las tantas variantes de Unix. Se trata de un sistema operativo de libre distribución, desarrollado originalmente por Linus Torvalds, un estudiante de la universidad finlandesa de Helsinki, quien, en 1991, se abocó a la tarea de reemplazar a Minix, un clon de Unix de pequeñas proporciones y finalidad académica desarrollado años antes por Andrew Tannenbaun.

A medida que avanzaba en su desarrollo, Linux fue dejando el código fuente de las sucesivas versiones del kernel y utilidades de Linux a disponibilidad de los usuarios de Internet. Este fue sin duda un gran acierto, ya que hizo posible que una multitud de desarrolladores de todo el mundo se familiarizaran con el código, lo cual en primera instancia significó un gran aporte de sugerencias, evolucionado luego hacia un espectacular ejemplo de desarrollo distribuido de software: centenares de desarrolladores independientes, desde diferentes puntos del planeta tomaron a su cargo la producción de software para Linux, ya sea escribiéndolo desde cero o portándolo desde otras plataformas Unix. Esta modalidad de desarrollo continúa aún hoy y ha permitido a Linux alcanzar un alto nivel de desarrollo y madurez, así como también un amplio grado de aceptación.

Actualmente, Linux posee todas las características que pueden encontrarse en cualquier sistema Unix moderno, incluyendo memoria virtual, multitarea real, shared libraries, módulos de kernel cargables on-demand, soporte TCP/IP (incluyendo SLIP, PPP, NFS, etc.), y entorno gráfico X-Windows.

Linux es distribuido bajo la Licencia General Pública (GNU), lo cual significa que puede ser distribuido, copiado y modificado gratuitamente, a condición de no imponer ninguna restricción en sucesivas distribuciones. En pocas palabras: Linux es un sistema operativo gratuito.


LINUX hace su aparición a principios de la década de los noventa, era el año 1991 y por aquel entonces un estudiante de informática de la Universidad de Helsinki, llamado Linus Torvaldsempezó -como una afición y sin poderse imaginar a lo que llegaría este proyecto- a programar las primeras líneas de código de este sistema operativo llamado LINUX.

Este comienzo estuvo inspirado en MINIX, un pequeño sistema Unix desarrollado por Andy Tanenbaum. Las primeras discusiones sobre Linux fueron en el grupode noticias comp.os.minix, en estas discusiones se hablaba sobre todo del desarrollo de un pequeño sistema Unix para usuarios de Minix que querían más.

Linus Benedict Torvalds
Nació en Helsinki, Finlándia, el año 1969. Empezó a "trabajar" con ordenadores a los 10 años, cuando su abuelo le compró un Comodore el año 1980. Éste buen señor era un matemático y estadista. Trabajaba en la Universidad y fue quién "enganchó" al mundo de los computadores a nuestro buen amigo Linus.

Con el paso del tiempo, Linus pasó a tener un Sinclair QL, un gran ordenador de Clive Sinclair (creador del conocido Spectrum), que tenía algún pequeño error de diseño. Linus se sintió especialmente atraído por esta máquina, después de crear aplicaciones para ésta computadora y de haber retocado su hardware con la finalidad de adaptarlo a sus necesidades. El problema que tenía dicha máquina era que los recursos eran insuficientes para poderllevar a la práctica los planes de Linus. Además, no era un equipo compatible. Así pues, el mes de enero de 1991 compró su primer PC, un 386.

Retrocedamos otra vez en el tiempo, hasta 1988. Éste año fue cuando Linus entró a la Universidad. Este mismo año fue cuando un sistema operativo didáctico, basado en Unix y creado por Andy Tannenbaum, empezó a cobrar importancia. Dicho sistema operativo era el famoso Minix.

Linus entró a formar parte de la comunidad de usuarios de Minix. Tannenbaum cometió un error en su sistema operativo. Era demasiado limitado, tanto técnicamente como políticamente, es decir, en ningún momento tuvo en cuenta la posibilidad de incluir Minix al proyecto GNU (creado el año 1983 por Richard Stallman). En realidad, la creación de Andy Tannenbaum estaba pensada para ser distribuida comercialmente. Su principal error fue ceder todos los derechos a Prentice Hall, que empezó a cobrar 150 dólares por licencia.

Así pues, Linus tomó la decisión de cambiar esta política debido a que el sistema Minix era ideal para los estudiantes de sistemas operativos, y su precio era considerablemente alto. Llegamos de nuevo al año 1991, cuando Linus se acabó de comprar su primer 386. En aquellos momentos, la intención de nuestro amigo era clara: crear un nuevo Kernel de UNIX basado en el Kernel de Minix y modificarlo periódicamente de manera que fuera capaz de ejecutar aplicaciones GNU.

Características De Linux
  • Multitarea: La multitarea no consiste en hacer que el procesador realice más de un trabajo al mismo tiempo (un solo procesador no tiene esa capacidad), lo único que realiza es presentar las tareas de forma intercalada para que se ejecuten varias simultáneamente. Por lo tanto en Linux es posible ejecutar varios programas a la vez sin necesidad de tener que parar la ejecución de cada aplicación.

LINUX utiliza la llamada multitarea preventiva, la cual asegura que todos los programas que se están utilizando en un momento dado serán ejecutados, siendo el sistema operativo el encargado de ceder tiempo de microprocesador a cada programa.
  • Multiusuario: Para que pueda desarrollar esta labor (de compartir los recursos de un ordenador) es necesario un sistema operativo que permita a varios usuarios acceder al mismo tiempo a través de terminales, y que distribuya los recursos disponibles entre todos. Así mismo, el sistema debería proporcionar la posibilidad de que más de un usuario pudiera trabajar con la misma versión de un mismo programa al mismo tiempo, y actualizar inmediatamente cualquier cambio que se produjese en la base de datos, quedando reflejado para todos.
  • Multiplataforma: Las plataformas en las que en un principio se puede utilizar Linux son 386-, 486-. Pentium, Pentium Pro, Pentium II,Amiga y Atari, también existen versiones para su utilización en otras plataformas, como Alpha, ARM,MIPS, PowerPC y SPARC.
  • Multiprocesador: Soporte para sistemas con más de un procesador está disponible para Intel y SPARC.
  • Funciona en modo protegido 386.
  • Protección de la memoria entre procesos, de manera que uno de ellos no pueda colgar el sistema.
  • Carga de ejecutables por demanda: Linux sólo lee del disco aquellas partes de un programa que están siendo usadas actualmente.
  • Política de copia en escritura para la compartición de páginas entre ejecutables: esto significa que varios procesos pueden usar la misma zona de memoria para ejecutarse. Cuando alguno intenta escribir en esa memoria, la página (4Kb de memoria) se copia a otro lugar. Esta política de copia en escritura tiene dos beneficios: aumenta la velocidad y reduce el uso de memoria.
  • Memoria virtual usando paginación (sin intercambio de procesos completos) a disco: A una partición o un archivo en el sistema de archivos, o ambos, con la posibilidad de añadir más áreas de intercambio sobre la marcha un total de 16 zonas de intercambio de 128Mb de tamaño máximo pueden ser usadas en un momento dado con un límite teórico de 2Gb para intercambio. Este límite se puede aumentar fácilmente con el cambio de unas cuantas líneas en el código fuente.
  • La memoria se gestiona como un recurso unificado para los programas de usuario y para el caché de disco, de tal forma que toda la memoria libre puede ser usada para caché y ésta puede a su vez ser reducida cuando se ejecuten grandes programas.
  • Librerías compartidas de carga dinámica (DLL's) y librerías estáticas.
  • Se realizan volcados de estado (core dumps) para posibilitar los análisis post-mortem, permitiendo el uso de depuradores sobre los programas no sólo en ejecución sino también tras abortar éstos por cualquier motivo.
  • Compatible con POSIX, System V y BSD a nivel fuente.
  • Emulación de iBCS2, casi completamente compatible con SCO, SVR3 y SVR4 a nivel binario.
  • Todo el código fuente está disponible, incluyendo el núcleo completo y todos los drivers, las herramientas de desarrollo y todos los programas de usuario; además todo ello se puede distribuir libremente. Hay algunos programas comerciales que están siendo ofrecidos para Linux actualmente sin código fuente, pero todo lo que ha sido gratuito sigue siendo gratuito.
  • Control de tareas POSIX.
  • Pseudo-terminales (pty's).
  • Emulación de 387 en el núcleo, de tal forma que los programas no tengan que hacer su propia emulación matemática. Cualquier máquina que ejecute Linux parecerá dotada de coprocesador matemático. Por supuesto, si el ordenador ya tiene una FPU (unidad de coma flotante), esta será usada en lugar de la emulación, pudiendo incluso compilar tu propio kernel sin la emulación matemática y conseguir un pequeño ahorro de memoria.
  • Soporte para muchos teclados nacionales o adaptados y es bastante fácil añadir nuevos dinámicamente.
  • Consolas virtuales múltiples: varias sesiones de login a través de la consola entre las que se puede cambiar con las combinaciones adecuadas de teclas (totalmente independiente del hardware de video). Se crean dinámicamente y puedes tener hasta 64.
  • Soporte para varios sistemas de archivo comunes, incluyendo minix-1, Xenix y todos los sistemas de archivo típicos de System V, y tiene un avanzado sistema de archivos propio con una capacidad de hasta 4 Tb y nombres de archivos de hasta 255 caracteres de longitud.
  • Acceso transparente a particiones MS-DOS (o a particiones OS/2 FAT) mediante un sistema de archivos especial: no es necesario ningún comando especial para usar la partición MS-DOS, esta parece un sistema de archivos normal de Unix (excepto por algunas restricciones en los nombres de archivo, permisos, y esas cosas).
  • Un sistema de archivos especial llamado UMSDOS que permite que Linux sea instalado en un sistema de archivos DOS.
  • Soporte en sólo lectura de HPFS-2 del OS/2 2.1
  • Sistema de archivos de CD-ROM que lee todos los formatos estándar de CD-ROM.
  • TCP/IP, incluyendo ftp, telnet, NFS, etc.
  • Appletalk.
  • Software cliente y servidor Netware.
  • Lan Manager / Windows Native (SMB), softwarecliente y servidor.
  • Diversos protocolos de red incluidos en el kernel: TCP, IPv4, IPv6, AX.25, X.25, IPX, DDP, Netrom, etc.



TRABAJO INVESTIGATIVO

  1. Que Motivo a Linus Tolvalds a desarrollar Linux?
  2. De las Características de Linux, ¿Cuál te llama más la atención o crees que es muy importante? ¿Por qué?
  3. Investigue más sobre las diferencias entre Linux y otros sistemas operativos de libre distribución como OpenBSD o FreeBSD.
  4. Que es la comunidad de software libre
  5. En qué consisten los movimientos de fuentes abiertas y de software libre, y cuál es su relación con Linux?