jueves, 13 de noviembre de 2008

Tics Para el Desarrollo: Uso de los Comandos Gnu/Linux

Este es el primer prototipo de Daniel,

sin embargo el autor proyecta

otros trabajos impresos en el área

como su aporte a la biblioteca venezolana




Se reservan los derechos de esta obra, según la Ley de Derecho de Autor vigente en Venezuela. Sin embargo, Daniel Stekman, creador de este texto otorga el permiso de uso, copia, modificación y redistribución parcial o total del presente texto: Comandos GNU/Linux. Esto se aplicará tanto en lo que se refiere a las páginas del contenido, como en preliminares, portadas, apéndices o partes de ellas, tales como títulos, imágenes o fotografías entre otros elementos de este libro.



INTRODUCCIÓN


El término de software libre equivale a decir que los programas de computación, su documentación y datos están disponibles al usuario; quien puede modificarlos, utilizarlos, copiarlos y redistribuirlos. En este sentido, debe partirse del uso del ambiente operativo para poder llegar a realizar algunas de las actividades mencionadas. Específicamente el uso de comandos da al usuario una independencia del modo gráfico, al cual no se puede acceder en condiciones críticas o en equipos de escasos recursos informáticos.

Por otra parte, en el mundo existen licencias libres bajo las cuales es posible el uso de las distribuciones de GNU/Linux a que corresponden los comandos que se describirán en este libro. De allí, la prioridad que el Estado Venezolano les ha otorgado, además de su de bajo costo o adquisición gratuita. Se suma a lo anterior, la independencia tecnológica para contextualizar el programa según nuestras necesidades. Sin embargo, hay pocos recursos educativos impresos, relacionados al tema y hechos con criterios adecuados.

El texto presente es de carácter popular pero orientada específicamente a los adultos. Se consideró por todo esto, la Gestión del Conocimiento. Además, el texto, servirá de consulta para quienes participen en el proceso de alfabetización tecnológica y sería de provecho a pedagogos que quieran adaptar el contenido a niños y adolescentes o cualquier persona del mundo que se disponga incluso a traducirlo e investigar este tema.

Para iniciar la secuencia de este contenido, se revisarán algunos conceptos elementales, tales como hardware, software y computación antes de exponer qué es software libre y qué función cumple GNU/Linux.

Posterior a esto, se presentará lo más específico: Introducción al GNU/Linux para conocer de modo general el ambiente donde se opera, el sistema de archivos y qué función cumple cada directorio o carpeta que instala GNU/Linux en el disco duro.

Para finalizar, se consideraron los comandos elementales que debe manejar una persona, para reforzar ese conocimiento se incluyeron los ejemplos correspondientes.

PRIMERA PARTE


SOFTWARE LIBRE


En principio, es necesario que el lector tenga en cuenta que este texto contiene las nociones del software libre en el país. Si conoce los conceptos de hardware, software, computación, software libre y cómo se diferencia de otros tipos de programas; además de saber qué es GNU/LINUX y de qué trata la filosofía del software libre, entonces se recomienda que lea la Segunda Parte.

Si sólo necesita saber de alguno de estos conceptos, adelante. Podrá utilizar el índice alfabético. Pero, se advierte a los usuarios avanzados que para trucos de programación o guías completas de usuario, deberá consultar otros textos. En resumen, es importante saber con qué se está tratando, aparte de ser un usuario para transcribir y obtener cálculos. Después de conocer este tipo de información previa, se recomienda explorar qué más ofrecen los programas de computación libres para compararlos con otros tipos de software y seleccionar la opción que convenga.

Hardware, lo que se toca


El hardware es cualquier componente del computador que se vea y se toque, como por ejemplo: ratón, teclado, monitor, unidad de disco compacto, disco compacto, pen drive, cables e impresoras entre otros componentes.


Se sugiere al lector, que acuda a una tienda de informática y solicite una lista del hardware en venta e identifique algunas piezas que conozca. También podría preguntar al vendedor para qué sirven.


Software, las reglas del juego

Cualquier programa, base de datos, norma, procedimiento, método o documentación se clasifica como software; aunque su equivalente en español es programática, pero es más conocida la palabra en inglés. En la próxima figura se puede visualizar a dos personas en actitud de análisis, eso es parte del software y nace de la mente humana. Entre el software más común se cuenta con:

  • Los sistemas operativos, que sirven de base para poder trabajar con otros programas tales como procesadores de palabras, hojas de cálculo, graficadores y lenguajes de programación.

  • Los procesadores de palabras: permiten hacer cartas, monografías o documentos extensos tales como contratos legales y libros en general.

  • Hojas de cálculo: sirven para registrar, ordenar, promediar y obtener datos estadísticos tales como las notas de los alumnos de una sección; además, se utilizan para actualizar nóminas en general o la contabilidad entre otros tipos de información.

  • Graficadores: permiten visualizar una foto o un dibujo en el computador, crear nuevos dibujos o modificar fotos e imágenes existentes.

  • Lenguajes de programación: son programas que permiten crear nuevos programas o modificar algunos existentes.

Sería bueno iniciar una conversación con diferentes personas acerca de sistemas operativos, procesadores de palabras, hojas de cálculo, y software de diseño gráfico; luego, ubicar estos conceptos en algún glosario o diccionario de computación. Pero, en cuanto a los lenguajes de programación, se sugiere consultar con un programador o buscar en un libro básico del género. Para esta última actividad es una buena opción indagar en bibliotecas.

Computación

La informática es equivalente a la computación, porque es la ciencia que estudia el procesamiento automático de la información, para esto se vale del computador y sus periféricos. En la actualidad se comunica con muchos tipos de tecnología, tales como telefonía celular, cámaras fotográficas digitales, impresoras y equipos de sonido. Esos periféricos se clasifican como hardware, mientras que la información que procesan, la forma como se comunican, todos sus manuales, guías y libros en general conforman el software.

Hasta ahora, es importante preguntarse si realmente computación equivale al término informática. Particularmente, recomendamos al lector la referencia electrónica: www.wikipedia.com y la consulta a diversos textos.

Además, se invita a realizar la siguiente actividad:

  • Investigar qué es tele y qué es informática.

  • Considere que la palabra teléfono contiene a la palabra tele y que el teléfono celular se comunica con computadores. Esto es un ejemplo de teleinformática.

  • Elaborar una conclusión acerca de teleinformática.

Software Libre

Richard Stallman definió en 1983 la filosofía de software libre, predicando las libertades que un programa debería otorgar al usuario:

Libertad 0: ejecutar el programa con cualquier fin.

Libertad 1: estudiar y modificar el programa.

Libertad 2: copiar el programa a cualquier persona.

Libertad 3: distribuir al mundo las mejoras.

Según el autor citado, si un software no permite esto, no se debe clasificar como libre, porque sería un engaño al usuario.


GNU/Linux

La historia del software libre está ligada con la de GNU/Linux. Todo comenzó con la colaboración de programadores del mundo que ayudaron a elaborar el programa GNU. Luego en 1993 se complementó con un programa denominado Linux, de Linus Torvalds y así nació GNU/Linux el primer sistema operativo con características de software libre de manera oficial. Por esta razón, las versiones que circulan de este software deberían identificarse como GNU/Linux. A continuación se presentan los logotipos de GNU1 y de Linux2.


Figuras de GNU y Linux, llamados Ñú filósofo y Tux, respectivamente. La imagende Ñú fue tomada de la página correspondiente a la dirección www.gnu.org y Tux se obtuvo de http://en.wikipedia.org/wiki/Tux.

Fundación del Software Libre (FSF)

La FSF (Free Software Foundation) es una fundación para documentar toda la filosofía del software libre. Se recomienda visitar su página web (http://www.fsf.org) o imprimir sus documentos y ampliar la parte de la filosofía que le provee el presente libro.

Filosofía del Software Libre

Anteriormente se ha comentado que un programa libre se puede usar, copiar, modificar y distribuir sin restricciones y que el primer software libre emergido con esa filosofía fue el sistema operativo GNU/Linux. También, Stallman advierte de los engaños que existen en programas aparentemente libres. En este sentido se refiere a programas que utilizan la clasificación Open Source (código abierto, traducido del inglés). Según él, eso no es un sinónimo de software libre, aunque así lo afirmen otros autores.

Además, Stallman opina que si un programa tiene código abierto al usuario, pero tiene cualquier limitación para modificarlo, se coarta la libertad. Un ejemplo sería que se cobre de manera adicional por los realizar cambios al software o que se pueda observar el código, pero no se permita editarlo.

Tampoco son libres algunos programas que tienen partes libres y partes protegidas por derechos de autor, porque en algún día quien goce de esos privilegios puede retirar el permiso y así los usuarios no lo podrían ejecutar sin restricción.

En cuanto a su comercialización, el software libre no es gratis. Aunque, el término free en inglés, se utiliza para denominar algo que se regala, el software libre se puede vender. Además, no se estipula persecución legal a quien lo utilice, no se necesita licencia para ello, y existe libertad para su copia y distribución.

Por otra parte, el software libre no es de dominio público. Para que nadie se adueñe de él. Por tal motivo, Stallman desarrolló el concepto de copyleft, que es una concepción legal que no permite que nadie se apodere de esta creación.

En fin, en la FSF (2006) se ha expresado que el software libre es un asunto de libertad no de precio, se debe pensar en libertad como la libertad de expresión.

Bases Legales del Software Libre

Las bases legales del software libre establecen los derechos del autor respecto a su programa y los beneficios que otorga a sus usuarios. También, definen cómo se puede garantizar que un software permanezca libre. En este sentido, es necesario exponer cuál es la licencia que permite al usuario gozar de las libertades predicadas en la teoría que ideó su creador Richard Stallman. Asimismo, se especifican cuáles son los requerimientos para declarar un software libre. Tal información se expondrá en el orden en que se deben cumplir los pasos para definir ese tipo de programa informático, según datos aportados por FSF:

  • Primero, se deben registrar los derechos de autor, para que nadie se apodere del software.

  • Posteriormente, El producto debe anexar una copia de la Licencia Pública GNU original, en la que se reconoce el derecho de autor y se especifican las libertades del software.

  • Debe anexarse una traducción no oficial de la Licencia Pública GNU.

Las actividades comentadas corresponden al concepto denominado por Stallman copylef en www.gnu.org y lo utiliza para referirse a la liberación de la copia. La copia de la licencia original es esencial para que alguien pueda reconocer la intención original del software libre. También se debe añadir una traducción no oficial al idioma donde se distribuye el software, así se ayuda a que los usuarios de otros países, con idioma distinto del inglés puedan comprenderla.

En primer lugar, el derecho de autor evita que se convierta en una obra de dominio público y alguien se apodere de ella con fines de explotación privada. En segundo término, la licencia pública GNU original está en inglés y debe ser acompañada por una traducción no oficial para que sea cada país quien interprete el contenido del mencionado instrumento legal. Así, la Fundación de Software Libre (FSF), evita responsabilidades legales.

Actividades para el estudio

Es importante pensar en las siguientes situaciones:

1. Si usted va a iniciar un negocio que preste servicios de Internet, va a utilizar un servicio de Internet o cualquier servicio de informática ¿Qué prefiere?:

  • Comprar una licencia que cueste el equivalente a diez veces su sueldo

  • Obtener de manera gratuita o a bajo costo, un sistema que le permita hacer las mismas funciones.

  • Copiar ilegalmente un programa protegido por los derechos de autor y arriesgarse a pagar multas y encarcelamiento entre otras consecuencias.

2. Si decide hacer lo segundo, ¿no se ahorraría un dinero que puede ser invertido en otros bienes y servicios?

3. Si decide obtener un programa económico o gratuito ¿cuál de los siguientes escogería?

  • Gratis, pero tiene contratos para hacerle mantenimiento y modificaciones.

  • Gratis, pero no se puede modificar, se debe esperar que la compañía distribuya la nueva versión.

  • Gratis, pero no se le puede copiar a alguien que lo necesite.

  • Tiene precio, pero permite usarlo, copiarlo a quien lo quiera, tiene asesorías gratis o con algún costo en diversas partes del mundo, de manera directa y disponibles desde Internet, además, se puede distribuir esa nueva versión modificada, sin restricciones.

4. Qué sería mejor en un instituto educativo, un software que le permita a los estudiantes analizar cómo se elaboró u otro programa sólo permite ser utilizado, aunque sea inaccesible para estudiar su codificación.

Algunas de las dudas con respecto a la filosofía del software libre, deberían ser despejadas tomando algunas fuentes de primera mano. Para tal fin se puede acceder a la página web www.fsf.org, porque equivale a informarse acerca del pensamiento de Stallman respecto al software libre.

Entre las diversas razones para utilizar el software libre se mencionan las siguientes:

  • Costo accesible a personas jurídicas y naturales.

  • Desarrollo de varios proyectos para mejorarlo

  • Desempeño como servidor de redes de computadoras.

  • La existencia de una amplia variedad de software para transcripción, cálculo, gráficos y multimedia.

  • Soporte y servicio: se puede obtener respuestas a través de comunidades de software libre, desde donde sus miembros ceden comandos y procedimientos aconsejados para la instalación de algún software o hardware. También existen especialistas en el ramo.

En cambio, preocupa de un software protegido con derecho de autor lo siguiente:

  • Que el software baje la calidad porque tenga el monopolio.

  • Costo elevado para utilizarlo.

  • Una falta de asesoría inmediata.

  • Las reglas para poder instalarlo y compartirlo con muy pocas personas, porque la ampliación de la licencia tiene otro costo.

Además, se proponen a continuación algunas soluciones ante eventualidades que surjan al manipular programas libres:

  • Programas imprescindibles incompatibles con GNU/Linux: se pueden utilizar mientras se programan las nuevas versiones libres. Cabe agregar que en un disco duro hay la posibilidad de instalar varios sistemas operativos.

  • El personal carece de adiestramiento: existen instituciones públicas que le pueden evitar grandes costos y se puede ir capacitando progresivamente al personal según sus funciones.

  • Si existe un hardware incompatible con GNU/Linux se deben analizar los recursos existentes y lo que se necesita obtener antes de utilizar un nuevo software. No obstante, cada día más surgen proveedores según la demanda de diversas aplicaciones informáticas libres.

Cabe destacar algunas tendencias hacia la utilización de software libre:

  • Según Bernstein, citado por el Ministerio de Ciencia y Tecnlogía (MCYT, 2004), el 65% de las empresas latinoamericanas utilizan Linux y la visión de IBM, corporación proveedora de hardware, es que las instituciones gubernamentales migrarán a GNU/Linux; porque las gerencias de informática de las administraciones públicas controlan ese proceso.

  • Existe según el autor mencionado una lista de países donde se usa GNU/Linux en el sector público: Australia, China, Estados Unidos de América, Brasil, Argentina, Colombia, Suiza, Venezuela, Cuba, Turquía y Rusia entre otros países.

Al final de esta parte, se enfatiza en que no se pretende imponer el uso del software libre por medio de este texto, pero se presenta la información para que el trabajador evalúe si algún día desea utilizar el software libre (sl). En un servicio público de computación el sl es prestado de forma gratuita, pero es su opción si prefiere rentar el software propietario3. A pesar de las opciones disponibles, si se estudia en un organismo público o privado en el que se pida una actividad de investigación referente al software libre ¿no es mejor aprender algo de él?


Marco Legal que Rige el Uso del Software Libre en Venezuela

En la República Bolivariana de Venezuela, el Estado cuenta con el Decreto Presidencial 3.390, mediante el cual se dispone que la administración pública empleará de manera prioritaria el Software Libre para satisfacer las necesidades de la población; para esto se fortalecerá la industria nacional de producción de este tipo de programas. También se considera su difusión para reducir la brecha que impida su utilización. A continuación se destacan los siguientes artículos del Decreto 3.390:

En el Artículo 1 se establece que se empleará prioritariamente software libre en la Administración Pública y se flexibiliza el hecho que se realice una migración de manera gradual. En complemento, en el Artículo 2 se define que el software libre es un programa de computación que se puede utilizar, modificar, copiar y distribuir sin ninguna restricción; por el contrario un software propietario impone restricciones en cuanto a algunas de las características de un software libre. A pesar de lo establecido en el Artículo 1, se permite la adquisición de software propietario si se solicita al Ministerio de Ciencia y Tecnología (MCYT). Ello se aplicaría sólo si no existe un programa informático libre que cumpla con los requerimientos de una organización.

También, el Ministerio de Ciencia y Tecnología adelantará la capacitación de los funcionarios públicos (Artículo 4), así como de proveer la distribución de ese tipo de tecnología. Además, el Ejecutivo Nacional fomentará la investigación y desarrollo de software (Artículo 5). Las consideraciones del decreto expresadas al principio de su texto justifican que el software libre fortalecerá la industria nacional de programación y reducirá con ello la brecha social y tecnológica. Así, en menor tiempo y a menor costo se expone que existirá mayor interoperatividad y seguridad en los sistemas de información del Estado.

Cabe destacar que el decreto no es muy extenso y más que todo se redactó para definir los conceptos elementales del software libre. Lo valioso es que determina que a través del MCYT y el Ministerio de Educación y Deportes (MED) se establece la creación, difusión y utilización de este tipo de programas de computación. Para esto, en el año 2003 el Gobierno Nacional creó la Academia de Software Libre.

Las bases legales del software libre en Venezuela, definen el concepto de la programática libre, establecen los derechos que el autor de este tipo de software da a sus usuarios y definen cómo se puede garantizar que un software permanezca libre. De esta forma se ratifica la Filosofía del Software Libre adaptada a las necesidades del ámbito nacional. También, se ha justificado lo que el gobierno ha considerado como lo más beneficioso a favor de desarrollo general del país, lo cual se comenta a continuación:

  • Se promoverá el desarrollo y uso de programas para libre distribución e incentivar la competitividad entre las diversas organizaciones que las oferten (Art. 1).

  • Se ratifica la definición de software libre y software propietario. Este último es el que posee alguna restricción para su uso, modificación, copia o distribución (Art. 2)

  • Se permite la adquisición de software propietario si se solicita al Ministerio de Ciencia y Tecnología y no existiera un programa informático libre que cumpla con los requerimientos de una organización (Art. 3).

  • También, el Ministerio de Ciencia y Tecnología adelantará la capacitación de los funcionarios públicos (Art. 4).

  • El Ejecutivo Nacional, fomentará la investigación y desarrollo de software (Art. 5).

Según la información antes expuesta, el Estado podrá seleccionar el programa informático que mayores beneficios le presente. Por otra parte, se hace una aclaratoria acerca de que los programas propietarios son aquellos que imponen restricciones de uso, copia, modificación y distribución. Sin embargo, ese tipo de programas no están excluidos del uso en la Administración Pública, siempre y cuando se demuestre que no tengan algún equivalente en software libre o existe una necesidad que justifique su utilización. En cualquier caso, el MCYT debe de dirigir la capacitación de funcionarios públicos, mientras que el ejecutivo del Estado, promoverá la investigación y el desarrollo en torno al software libre. Así se infiere que el Estado tiene una prioridad legalmente establecida para la utilización del software libre y una designación de responsables para el adiestramiento de los usuarios y el desarrollo de nuevas aplicaciones informáticas.


SEGUNDA PARTE


INTRODUCCIÓN AL GNU/LINUX

La intención de este capítulo es detallar a grandes rasgos la estructura de carpetas y archivos de GNU/Linux, la cual varía entre las diversas distribuciones. Sin embargo se describen las más comunes y se da un listado de comandos relacionados, aunque sin explicación, debido a que un grupo de éstos será seleccionado para su descripción y ejemplos de uso en el capítulo final de este texto.

Sistema de archivos

El software no deberá crear o requerir archivos o subdirectorios especiales en el directorio /. La estructura del sistema de archivos Linux proporciona más que suficiente flexibilidad para cualquier paquete. Cualquier paquete que ocupe un directorio bajo la raíz / del sistema de archivos sufre de bastante arrogancia.


El Directorio Raíz


bin: archivos binarios de comandos esenciales

boot: archivos para el inicio del sistema

dev: archivos de dispositivos

etc: configuración del sistema local y la máquina

home: directorios con carpetas para los usuarios

lib: librerías compartidas

mnt: punto de montaje de particiones temporales

proc: manejo de información de procesos y de sistema

root: directorio del usuario de mayor jerarquía en el sistema

sbin: archivos binarios necesarios para el sistema


Directorio /bin: contenedor de comandos esenciales de usuarios

Se ha dicho que Linux es el núcleo o kernel del sistema operativo GNU/Linux. El kernel estaría localizado en, ya sea / ó en /boot.

En cuanto a “/bin”, contiene los binarios de comandos esenciales de usuarios. Están disponibles para todos los usuarios, desde el superusuario root (que tiene todo el control y privilegios sobre el sistema), el administrador u otro usuario con menor jerarquía. Entre ellos se cuenta con instrucciones para copiar o borrar archivos (cp y rm, respectivamente).

Todos los binarios utilizables sólo por root, tales como daemons,init,getty, update, etc. Estarían localizados en /sbin ó /usr/sbin dependiendo si son o no esenciales.

Directorio /boot: archivos del cargador de arranque del sistema


La carpeta “/boot” es para cualquier cosa que se utiliza antes de que el kernel ejecute el programa “/sbin/init”. Ésto incluye sectores de arranque y archivos de mapeo de sectores entre otros ficheros. Los archivos de configuración para cargadores de arranque podrían estar localizados en /etc.

Directorio /dev: archivos de dispositivos

Éste es el directorio de los dispositivos. Contendría un archivo por cada dispositivo que el kernel o núcleo puede soportar. Por ejemplo un disco duro puede ser afín al archivo sda1 o hd1 dependiendo del tipo de tecnología del disco duro.

El directorio “dev” también contiene un script llamado MAKEDEV el cual puede crear /dispositivos cuando se necesiten. Puede contener un MAKEDEV local para /dispositivos sólo-local.


Directorio /etc: configuración del sistema local a la máquina

La carpeta /etc contiene archivos y directorios que son locales al sistema actual. Para la configuración de sistemas locales de máquina se cuenta con los siguientes subcarpetas:

X11: archivos de configuración de x window

skel: esqueletos (esquemas) de configuración de usuarios

En primer término, X window es un sistema de ventanas desarrollado a mediados de los años 80 dar una interfax gráfica a UNIX Este protocolo permite la interacción gráfica en red entre un usuario otros equipos computarizados. Generalmente se hace referencia a la versión 11 de este protocolo, es decir X11, que se utiliza en la actualidad. Específicamente en el directorio “etc/X11” deberían estar todos los archivos de configuración de X11 locales a la máquina.

Por su parte, el subdirectorio “etc/skel” es la localidad para los llamados archivos esqueletos de /usuarios, que le son dados por defecto cuando un nuevo usuario recibe una /cuenta, este directorio puede contener subdirectorios para diferentes /grupos de usuarios (i.e./etc/skell/apoyo, /etc/skell/usuarios).

/home: Directorios hogar de los usuarios (opcional)

El directorio “/home” es un concepto algo estándar, pero es claramente un sistema de /archivos específico de un sitio. El arreglo diferirá de máquina a máquina. /Esta sección describe una localización sugerida para los directorios hogar /de los usuarios. Cada directorio de usuario es uno de los subdirectorios debajo de /home, por ejemplo: /home/jose, /home/administrador, /home/maría, /home/estudiantes, etc.

Directorio /lib: contenedor de librerías compartidas y módulos de kernel escenciales

El directorio /lib contiene aquellas imágenes de las librerías compartidas que se necesitan para arrancar el sistema y ejecutar los comandos en el sistema de archivos raíz.

Por razones de compatibilidad, /lib/cpp necesita existir como una referencia al pre-procesador del lenguaje de programación C instalado en el sistema. La localización usual del binario es /usr/lib/gcc-lib///cpp. Puede existir un enlace/lib/cpp apuntando a este binario o a cualquier otra referencia a este binario que exista en el sistema de archivos. (Por ejemplo, /usr/bin/cpp se usa frecuentemente).

Carpeta /mnt: punto de montaje para sistemas de archivos

Este directorio se ha provisto para que el administador pueda montar temporalmente sistemas de archivos cuando lo necesite. El contenido de este directorio es un asunto local y no debe afectar la manera en la cual se ejecuta ningún programa.

Recomendamos la no utlización de este directorio por programas de instalación, y se sugiere utilizar un directorio temporal adecuado que no este en uso por el sistema.

El subdirectorio /proc: contenedor de información de procesos y del kernel

El sistema de archivos proc se está convirtiendo en una especie de estándar para el manejo de información de procesos y de sistema en vez de las carpetas /dev/kmem y otros métodos similares. Se recomienda para el almacenamiento y obtención de información de procesos así como otra información del kernel y de memoria.

Bajo Linux, /proc proporciona información sobre cualquier proceso en ejecución en /proc/PID. Cabe agregar que En el kernel 2.6, la mayoría de los ficheros no relacionados con los procesos que se encontraban en /proc se movieron a otro sistema de ficheros virtual llamado sysfs (montado en /sys).

Carpeta /root: directorio del superusuario

El directorio / es tradicionalmente el directorio hogar del usuario root en los sistemas UNIX. /root se usa en muchos sistemas Linux y en algunos sistemas UNIX. El directorio hogar de la cuenta de el usuario root puede ser determinada por el desarrollador o por preferencias locales. Las posibilidades obvias incluyen /, /root, y /home/root.

Si el directorio hogar de root no está almacenado en la partición raíz, será necesario asegurarse que tome / por defecto si no puede ser localizado.

No debería utilizarse la cuenta root para cosa mundanas tales como leer el correo y ver las noticias, sino que se use solamente para la administración del sistema. Por esta razón deberían aparecer subdirectorios como /mail y /news en el directorio del superusuario. Para esto otro se puede crear otro usuario con menos privilegios.

Carpeta /sbin: binarios del Sistema

Contiene archivos usados por la administración del sistema y otros comandos que sólo root utiliza; los cuales están almacenados en:

/sbin, /usr/sbin, y /usr/local/sbin.

El directorio “/sbin” típicamente contiene binarios esenciales para arrancar el sistema además de los binarios en /bin. Cualquier cosa que se ejecuta después de que se sabe que /usr se ha montado (cuando no hay problemas) debería estar en /usr/sbin. Los binarios de administración de sistema sólo-locales deben estar localizados en /usr/local/sbin.

Decidir que cosa va en los directorios de /sbin puede ser descrito así: si un usuario necesitará ejecutarlo, debe de ir en otro lado. Si sólo será ejecutado por el administrador del sistema o por root como scripts de administración, entonces debe ir en /sbin (o en /usr/sbin o en /usr/local/sbin, si el archivo no es vital para la operación del sistema).

Archivos como chfn que los usuarios usan sólo ocasionalmente deben aun estar en /usr/bin. El coamndo ping aunque es absolutamente necesario para el root (recuperación de la red y diagnóstico) es también frecuentemente usado por los usuarios y por esa razón debe ir en /bin.

Los usuarios ordinarios no tendrán que poner ninguno de los directorios sbin en su búsqueda o path: camino dónde se encuentra una carpeta o archivo.

La división entre /sbin y /bin no fue creada por motivos de seguridad o para evitar que los usuarios vieran el sistema operativo, sino para proveer una buena partición entre binarios que todos usan y los que se usan, principalmente las tareas de administración. No hay ganancia inherente en seguridad en hacer que /sbin este fuera del alcance de los usuarios.

En resumen se puede comentar lo siguiente:

  • /boot: mantiene dentro de su estructura el kernel e información indispensable para el arranque del sistema.

  • /dev: contiene archivos que permiten enlazar a dispositivos tales como una unidad de disco duro o pen drive entre otros recursos.

  • /etc: posee archivos de configuración de diversos programas.

  • /home: es el lugar donde se encuentra la información de los usuarios del sistema.

  • /lib: es un sitio con librerías compartidas que se necesitan para arrancar el sistema y ejecutar sus comandos.

  • /mnt: es un directorio donde se crean carpetas como por ejemplo “/juan”, para hacer referencia a un pendrive que tiene ese nombre de etiqueta. Luego, en esa carpeta se monta un dispositivo que exista en la carpeta /dev y que sea compatible con un pendrive. Por ejemplo en algunos casos el pendrive funciona con el dispositivo /dev/sda2, otras con /dev/hda2.

  • /proc: contiene archivos para establecer diversos canales de comunicación con algunos programas como sucede con el con el kernel.

  • /root: se utiliza para almacenar la información del superusuario del sistema.

  • /bin: contiene los comandos esenciales para todos los usuarios

  • /sbin: alberga programas disponibles sólo para el administrador

  • /proc

  • Este directorio se monta en la memoria ram, no en el disco, es creado por el sistema para intercambiar información con más facilidad.

Actividades complementarias

Se requiere con la ayuda del lector construir un mejor concepto general acerca de los sistemas de archivos entre los diversos tipos de distribución de GNU/Linux, esto en función de su propio aprendizaje. Por lo tanto se sugieren las siguientes actividades:

  • Conversar con otros usuarios de GNU/Linux y tomar en cuenta aspectos nuevos para investigarlos posteriormente en textos o en internet, o con expertos en la materia (Para la búsqueda en internet se recomienda el buscador www.loogico.com)

  • Investigar el sistema de archivos de tres distribuciones por ejemplo: ubuntu, fedora y mandriva y comantar sus diferencias.

  • Reestructurar la información comentada en este material educativo y contactar al autor (dstekman@gmail.com) para mejorar en una nueva versión el presente texto, según las observaciones que proporcione el lector y según las libertades de uso, copia, modificación y redistribución que se otorgan al principio del libro.

TERCERA PARTE

COMANDOS GNU/LINUX

El conocimiento de los comandos GNU/Linux es importante para las tareas de distribución de recursos y planificación de rutinas informáticas. Los comandos linux son necesarios para tener un dominio del sistema operativo. La línea de comandos es la manera más directa de enviar órdenes a su máquina. A continuación se describen una serie de comandos con mayor utilización:

Comandos para el acceso a directorios y manipulación de archivos

Son instrucciones que permiten crear y borrar directorios; listar, copiar, renombrar y borrar archivos, crear enlace entre archivos, entre ellos se cuenta con:

  • ls: lista archivos y directorios: ls muestra los archivos del directorio

  • cp: copiar archivos y directorios, la orden cp /home/jose/trabajo1 /media/sda2 copia un archivo llamado trabajo a un pendrive montado en sda2

  • pwd: muestra el nombre del directorio de trabajo actual

  • cd: cambiar de directorio

  • sort: ordenar ficheros

  • mkdir: crear directorios

  • touch: actualiza o crea ficheros

  • rm: elimina archivos y directorios

  • rmdir: borrar directorios vacios

  • mv: sirve para mover o renombrar archivos

  • more: muestra ficheros página a página

  • less: presenta los nombres de los ficheros página a página

  • cat: muestra la identificación de los ficheros de forma continua

  • head: presenta el inicio de un archivo

  • tail: permite ver las últimas líneas de un archivo

  • find: facilita la búsqueda de archivos

  • grep: sirve para encontrar el patrón pasado como argumento en uno o más archivos

  • wc: calcula la cantidad de cadenas y palabras en archivos

Programación de la ejecución de comandos

Son comandos utilizados a su vez para enlazar la ejecución de otras órdenes una vez o varias veces:

  • crontab: ejecuta comandos a intervalos de tiempo regulares

  • at: activa un comando una vez

Paquetes y compresión de ficheros

Son utilidades para archivar, extraer y comprimir ficheros:

  • tar : almacena y extrae ficheros de un fichero archivador

  • gzip : se utiliza para comprimir ficheros

Atributos y permisos

Son órdenes para imprimir atributos y permisos tanto de archivos como de directorios:

  • chown: cambia el propietario de un archivo

  • chgrp: cambia el grupo propietario de un archivo o grupo de archivos

  • chmod: cambia los permisos de accesos a los archivos y directorios

Control de procesos

Son instrucciones para el control de los procesos en ejecución, información del estado de los mismos, terminar procesos, establecer prioridad de programas.

  • ps: informa acerca del estado de los procesos

  • pstree: identifica los procesos en forma de estructura de árbol

  • top: indica los procesos que se están ejecutando en ese momento, mostrando los que más CPU consumen

  • kill: termina un proceso por identificación

  • killall: detiene radicalmente procesos por su nombre

  • nice: ejecuta un programa con la prioridad de planificación modificada

  • renice: altera la prioridad de los procesos en ejecución

Utilización del Sistema

Permite realizar actividades tales como reiniciar y apagar máquina; cerrar sesión de trabajo, uso de memoria e instalar paquetes entre otras tareas:

  • date: muestra fecha y hora actual del sistema

  • cal: muestra el calendario del mes actual

  • uptime: determina el tiempo que lleva encendida la máquina

  • df: informa acerca del espacio libre en los discos

  • du: presenta como resultado cuánto espacio está usado por los directorios y ficheros

  • free: informa acerca de uso de la memoria virtual y el área de intercambio

  • dmesg: muestra los mensajes del núcleo durante el arranque del ordenador

  • reboot: reinicia la máquina

  • halt: apaga el equipo computarizado

  • shutdown : cierra el sistema el sistema operativo

  • init: es el control de inicialización de procesos

  • exit : permite cerrar sesión actual

  • clear: limpia la información de la pantalla

  • bc: es un programa de calculadora

  • man: formatea y muestra las páginas del manual en línea

  • uname: imprime información general del sistema operativo

  • hostname: muestra o establece el nombre del sistema

  • domainname: nombra o establece el nombre de dominio del sistema

  • mkfs: construye un sistema de ficheros de tipo GNU/Linux

  • fdisk: manipular las tablas de particiones de GNU/Linux

  • fsck: permite chequear y reparar sistemas de ficheros

  • mount: monta un sistema de ficheros

  • umount: desmonta un sistema de ficheros

Comandos linux de administración de usuarios

Son instrucciones para las operaciones vinculadas con usuarios, entre ellas se cuenta con adiconar, borrar y cambiar usuario, crear grupo:

  • useradd: adiciona un nuevo usuario

  • userdel: borra la cuenta de usuario

  • passwd: cambia la contraseña de usuario

  • su: permite el cambio de usuario

  • logname: muestra el nombre de usuario

  • id: muestra los datos de identificación del usuario

  • who: muestra los usuarios del sistema

  • last: muestra la información de los últimos usuarios que han usado el sistema

  • groupadd: crea un nuevo grupo de usuarios

  • nail: sirve para enviar y recibir correo de internet

  • pine: es un lector de correo en modo texto

  • mesg: se utiliza para controlar el acceso a escritura a la terminal

  • write: permite enviar mensaje a otro usuario

  • wall: es útil para enviar mensaje a todos los usuarios

  • w: muestra que usuarios están conectados a la máquina y que están haciendo

Operación de la red de computadores

Existe un grupo de comandos para operaciones de red, tales como mostrar estado de la red, configurar red y enviar paquetes entre otras actividades requeridas en la interconexión teleinformática:

  • netstat: se utiliza para mostrar el estado de la red

  • ifconfig: permite configurar interfaz de red

  • nmap: sirve para escanear red

  • ping: se utiliza para enviar paquetes

  • nslookup: consulta servidores de nombres de dominio

  • telnet: realiza una comunicación interactiva con otro host (sitio de hospedaje de información)

  • route: sirve para manipular tabla de enrutamiento IP

Todo lo antes comentado en referencia a los comandos GNU/Linux permite deducir que los comandos sirven para administrar el sistema operativo. El objetivo de ello es mantenerlo actualizado, ya que permiten obtener información acerca del estado general del sistema para poder realizar las configuraciones de los recursos informáticos existentes y de instalar nuevo software y hardware necesario según los requerimientos de la persona o el colectivo para quienes funciona tal estructura.

Ejemplos de uso de comandos GNU/Linux

Estos son algunos de los comandos más indispensables que un usuario común puede necesitar en GNU/Linux.

Comando Ejemplo de uso

-------------- -------------------------------------------------------------------------------------

ls Mostrar lo que contiene /dev: $ ls /dev

Para ver es el contenido de la carpeta actual: $ ls

Listar todos los archivos y carpetas, incluyendo los ocultos:

$ ls -a

Mostrar los carpetas, subdirectorios y archivos, entre otras informaciones: $ ls -l

Mostrar lo anterior y además los archivos ocultos: $ ls -la


cd Se utiliza para cambiar a otra carpeta o directorio:

$ cd /media/sda1

Para salir al directorio inmediatamente superior: cd ..

Si se quiere ir a la raíz del sistema operativo: $ cd /



mkdir crea un directorio desde donde se encuentre el usuario

$ mkdir /home/jose

Si se encuentra en /home, entonces sería:

$ mkdir jose


rm remove: borrar. Borra el archivo o la carpeta que se indique

rm -R /home/jose (la opción –R indica que borre todo el

contenido de jose).


cp copia desde un origen hacia un destino

$ cp hola.cpp /media/sda2

En este caso se copió el archivo desde donde se estaba hacia

un dispositivo de almacenamiento llamado sda2 que estaba situado en /media

mv Permite tanto mover una carpeta o un fichero como cambiarles el nombre.

$ mv /home/jose/hola.cpp /home/maria/chao2.html

otro ejemplo para solo renombrar mv hola.cpp hola2.cpp

y para solo moverlo $mv hola.cpp /home/maria


find Busca archivos o carpetas. Ejemplo encontrar el compilador de C (gcc)

$ find / -name gcc

así lo busca donde sea, carpetas o archivos con ese nombre

$ find /home -name jose

Es un comando para buscar jose (archivos o carpetas) en el directorio /home


clear despeja la pantalla de consola: $clear



ps Muestra estado de los procesos. Una manera general sería:

$ ps aux


kill Elimina el proceso que le indiquemos con su PID:

$ kill -9

donde PID es la identificación del proceso

sudo permite cambiarse a superusuario para ejecutar un comando

$ sudo rm –R /home/carlos

el sistema pedirá la clave supersusuario y en este caso borrará el archivo especificado, suponiendo que no teníamos permiso para eliminar. Es indispensable para comandos tales como apt-get o aptitude de GNU/Linux Ubuntu.


passwd Permite cambiar la contraseña de una cuenta de usuario si ya se conoce la actual: $ passwd juan


su Se utiliza para trabajar como superusuario: $ su root

o como otro usuario: $su juan, en cada caso se debe conocer la contraseña


apt Siglas de advanced packets tool o herramienta avanzada de paquetes para descargarlos en distribuciones tales como Debian o basadas a su vez en éstas:

por ejemplo $ apt-cache search gcc: busca gcc para ver si existe de forma literal o aproximada.

$ apt-get update: actualiza las direcciones donde estén los repositorios de los paquetes.

$ apt-get upgrade: actualiza nuestro sistema con todas las posibles actualizaciones que pudiera haber.

$ apt-get install gcc: buscará en el nuestro índice (creado con update) de dónde tiene que descargarse el paquete, lo hace y posteriormente lo instala.

$ apt-get remove [--purge] krita: elimina el paquete especificado del sistema, en este caso el programa de diseño llamado krita. El argumento “–purge” es para que borre también los ficheros de configuración.


$ apt-get autoremove: borra paquetes que han quedado inservibles tras realizar algún apt-get remove


dpkg En ocasiones hay programas que no están en los repositorios.

En el fondo estas interfaces gráficas están basadas en dpkg. Si queremos instalar un paquete ya descargado mediante consola usaremos el argumento ‘-i’ (i=install): $ dpkg -i nombre_paquete

en vez de –i, se cuenta con la opción ‘-r’ para desinstalr y -r –purge para eliminar los dañados


alien permite transformar un paquete de un gestor de paquetes determinado en otro. Por ejemplo podemos pasar de un .rpm de la distribución Red Hat a .deb de Debian, entre otras soluciones, por ejemplo: $ alien -d xx.rpmtransforma un paquete llamado xx de Red Hat a paquete de Debian.


man Es una ayuda o manual en línea, por ejemplo para saber cómo se utiliza el comando ls: $ man ls


Existen muchos comandos, pero en general, éstos permiten hacer uso como usuario de manera básica en computadores de escritorio.









Actividades complementarias


En un equipo computarizado, en ambiente de cónsola (si no lo está presione la conbinación de teclas simultáneas Ctrl, Alt y F1) transcriba las siguientes instrucciones para luego comentarlas. Para volver al modo gráfico presione la combinación de teclas Ctrl, Alt y F7. A las instrucciones se antecede el signo dólar $; que ya está escrito en el sistema, pues forma parte del indicador del sistema operativo que espera las instrucciones del usuario. Los comandos de práctica son lo siguientes:

$ ls -lat /home

$ clear

$ ls -lat /home

$ mkdir probando_1

$ ls -lat /home

$ ls -at /home/joseadminroot

$ touch probando_1/archivo_de_prueba

$ ls probando_1

$ rm probando_1/archivo_de_prueba

$ rm -R probando_1

$ ls

$ mkdir probando_2

$ ls

$ mv probando_2 probando_3

$ ls

$ cp clastrab.cpp probando_3

$ ls probando_3

$ rm -R probando_3

$ ls

$ ls /media/*

$ date

Al final de la práctica el ejercicio complementario consiste en documentar cada una de las líneas ejecutadas e investigar los mensajes de error que hubiere emitido el sistema GNU/Linux.


Consideraciones parciales del tema


No se pretende que todos los comandos funcionen perfectamente en la máquina del usuario, esto va a depender de la versión del sistema operativo y el tipo de distribución de GNU/Linux. Este texto es libre cada quien podrá adaptarlo a su necesidad, sin embargo siempre será una guía y se espera modificarlo en función de su mejora para que sea lo más sencillo, a su vez también sea lo más completo posible.

Por otra parte se hace énfasis nuevamente en que los comandos permiten al usuario, manejar directamente la máquina ahorrando recursos, muchas veces tiempo y se puede programar con una lista de comandos para optimizar aún más el empleo del computador. Pero en ese caso, es necesario conocer y practicar con los comandos, para eso fue creado este libro.

Para cerrar de manera inconclusa, se solicita al lector su aporte y así engrosar positivamente el avance tecnológico de quienes creen en una evolución que beneficie a muchos, porque cada uno tiene alguna práctica que aportar a partir de esta lectura o quizás alguien tiene sus conocimientos previos. En cualquier caso, es de suma importancia lo que se pueda comprobar y posteriormente añadir a lo presente.


Desde los años noventa el mundo comenzó a experimentar de manera práctica el software libre, tomando control del sistema operativo GNU/Linux, Ello propició que los gobiernos, como en el caso de Venezuela, difundieran su utilización y así se evitó el pago por licencias y se promueve el desarrollo de nuevo software libre, entre otras consecuencias. Además, se puede versionar la programática según las necesidades locales. Específicamente, una modalidad que permite GNU/Linux, es la del uso de comandos escritos para configurar el sistema operativo, realizar algunas actividades de manera más rápida o poder acceder al sistema cuando por alguna razón no se puede entrar en modo gráfico. Además, los comandos acompañan a GNU/Linux desde su creación y se mantienen allí, lo que hace relevante su empleo general de parte de cualquier usuario.