miércoles, 30 de noviembre de 2011

Archivos y Permisos


La definicion de archivo en linux expresa lo siguiente “Un archivo es una sucesion de bytes” punto.


Es decir que todo, en el universo de LINUXse puede representar como un archivo, desde la configuracion pasando los sockets, los objetos del kernel en /proc, etc.
Por todo ello el manejo y administración de archivos ocupa una gran parte de comandos y procesos internos. Recordar que la seguridad es un aspecto importantisimo del diseño del sistema operativo.

Permisos

Los permisos de un archivo se componen de tres grupo de tres caracteres.
Cada grupo esta formado por la combinacion de las letras “r”,”w”, “x” y el guión “-” siempre en el orden “rwx”. El guion indica la ausencia de la letra que reemplaza. El primer grupo indica los permisos del propietario del archivo, el segundo grupo indica los permisos del grupo al que pertenece el usuario propietario y el tercer grupo establece los permisos que el resto de los usuarios tienen sombre ese archivo.
Permiso
Archivo
Directorio
r
Lectura del contenido
Listado del contenido
w
Escritura y borrado
Creacion y borrado de archivos
x
Ejecucion
Acceso al directorio.


Usuarios y Grupos


Actualmente la mayoría de sistemas operativos son multiusuario y multitarea. Esto implica que más de un usuario puede trabajar en el sistema de forma simultánea a otros, ejecutando más de una tarea a al vez. Por este motivo es muy importante que el sistema operativo incorpore mecanismos para manipular y controlar correctamente los usuarios: el sistema de login, los programas que puede ejecutar cada uno, protección para los ficheros de los usuarios, etc.

Los sistemas basados en Unix organizan todo esto por usuarios y grupos; al entrar en el sistema debemos identificarnos con un login y una contraseña. El sistema de contraseñas es unidireccional. Esto quiere decir que nuestra contraseña encripta y luego se almacena. Para encriptarla se usa un algoritmo unidireccional, es decir, que a partir de la contraseña cifrada es imposible obtener la original. Por ello, para verificar nuestra cuando hacemos un login, se encripta la contraseña introducida y se comparan las contraseñas encriptadas.1
Si un usuario es un individuo particular que puede entrar en el sistema, un grupo es un conjunto de usuarios con acceso al sistema que comparten unas mismas características, de forma que nos es útil agruparlos para poder darles una serie de permisos especiales en el sistema. Un usuario debe pertenecer, al menos, a un grupo.
En todo sistema debe haber un superusuario (root), que tendrá todos los permisos y privilegios máximos que le permitirán hacer cualquier operación sobre el sistema. Es importante que esta cuenta no se utilice para trabajar habitualmente en el sistema. Sólo deberíamos entrar como root cuando sea necesario, utilizando otras cuentas para el trabajo normal.
Linux es un sistema multiusuario y permite que varios usuarios puedan acceder, incluso simultáneamente. Cada usuario podrá tener su configuración y sus archivos independientes. Una cuenta de usuario tiene por finalidad permitir el acceso a una sesión de trabajo.
Los grupos permiten asignar permisos de ficheros y directorios a muchos usuarios de una vez. A un grupo pueden pertenecer varios usuarios y un usuario puede pertenecer a varios grupos. Los grupos son contenedores de cuentas con el fin de otorgar permisos a través de ellos
Un usuario tiene asignado un grupo principal o por defecto.
La pertenencia de un usuario a un determinado conjunto de grupos define un entorno de seguridad, que restringe las tareas que ese usuario puede o no puede realizar en el sistema.
El funcionamiento normal del proceso de autenticación de GNU/linux, se baja en tres archivos. /etc/passwd; /etc/group y /etc/shadow.
  • /etc/passwd = contiene ifnormacion las cuentas de usuarios
  • /etc/shadow = contiene las contraseñas.
  • /etc/group = contiene los grupos.
Se podria añadir un par mas
  • /etc/gshadow = contiene las contraseñas de grupo. (no en todos los casos)
  • /etc/skel= directorio que contiene el contenido del directorio de los nuevos usuarios.
Los campos de estos ficheros contienen toda la información que podemos manipular de los usuarios. Pero esto no suele hacerse editando directamente estos ficheros (aunque puede hacerse) sino que existen unos comandos específicos para facilitarnos esta tarea.

Campos de /etc/passwd

  • Nombre de usuario: es unico en el sistema, es el que se ingresa en la pantalla de bienvenida.
  • Contraseña: cuando se hace uso del mecanismo de shadow, aquí solo aparece una “x”, la verdadera contraseña cifrada se encuentra en el archivo /etc/shadow
  • identificador de usuario: es el uid, un numero unico, asociado al usuario. 0=root
  • Grupo: grupo al que pertenece el usuario, debe pertenecer al menos a un grupo.
  • Comentarios: nombre completo del usuario.
  • directorio personal: muestra el directorio home del usuario. Es decir donde estaran su informacion y archivos personales.
  • interprete de comandos: es la shell, que el administrador definio para el uso de ese usuario.
Formato de cada linea del /etc/passwd
usuario:Contraseña:identificador:Grupo:comentarios:directorio :interprete.


Campos de /etc/group

Nombre del grupo
Contraseña cifrada de grupo (si existe)
Lista de integrantes del grupo separados por comas.
1El hecho de que las contraseñas encriptadas puedan ser leídas no compromete la seguridad de nuestro sistema

El sistema de archivos


Definicion

Los sistemas de archivos (en inglés:filesystem), estructuran la información guardada en una unidad de almacenamiento (normalmente un disco duro de una computadora), que luego será representada ya sea textual o gráficamente utilizando un gestor de archivos. La mayoría de los sistemas operativos manejan su propio sistema de archivos.

Rutas y nombre de archivos


Normalmente los archivos y carpetas se organizan jerárquicamente.
La estructura de directorios suele ser jerárquica, ramificada o "en árbol", aunque en algún caso podría ser plana. En algunos sistemas de archivos los nombres de archivos son estructurados, con sintaxis especiales para extensiones de archivos y números de versión. En otros, los nombres de archivos son simplemente cadenas de texto y los metadatos de cada archivo son alojados separadamente.
En los sistemas de archivos jerárquicos, usualmente, se declara la ubicación precisa de un archivo con una cadena de texto llamada "ruta" —o path en inglés—. La nomenclatura para rutas varía ligeramente de sistema en sistema, pero mantienen por lo general una misma estructura. Una ruta viene dada por una sucesión de nombres de directorios y subdirectorios, ordenados jerárquicamente de izquierda a derecha y separados por algún carácter especial que suele ser una diagonal ('/') o diagonal invertida ('\') y puede terminar en el nombre de un archivo presente en la última rama de directorios especificada.

Jerarquia del sistema de archivos.

Los sistemas de archivos necesitan disponer de una forma estructurada de almacenar la información en la memoria secundaria, los discos duros y otros dispositivos de almacenamiento. Para eso se crean el sistema de archivos que organiza dicha informacion, de forma jerarquica como un arbol invertido. En GNU/linux se utiliza la Filesystem Hyerachy Standard (FHS) que especifica cómo se han de organizar. Los dispositivos de almacenamiento de un PC con ubuntu, no tienen letras de unidad, sino que son accedidos mediantes su montaje (enlace) en el sistema de archivos.

Ejemplo de 'ruta' en un sistema Unix

Así, por ejemplo, en un sistema tipo Unix como GNU/Linux, la ruta para la canción llamada "canción.ogg" del usuario "álvaro" sería algo como:
/home/álvaro/Mi música/La canción.ogg
en donde:
'/' representa el directorio raíz donde está montado todo el sistema de archivos.
'home/álvaro/Mi música/' es la ruta del archivo.
'La canción.ogg' es el nombre del archivo.
que se establece como único.

Ejemplo de 'ruta' en un sistema Windows

Un ejemplo análogo en un sistema de archivos de Windows (específicamente en Windows XP) se vería como:
C:\Documents and Settings\alvaro\Mis Documentos\Mi Música\canción.mp3
donde:
'C:' es la unidad de almacenamiento en la que se encuentra el archivo.
'\Documents and Settings\alvaro\Mis Documentos\Mi Música\' es la ruta del archivo.
'canción' es el nombre del archivo.
'.mp3' es la extensión del archivo, este elemento, parte del nombre, es especialmente relevante en los sistemas Windows, ya que sirve para identificar qué aplicación está asociada con el archivo en cuestión, es decir, con qué programa se puede editar o reproducir el archivo.

Algunos directorios importantes.

El sistema de archivos se estructura como ya hemos dicho, deforma jerarquica, desde su raíz “/” y siguiendo la FHS lo comun es encontrar los siguientes directorios.
  • /bin: en este directorio se almacenan los comandos básicos para todos los usuarios que utilicen el sistema.
  • /boot: en este directorio se almacenan los archivos estaticos necesarios para el arranque del sistema, incluido lo necesario para que el cargador de arranque funcione correctamente.
  • /dev: en este directorio se almacenan los archivos que representan a los dispostivos del sistema.
  • /etc: en esta ubicación se suelen almacenar los archivos de configuración del sistema y de los programas que se instalaron en el mismo. En muchas distribuciones tambien se almacenan aquí los scripts de arranque del propio sistema operativo.
  • /home: de este directorio cuelgan los directorios personales de cada uno de los usuarios registrados en el sistema.
  • /lib: aquí se disponen las librerias que el kernel, los modulos, y los programas necesitan para funcionar.
  • /mnt: En este directorio se solian montar los dispositivos como discos adicionales, unidades de CD o pendrives USB, en la actualidad muchas distribuciones prefieren por usar el directorio /media para esto.
  • /proc: este es un directorio no fisico. Ya que no existe como tal en el disco rígido. Guarda el estado del kernel, variables y procesos.
  • /root: es el directorio del superusuario.
  • /sbin: en este directorio los comando de administracion que utiliza el root o superusuario.
  • /usr: es una segunda estructura. Se utiliza para almacenar todo el software instalado.
  • /var: es un directorio que “en teoria” debe tener tamaño debe ser muy cambiante. Ya que contiente los subdirectorios de logs, colas de impresion, almacen de correo electronico y paginas web dinamicas. En los servidores fisicamente se coloca en una pariticion o disco fisico distinto al resto del sistema de archivos.

Otra forma de arrancar UBUNTU


Existen formas sencillas para arrancar UBUNTU una computadora sin la necesidad de instalar el sistema y evitar los riesgos que dicha instalacion conlleva.
Wubi: desde la version 08.04, el proyecto Ubuntu distribuye una herramienta muy curiosa, llamada Wubi. Es un instalador de Ubuntu para Windows, y su funcionamiento es simple pero efectivo: Instala Ubuntu en un archivo que se guarda en el la particion windows, mas particularmente en C:/ubuntu/disk/root.disk, modifica el gestor de arranque de windows agregandole una entrada para ubuntu, y listo! Al arrancar la PC en el cargador de windows aparace una nueva opcion “Ubuntu” que si la seleccionamos arrancará perfectamente, leyendo todo lo necesario de ese arhivo al que, el sistema, indetifica como un disco rigido.
Esta forma de trabajo no modifica en absoluto las tablas de particiones, lo cual es recomendable para los usuarios sin experiencia y por otro lado facilita enormente a la instalación, ya que en la pantalla wubi solicita todos los datos necesarios. No es una virtualizacion, es una instalación real, con la excepción que se usa un archivo en una particion windows.





Inicio/arranque del sistema


El arranque de un sistema GNU/Linux consta de las siguientes fases:

  • Ejecución del gestor de arranque (ej.: LILO o GRUB).
  • Carga y ejecución del kernel.
  • Ejecución de init (proceso número 1)* Ejecución de scripts de iniciación genéricos en /etc/rcS.d.
  • Entrada en el runlevel por defecto: ejecución de scripts del runlevel en /etc/rcX.d, donde X el el número del runlevel.

A grandes rasgos el proceso ocurre así:

Al conectar o reiniciar el ordenador, la BIOS busca en su configuración el dispositivo de arranque por defecto, el cual suele ser un disco duro, indicado generalmente en la configuración de la BIOS por C. Entonces carga en memoria el primer sector del dispositivo de arranque y le transfiere el control. Cuando se trata de un disco duro, este primer sector es el Master Boot Record (MBR) y contiene, además del código cargado por la BIOS, la tabla de particiones del disco. El código en el MBR, generalmente, lee en la tabla de particiones cuál es la partición activa y carga en memoria el primer sector de la misma, transfiriéndole el control.

En nuestro caso, este sector estará ocupado por un gestor de arranque que nos permitirá arrancar GNU/Linux u otro sistema operativo. Opcionalmente, puede instalarse el gestor en el MBR, tomando antes el control. Una vez cargado el gestor de arranque, éste se ejecuta, busca el kernel de Linux en una posición conocida del disco, carga el kernel en memoria y le cede el control. El kernel se almacena comprimido en disco, por lo que lo primero que hace el código del kernel que se ejecuta inicialmente es descomprimir el propio kernel y situarlo en memoria. Entonces se ejecuta realmente el kernel y empieza una lista de comprobaciones y activación de módulos internos del mismo.
Una vez funcionando, el kernel monta el disco principal donde se almacena el sistema operativo (root filesystem y ejecuta el primer proceso: init. La misión de init es ejecutar el resto de procesos del sistema: comprobación de discos, detección/configuración de hardware adicional, apertura de terminales, servidores, etc.
Una vez que el kernel se ha cargado en memoria, ejecuta el programa init, que se convierte en el proceso número 1 y se encarga de ejecutar el resto de programas que hacen que el sistema funcione. La operación de init se configura en el fichero /etc/inittab. Empezando en este fichero se puede seguir paso a paso el proceso de arranque (y parada) del sistema. Lo importante a saber aquí es que init no hace demasiado por si mismo, sino que se limita a ejecutar una serie de guiones o scripts que activan ordenadamente los diferentes servicios que hacen funcionar el sistema.
En primer lugar se ejecutan por orden alfabético todos los scripts que se encuentren bajo el directorio /etc/rcS.d que comiencen por ’S’ con “start” como argumento. Por convenio estos scripts se nombran comenzando por un número de dos cifras para establecer el orden adecuado. Cada script tiene una función particular, por ejemplo:
S10checkroot.sh comprueba el sistema de ficheros.
S20adjtimex ajusta el reloj del sistema.
S40networking activa los interfaces de red.
En realidad, y por convenio, estos scripts no se sitúan directamente en /etc/rcS.d, sino que se guardan en el directorio /etc/init.d y desde ahí se hacen enlaces simbólicos a /etc/rcS.d. De esta forma es más fácil añadir, eliminar y ordenar los componentes. Las tareas realizadas por los scripts en /etc/rcS.d son las básicas para arrancar el sistema. Luego se ejecutan otra serie de scripts correspondientes a un runlevel o nivel de ejecución.
Los runlevels (niveles de ejecución) son un mecanismo para permitir que el ordenador trabaje con diferentes configuraciones de arranque (diferentes servicios, etc.).
Los runlevels se numeran del 0 al 6. El 0 se ejecuta para parar el sistema (halt), el 6 para reiniciar (reboot) y el 1 para arrancar en modo single user, que viene a ser una cofiguración mínima para realizar tareas de administración.
El resto de los runlevels son para funcionamiento normal. El runlevel por defecto es el 2 (se configura en /etc/inittab), empleando los otros sólo en situaciones especiales. En Debian, los runlevels del 2 al 5 se configuran inicialmente de forma idéntica.
Así, el proceso de arranque suele continuar ejecutando los scripts del runlevel correspondiente situados en /etc/rcX.d, donde X es el número del runlevel. La forma de ejecutar estos scripts es análoga al caso anterior, salvo que ahora se ejecutan primero los scripts que comiencen con ’K’ con argumento “stop” y luego los que comienzan con ’S’ con argumento “start”.
La idea es que cada script gestione una tarea o servicio. Este servicion se inicia cuando el script se ejecuta con el argumento “start” y se detiene cuando se usa el argumento “stop”. De esta forma en cada runlevel puden detenerse los servicios que no se necesiten y activarse aquellos que interese. Este sistema también facilita el arranque y parada de servicios, ejecutando estos scripts manualmente con el argumento apropiado. En cualquier momento, el administrador puede hacer que el sistema cambie a otro runlevel ejecutando el comando telinit con un argumento numérico indicando el nuevo runlevel. Por ejemplo:
# telinit 3
En general, no hay que preocuparse por la configuración del arranque, ya que el sistema de instalación se ocupa automáticamente de actualizar la configuración en función de los paquetes instalados.

Tras todos estos pasos, el sistema muestra la pagina de bienvenida. Donde se debe escribir el nombre de usuario y la clave de acceso y si existen instalados mas de una interfaz, se puede elegir en cual trabajar.

Proyecto UBUNTU

Acerca del nombre
Ubuntu es una ideología ética propia de Sudáfrica, que se centra en la lealtad a las personas y en las relaciones entre ellas. La palabra procede de los idiomas zulú y xhosa. Ubuntu se percibe como un concepto tradicional africano, siendo considerado uno de los principios fundadores de la nueva república de Sudáfrica, y está conectado a la idea de un Renacimiento Africano.
Una traducción a grandes rasgos del principio de Ubuntu sería «humanidad hacia los demás». Otra traducción podría ser: «la creencia en un vínculo universal de convivencia que conecta a toda la humanidad».
«Una persona con ubuntu está abierta y disponible para los demás, se afirma en los demás, no se siente amenazada por la habilidad y bondad de los demás, tiene una seguridad en sí mismo que proviene del hecho de saber que él o ella forman parte de un gran todo y se reduce cuando los demás son humillados o disminuidos, cuando los demás son torturados u oprimidos.» Arzobispo Desmond Tutu
Como una plataforma basada en software libre, el sistema operativo Ubuntu lleva el espíritu de ubuntu al mundo del software.

Pilares de Ubuntu

  • Ubuntu siempre será gratuito y no tiene costes adicionales en la «enterprise edition»; hacemos accesible nuestro mejor trabajo a cualquiera en los mismos términos de gratuidad.
  • Ubuntu usa lo mejor en infraestructura de traducciones y accesibilidad que la comunidad del software libre es capaz de ofrecer, para hacer que Ubuntu sea utilizable por el mayor número de personas posible.
  • Ubuntu se publica se manera regular y predecible; se publica una nueva versión cada seis meses. Puede usar la versión estable actual o ayudar a mejorar la versión actualmente en desarrollo. Cada versión está soportada al menos durante 18 meses.
  • Ubuntu está totalmente comprometido con los principios del desarrollo de software de código abierto; animamos a la gente a utilizar software de código abierto, a mejorarlo y a compartirlo.
Hay muchos sistemas operativos distintos basados en Linux: Debian, SuSE, Gentoo, RedHat y Mandriva son algunos ejemplos. Ubuntu es otro competidor más en lo que ya es un mundo altamente competitivo. Así que ¿qué hace a Ubuntu diferente?
Basada en Debian, una de las distribuciones más aclamadas, tecnológicamente avanzadas, y bien soportada, Ubuntu intenta crear una distribución que proporcione un sistema al día y coherente con sistemas Linux de escritorio y servidor. Ubuntu incluye un cuidadoso número de paquetes seleccionado de la distribución Debian y manteniendo su poderoso sistema de administración de paquetes que permite una fácil instalación y eliminación limpia de programas. A diferencia de la mayoría de las distribuciones que vienen con una gran cantidad de programas que pueden o no ser útiles, la lista de paquetes de Ubuntu se reduce a un número importante de aplicaciones de alta calidad.
Al centrarse en la calidad, Ubuntu produce un entorno robusto y lleno de características que es adecuado para su uso en el hogar y en entornos comerciales. El proyecto se toma el tiempo necesario para centrarse en los detalles más pequeños y es capaz de liberar una versión que ofrece lo último y lo mejor de hoy en día el software, una vez cada seis meses. Ubuntu está disponible para 32-bit y 64-bit y se ejecuta en la mayoría de los equipos modernos. También está disponible para las arquitecturas Sun UltraSPARC y Amazon EC2.

Lanzamiento y Versiones

Las versiones estables se liberan cada 6 meses y Canonical proporciona soporte técnico y actualizaciones de la seguridad para la mayoría de las versiones de Ubuntu durante 18 meses, excepto para las versiones LTS (Long term support) que ofrece 3 años para la versión escritorio y 5 años para la versión servidor, a partir de la fecha del lanzamiento.

Soporte técnico extendido (LTS)

Cada 4 versiones de Ubuntu se libera una versión con soporte técnico extendido a la que se añade la terminación LTS.
Esto significa que los lanzamientos LTS contarán con actualizaciones de seguridad de paquetes de software durante tres años en entorno de escritorio y cinco años en servidor por parte de Canonical, a diferencia de los otros lanzamientos de Ubuntu que sólo cuentan con 18 meses de soporte.

El software incluido

Posee una gran colección de aplicaciones para la configuración de todo el sistema, valiéndose principalmente de interfaces gráficas. El entorno de escritorio predeterminado de Ubuntu es GNOME y se sincroniza con sus liberaciones. Existen otras dos versiones oficiales de la distribución, una con el entorno KDE, llamada Kubuntu, y otra con el entorno Xfce, llamada Xubuntu; existen otros escritorios disponibles, que pueden ser instalados en cualquier sistema Ubuntu independientemente del entorno de escritorio instalado por defecto.
Aplicaciones de Ubuntu: Ubuntu es conocido por su facilidad de uso y las aplicaciones orientadas al usuario final. Las principales aplicaciones que trae Ubuntu son: navegador web Mozilla Firefox, cliente de mensajería instantánea Empathy, cliente de redes sociales Gwibber, cliente de correo Thunderbird, reproductor multimedia Totem, reproductor de música Banshee, gestor y editor de fotos Shotwell, cliente de torrents Transmission, grabador de discos Brasero, suite ofimática LibreOffice, y el instalador central para buscar e instalar aplicaciones Centro de software de Ubuntu.
Seguridad y accesibilidad: El sistema incluye funciones avanzadas de seguridad y entre sus políticas se encuentra el no activar, de forma predeterminada, procesos latentes al momento de instalarse. Por eso mismo, no hay un cortafuegos predeterminado, ya que no existen servicios que puedan atentar a la seguridad del sistema. Para labores o tareas administrativas en la línea de comandos incluye una herramienta llamada sudo (de las siglas en inglés de SuperUser do), con la que se evita el uso del usuario administrador. Posee accesibilidad e internacionalización, de modo que el sistema esté disponible para tanta gente como sea posible.
No sólo se relaciona con Debian por el uso del mismo formato de paquetes .deb. También tiene uniones muy fuertes con esa comunidad, contribuyendo con cualquier cambio directa e inmediatamente, y no sólo anunciándolos. Esto sucede en los tiempos de lanzamiento. Muchos de los desarrolladores de Ubuntu son también responsables de los paquetes importantes dentro de la distribución Debian.
Para centrarse en solucionar rápidamente los bugs, conflictos de paquetes, etc. se decidió eliminar ciertos paquetes del componente main, ya que no son populares o simplemente se escogieron de forma arbitraria por gusto o sus bases de apoyo al software libre. Por tales motivos inicialmente KDE no se encontraba con más soporte de lo que entregaban los mantenedores de Debian en sus repositorios, razón por la que se sumó la comunidad de KDE creando la distribución GNU/Linux Kubuntu.

Modos de instalar.

  • Wubi: un instalador libre y oficial de Ubuntu para sistemas operativos Windows cuyo objetivo es el de permitir que usuarios de ese sistema, no acostumbrados a Linux, puedan probar Ubuntu sin el riesgo de perder información durante un formateo o la modificación de particiones. El programa viene de serie en el LiveCD de Ubuntu, aunque es posible descargarlo de la página oficial.
  • LiveUSB: una herramienta que viene de serie y que permite la creación de un LiveUSB de la distribución, de modo que se pueda cargar el sistema desde una memoria USB permitiendo guardar datos y configuraciones en el mismo, pero con la limitación de que sólo funciona en una computadora cuya placa base soporte el arranque desde un medio USB.95
  • LiveCD/DVD personalizado: existen herramientas como Reconstructor, UCK o remastersys que permiten a cualquiera crear fácilmente un LiveCD/DVD personalizado de una instalación existente de Ubuntu.
  • CD de instalación mediante red: se trata de una imagen ISO de apenas unos 10 MB que contiene los paquetes necesarios para descargar el sistema base desde los repositorios oficiales de Ubuntu y posteriormente elegir el escritorio deseado.96

Distribuciones


Antes de que aparecieran las primeras distribuciones, cualquier usuario de Linux debía tener una alta capacitación en Unix; no solo debía saber qué bibliotecas y binarios (ejecutables) necesitaba para iniciar el sistema y que funcionase, sino también los detalles importantes que se requieren en la instalación y configuración de los archivos en el sistema.
Las distribuciones eran originalmente una cuestión de comodidad para el usuario medio, evitándole la instalación (y en muchos casos compilación) por separado de paquetes de uso común, pero hoy se han popularizado incluso entre los expertos en éste tipo de sistemas operativos (UNIX/Linux). Si bien, históricamente, Linux estuvo mejor posicionado en el mercado de los servidores, distribuciones centradas en la facilidad de instalación y uso, tales como Fedora, Mandriva, OpenSuSE, Knoppix y Ubuntu, entre otras, han logrado una mayor aceptación en el mercado doméstico.
Entre las distribuciones más antiguas se incluían: 
  • Dos discos denominados H J Lu's «Boot-root» con el núcleo y un mínimo de herramientas para utilizar. 
  • MCC Interim Linux, que se podía descargar en un servidor público FTP de la Universidad de Mánchester en febrero de 1992. 
  • TAMU, creado por entusiastas de la Universidad de Texas A&M al mismo tiempo que SLS 
  • SLS (Softlanding Linux System). Esta distribución no estuvo bien mantenida; así pues, Patrick Volkerding lanzó una distribución basada en SLS a la que llamó Slackware; lanzada el 16 de julio de 1993. Esta es la distribución más antigua que está en desarrollo activo.
  • Yggdrasil Linux creó el primer CD-ROM de una distribución Linux.

Tipos de Distribuciones
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 cluster 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.
Una distribución live o Live CD o Live DVD, más genéricamente Live Distro, (traducido en ocasiones como CD vivo o CD autónomo), es una distribución almacenada en un medio extraíble, tradicionalmente un CD o un DVD (de ahí sus nombres), que puede ejecutarse desde éste sin necesidad de instalarlo en el disco duro de una computadora, para lo cual usa la memoria RAM como disco duro virtual y el propio medio como sistema de archivos.
Cuando el sistema operativo es ejecutado por un dispositivo de sólo lectura como un CD o DVD, el usuario necesita utilizar una memoria USB o un disco duro instalado en la máquina para conservar su información entre sesiones. La información del sistema operativo es usualmente cargada en la memoria RAM.
La portabilidad de este tipo de distribuciones las hace ideales para ser utilizadas en demostraciones, operaciones de recuperación, cuando se utiliza una máquina ajena o como medio de instalación para una distribución estándar. Actualmente, casi todas las distribuciones tienen una versión CD/DVD autónomo o «vivo».

GNU/Linux vs Windows


Ventajas tiene GNU/Linux sobre Windows


  • Es más seguro: Ya que la gran mayoría de los ataques de hackers son dirigidos a servidores Windows al igual que los virus los cuales se enfocan principalmente a servidores con éste sistema operativo. La plataforma Linux es más robusta lo cual hace más difícil que algún intruso pueda violar el sistema de seguridad de Linux. 
  • Es más rápido:  Al tener una plataforma más estable, ésto favorece el desempeño de aplicaciones de todo tipo tales como: bases de datos, aplicaciones XML, multimedia, etc. La eficiencia de su código fuente hace que la velocidad de las aplicaciones Linux sean superiores a las que corren sobre Windows lo cual se traduce en velocidad de su página.
  • Es más económico: Ya que requieren menor mantenimiento. En servidores windows es más costoso debido a que es necesaria una frecuente atención y monitoreo contra ataques de virus, hackers y errores de código, instalación y actualización de parches y service packs. El software Linux así como también un sin número de aplicaciones son de código abierto (gratuitos).
  • No requieren supervisión tan estrecha ni pagos de pólizas de mantenimiento necesarias para obtener los Service Packs.



¿Qué ventajas tiene Windows sobre GNU/Linux?


  • Es más fácil: Al ser de mayor facilidad de uso Windows en este momento continúa siendo el sistema operativo más comercial lo cual se refleja en la disponibilidad de aplicaciones, facilidad de mantenimiento así como soporte en el desarrollo de nuevas aplicaciones, puntos que pueden ser cruciales en la elección de servidores que corren aplicaciones web.
  • Aplicaciones desarrolladas en menor tiempo : Fruto de la inversión realizada por Microsoft y aunado a una comunidad de programadores cada vez más grande se ha logrado facilitar el desarrollo de aplicaciones y sistemas que corran sobre servidores Windows lo cual se ve reflejado en tiempos de desarrollo menores.
  • La curva de aprendizaje en el sistema Windows es mucho menor.

Ventajas y desventajas del Software Libre

Ventajas
  • Bajo costo de compra: Se trata de un software económico ya que permite un ahorro de grandes cantidades en la adquisición de las licencias. 
  • Innovación tecnológica: esto se debe a que cada usuario puede aportar sus conocimientos y su experiencia y así decidir de manera conjunta hacia donde se debe dirigir la evolución y el desarrollo del software. Este es un gran avance en la tecnología mundial. 
  • Independencia del proveedor: al disponer del código fuente, se garantiza una independencia del proveedor que hace que cada empresa o particular pueda seguir contribuyendo al desarrollo y los servicios del software. 
  • Control  público: esto hace que la corrección de errores y la mejora del producto se lleven a cabo de manera rápida y eficaz por cada uno de los usuarios que lleguen a utilizar el producto. 
  • Maleabilidad del software : esta cualidad resulta de gran utilidad para empresas e industrias específicas que necesitan un software personalizado para realizar un trabajo específico y con el software libre se puede realizar y con costes mucho más razonables. 
  • Diversidad de Idioma: aunque el software se cree y salga al mercado en una sola lengua, el hecho de ser software libre facilita en gran medida su traducción y localización para que usuarios de diferentes partes del mundo puedan aprovechar estos beneficios.
Desventajas
  • La curva de aprendizaje es mayor.
  • El software libre no tiene garantía proveniente del autor.
  • Se necesita dedicar recursos a la reparación de erratas.
  • No existiría una compañía única que respaldará toda la tecnología.
  • Las interfaces amigables con el usuario (GUI) y la multimedia apenas se están estabilizando.
  • El usuario debe tener nociones de programación, ya que la administración del sistema recae mucho en la automatización de tareas y esto se logra utilizando, en muchas ocasiones, lenguajes de guiones (perl, python, shell, etc).
  • La diversidad de distribuciones, métodos de empaquetamiento, licencias de uso, herramientas con un mismo fin, etc., pueden crear confusión en cierto número de personas.

Origenes de GNU/linux.


Un sistema operativo es software que se ejecuta en el hardware de una computadora u otro dispositivo electronico (celular, tablet, etc.) para administrar los recursos de hardware y software del sistema. El sistema operativo debe ofrecer al usuario, una maquina  virtual simple con la sea sencillo interactuar. Entre estos servicios se cuenta la ejecucion de programas (aplicaciones), las operaciones de entrada / salida, la comunicación entre procesos, la deteccion de errores y la manipulacion de archivos.
GNU/ Linux es un sistema operativo completamente gratuito. Es la creación de Linus B. Torvalds. A comienzos de la década de 1990, Torvalds quiso crear su propio sistema operativo para su proyecto de graduación. Linus Torvalds intentó desarrollar una versión de UNIX que pudiera utilizarse en una arquitectura de tipo 80386. El primer clon de UNIX que funcionó en un PC fue Minix, escrito por Andrew Tanenbaum. Éste era un sistema operativo mínimo que se podía usar en un PC. Después, Linus Torvalds decidió ampliar las posibilidades de Minix al desarrollar lo que se convertiría en Linux. Entusiasmados con esta iniciativa, diversas personas contribuyeron para ayudar a Linus Torvalds a hacer de su sistema una realidad. En 1991, la primera versión del sistema salió al mercado. En marzo de 1992 se distribuyó la primera versión, la cual no tenía prácticamente ningún error.
Al aumentar la cantidad de desarrolladores que trabajaban en el sistema, éste integró rápidamente nuevos desarrollos gratuitos de herramientas disponibles en sistemas UNIX comerciales. Después, comenzaron a aparecer nuevas herramientas para Linux con una velocidad increíble.

La originalidad de este sistema radica en el hecho de que Linux no se desarrolló con fines comerciales. De hecho, no se copió ni una sola línea de código de los sistemas UNIX originales (en realidad, Linux se inspira en diferentes versiones comerciales de UNIX: BSD UNIX, System V). Por lo tanto, una vez creado, todos pueden usar Linux gratuitamente e incluso pueden mejorarlo. Si bien en un principio Linux se diseñó para ejecutarse en una plataforma de PC, se ha expandido (es decir, adaptado) para otras plataformas como Macintosh, estaciones SPARC, DEC Alpha e incluso plataformas como las que utilizan los asistentes personales (PDA), ¡hasta consolas de videojuegos!