Story Transcript
Practica 2: Comandos Básicos de Linux ¿Qué es el Software Libre? Para que un software sea considerado Libre sus usuarios deben tener derecho a:
Utilizar el programa, sin restricciones, donde quiera, como quiera y para lo que quiera. Estudiar cómo funciona el programa y, si lo desean, a adaptarlo a sus necesidades específicas. Distribuir copias a cualquier persona que deseen. Mejorar el programa, publicar y distribuir sus mejoras al público
El software libre no se debe asociar a “software gratuito” ya que conservando los derechos mencionados el software libre también puede ser comercializado.
Proyecto GNU Iniciado por Richard Stallman en el año 1984 con el objetivo de crear un sistema operativo completamente libre. El nombre «GNU» (que significa «ñu» en inglés) es un acrónimo de “GNU No es Unix”.
GNU/Linux GNU Linux es un sistema operativo que controla los recursos de una computadora y la interacción del usuario con ésta. Permite a uno o varios usuarios ejecutar sus programas y controla los dispositivos externos, como cintas, impresoras, terminales, etc. Por la forma como maneja los recursos de la máquina y la política de tiempo compartido entre procesos, GNU Linux es un sistema operativo multiusuario. GNU Linux es un clon del sistema operativo Unix, inspirado en MINIX, de libre distribución, diseñado originalmente para computadores 80386 y 80486. El sistema operativo GNU Linux fue desarrollado por Linus Torvalds en la Universidad de Helsinki Finlandia en 1991. La versión 0.01 fue liberada por Linus en Septiembre de ese año.
Historia En 1988 Linus Torvalds fue admitido en la Universidad de Helsinki, ese mismo año el profesor Andrew Tanenbaum saca a la luz el S.O. Minix con propósitos didácticos. A la edad de 21 años, con 1 año de experiencia programando (en C), ya conocía lo suficiente del sistema operativo Minix como para tomar prestadas algunas ideas y empezar un proyecto personal. Basándose en Design of the Unix Operating System, crearía una implementación que ejecutará cualquier tipo de programa, pero sobre una arquitectura de computadores compatibles, IBM/PC. Este proyecto personal desembocó el 5 de octubre de 1991 con el anuncio de la primera versión de Linux capaz de ejecutar BASH (Bourne Again Shell) y el compilador conocido como GCC (GNU Compiler Collection).
En enero de 1992 se adoptó la Licencia Pública General (GPL) para Linux. Ésta añade libertades de uso a Linux totalmente opuestas a las del software propietario, permitiendo su modificación, redistribución, copia y uso ilimitado.
Características
Tiempo Compartido Multiusuario Multitareas Núcleo Codificado en Lenguaje de Alto Nivel o Linus Torvalds escribió el núcleo de GNU Linux en lenguaje C. Por esta razón es muy fácil trasladar el sistema operativo a cualquier plataforma. Originalmente diseñado para Programadores
Componentes del sistema GNU/Linux En la Figura 1. Componentes del sistema GNU/Linux, se pueden observar los componentes básicos del sistema GNU/Linux:
Hardware
Kernel o Núcleo
Terminal o conchas
Programas de Aplicación
Figura 1. Componentes del sistema GNU/Linux
Kernel o Núcleo Es el corazón del sistema operativo. Es el encargado de que el software y el hardware puedan trabajar juntos. Este es un proceso que siempre se encuentra en memoria principal
Las funciones más importantes son:
Administración de la memoria para todos los programas y procesos en ejecución. Administración del tiempo de procesador para los programas y procesos en ejecución. Es el encargado de que podamos acceder a los periféricos de nuestro computador de una manera cómoda.
Terminal o Conchas (shells) Los interpretadores de comandos, o conchas, conforman la interfaz mediante la cual los usuarios pueden comunicarse con el sistema operativo y ejecutar sus requerimientos. Estos son programas comunes que se encargan de leer, interpretar y ejecutar las instrucciones dadas por los usuarios.
Distribuciones El movimiento GNU ha generado una gran cantidad de aplicaciones y programas que realizan diferentes tareas y están dedicadas a diferentes propósitos. La compilación de aplicaciones, núcleo e instaladores conforman lo que se conoce como distribución. Existen distribuciones que están soportadas comercialmente, como Fedora (Red Hat), openSUSE (Novell), Ubuntu (Canonical Ltd.), Mandriva, y distribuciones mantenidas por la comunidad como Debian y Gentoo. Aunque hay otras distribuciones que no están relacionadas con alguna empresa o comunidad, como es el caso de Slackware. 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. 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.
Archivos y Directorios Un archivo es un conjunto de información al que se le ha asignado un nombre. Por ejemplo, un documento, una imagen o un programa. Un directorio es una colección de archivos que sirve para ordenarlos o agruparlos.
Arbol de Directorios en GNU/Linux Existe una jerarquía de directorios los cuales organizan las utilidades y herramientas del sistema operativo GNU/Linux (todas sus ramas comienzan desde /). En la Figura 2. Jerarquía estándar de archivos del sistema GNU/Linux se puede observar dicha estructura.
Figura 2. Jerarquía estándar de archivos del sistema GNU/Linux
Caminos (Path) Los archivos se pueden referenciar de acuerdo a su ubicación en el árbol de directorios. Indicando la secuencia de directorios que se deben pasar para llegar hasta donde está el archivo. Esta secuencia es conocida como ruta de acceso o camino (en inglés, path). El nombre de la ruta de acceso es considerado el “nombre completo” que se le da a un archivo o directorio. En algunas ocasiones, sólo con el nombre no será suficiente para localizar un archivo o directorio, necesitamos el nombre de la ruta.
Comandos Básicos Entrada al sistema La unica forma de tener acceso a un sistema GNU Linux es a través de una cuenta de usuario. Se debe conocer el login o nombre de la cuenta y el password o clave de acceso. Luego de introducir el login y el password el sistema validará la información suministrada para dar acceso o no al usuario logueado.
Interpretadores de comandos Las conchas o shells son los programas de GNU Linux que interpretan los comandos suministrados por el usuario; estas se presentan como una interfaz interactiva basada en texto. Básicamente existen dos vertientes de interpretadores de comandos, los C shell y los Bourne Shell. La diferencia entre ambos es el estilo que se utiliza para las funciones avanzadas como los son la definición de variables de ambiente, los scripts y la sintaxis en el lenguaje. El prompt por omisión, que aparece en pantalla depende del tipo de concha que se utilice. Si tenemos una concha del tipo csh, el prompt para un usuario será %, para las conchas sh o ksh tendremos $, el prompt # está reservado para el administrador del sistema o root. Ejemplo localhost/$ localhost/#
Comandos simples Los comandos (órdenes) más simples consisten en una palabra: $ $ $ $
date Aparece la cal Aparece el hostname Aparece uptime Aparece el
fecha y la hora calendario del mes el nombre del computador tiempo que tu computador lleva encendido
Pero a veces no es suficiente con una palabra. Entonces escribimos órdenes con varias palabras separadas por espacios: el comando y los argumentos u opciones. La primera palabra será el comando y las siguientes le darán información adicional: $ cal Agosto 2012 indicado
Aparece el calendario del mes y del año que le hemos
$ man Es una interfaz de los manuales de referencia de los comandos. Su sintaxis es la siguiente: man espacio comando.
Ejemplo: $ man
date
Muestra el manual del comando date.
Para salir de los manuales de comandos, se debe pulsar la tecla Q y regresaremos al prompt.
Moviéndose entre directorios Supongamos que queremos movernos al directorio /etc y queremos examinar los archivos que allí se encuentran. Para ello utilizaremos las herramientas cd y pwd: Vemos en que directorio estamos parados actualmente: merce:~> pwd /home/luis merce:~>
Vemos que estamos en nuestro directorio hogar (/home/luis). Pruebe moviendose a /etc utilizando una ruta absoluta. merce:~> cd /etc merce:/etc>
Y finalmente pedimos un listado de los archivos que están allí con ls (Se muestra sólo un listado parcial) merce:/etc> ls
Miscellaneous default.gif hec.html.bak index.html index.shtml cgi-bin hec.html hec01.html index.html. merce:/etc>
Veamos de nuevo en qué directorio estamos trabajando merce:/etc> pwd /etc merce:/etc>
Hay un directorio llamado apache2 dentro de /etc cuando usamos ls (la ruta completa del directorio es /etc/apache2). Podemos ir allá (desde cualquier sitio) utilizando una ruta absoluta: merce:~> cd /etc/apache2/ merce:/etc/apache2>
Pero si aún estamos parados en /etc podemos entrar al directorio apache2 utilizando una ruta relativa (en este caso a etc) merce:/etc> cd apache2/ merce:/etc/apache2>
Estamos trabajando en /etc/apache2. Supongamos que queremos retroceder a /etc sin utilizar una ruta absoluta. Podemos hacerlo (para este y cualquier directorio) con la siguiente instrucción merce:/etc/apche2l> cd .. merce:/etc>
La notación ".." significa el nivel anterior, mientras que la notación "." significa el directorio actual. Se pueden mezclar tantos niveles de ".." como se quiera (con esto regresamos desde /etc/apache2 a / utilizando una ruta relativa). merce:/etc/apache2l> cd ../../ merce:/>
Ahora regresemos a nuestro directorio hogar merce:/etc> cd /home/usuario merce:~>
Manejo de Archivos Listado de archivos y directorios ls Muestra una lista de los archivos del directorio. ls –a Despliega una lista de los archivos pero además muestra los archivos de configuración que suelen llamarse “archivos escondidos" cuyos nombres comienzan con el caracter punto (.).
ls –l Despliega una lista detallada de los archivos y directorios. Muestra los permisos, el número de enlaces, propietario, tamaño en bytes y cuando ocurrió la última modificación para cada uno de los archivos. ls –F Muestra una lista de archivos agregando una diagonal (/) al final de los nombres de directorio; un asterisco (*) si se trata de un archivo ejecutable; un arroba (@) si el archivo es un enlace simbolico y un igual (=) si el archivo es un socket. Ejemplo: % ls Miscellaneous default.gif hec.html.bak index.html index.shtml cgi-bin hec.html hec01.html index.html.N % ls -a . cgi-bin hec.html.bak index.html.N .. default.gif hec01.html index.shtml Miscellaneous hec.html index.html % ls -l total 64 drwxr-sr-x 2 hector ciencias 512 Apr 19 17:50 Miscellaneous drwxr-sr-x 2 hector ciencias 512 Apr 19 17:50 cgi-bin -rw-r--r-- 1 hector ciencias 2085 Dec 12 1996 default.gif -rw------- 1 hector ciencias 2645 Feb 27 1997 hec.html -rw------- 1 hector ciencias 1787 Feb 27 1997 hec.html.bak -rw------- 1 hector ciencias 1368 Feb 27 1997 hec01.html -rw-r--r-- 1 hector ciencias 860 Dec 12 1996 index.html -rw-r--r-- 1 hector ciencias 798 Oct 9 1997 index.html.N lrwxrwxrwx 1 root ciencias 10 Apr 25 15:44 index.shtml -> index.html
Creación y Eliminación de Directorios mkdir Crea un directorio vacio Los siguientes ejemplos ilustran un poco mejor el uso de mkdir (usando una ruta relativa, una ruta absoluta y un atajo) kumar:~> mkdir documentos (ruta relativa, lo crea en donde se encuentren ahora) kumar:~> mkdir /home/luis/documentos2 (ruta absoluta) kumar:~> mkdir ~luis/documentos3 (atajo ~) kumar:~> mkdir prueba kumar:~> rmdir Elimina un directorio si está vacío, sino no lo elimina kumar:~> rmdir documentos kumar:~> rmdir /home/foto/documentos2 kumar:~> rmdir ~foto/documentos3 kumar:~> rm –r directorio Elimina un directorio y todo su contenido
Copiar Archivos cp archivo_origen archivo_destino Copia un archivo origen a un archivo destino
cp archivo1 archivo2 Copia el contenido del archivo archivo1 en el archivo archivo2. cp arch1 arch2 .... dir1 Cada archivo de la lista será copiado en el directorio dir1. El directorio dir1 debe estar creado con anterioridad. cp -r dir1 dir2 Copia todo lo que esté contenido en el directorio dir1 al directorio dir2. Si dir2 no existe, cp lo creará. cp -i archivo1 destino Si la opción -i es especificada, el cp preguntará si sobreescribe “destino" en caso de que este ya exista. cp -f archivo1 destino La opción -f especifica que se debe sobreescribir todo sin preguntar. Mover Archivos mv [ -if ] _le1 [_le2 ...] destino Este comando mover_a el contenido del archivo _le1 a “destino". Si “destino" es un directorio, mv lo copiará dentro con el mismo nombre que tenía en su ubicación original. Si “destino" está en el mismo directorio que _le1 mv funciona cambiando el nombre. Las opciones -i y -f funcionan igual que en cp Borrar Archivos rm nombre del archivo Elimina un archivo Creando Archivos 1. Usando el comando touch. Touch crea archivos vacios o actualiza la fecha de los archivos existentes. La sintaxis es touch archivo. 2. Usando el comando cat. Cuando usted quiere crear un archivo y no quiere usar un editor puede hacer lo siguiente kumar:~> cat > prueba (crea el archivo) Comience a escribir cualquier texto Esta es una prueba del uso de cat como un editor simple. Espero que sea util. Ahora presione simultáneamente las teclas control + D (^D) para finalizar la edición kumar:~> ls foto/ prueba kumar:~> cat prueba (visualiza lo que acaba de escribir) Esta es una prueba del uso de cat como un editor simple. Espero que sea util. kumar:~> Manejo de Permisos GNU Linux proporciona cuentas para múltiples usuarios, asignando a cada cuenta un directorio hogar. El esquema de seguridad de los archivos está estructurado en tres clases de usuarios. El dueño (u) del archivo, el grupo (g) al que pertenece el dueño, y los otros(o) usuarios que no son el dueño o
no pertenecen a su grupo. (La letra “a" se utiliza para representar a todos los usuarios: dueño, grupo y otros). Cada archivo en GNU Linux posee un atributo para identificar el dueño y el grupo. Además, posee una serie de bits (9 en total) para definir la permisología de lectura, escritura y ejecución del archivo, como se muestra en la Figura 3. Organización de los bits de permisos
Figura 3. Organización de los bits de permisos
Examinemos en detalle el siguiente archivo:
Aqui cada letra significa lo siguiente: · d (directory). El archivo es o no un directorio. La letra “d” significa que es un directorio, el guión “-” significa que es un archivo · r (read). El archivo puede leerse · w (write). El archivo puede modificarse, escribirse. · x (executable). El archivo puede ejecutarse Veamos que significa cada uno de los renglones de la permisología Permiso del propietario: Estas 3 letras dicen qué permisos tiene el propietario con respecto a un archivo o directorio de su propiedad. Esto es, que puede leerlo, escribirlo, ejecutarlo (archivo) o buscar en él (directorio). Permisos de grupo: Permiten compartir un archivo con un grupo de usuarios. Estas 3 letras dicen que permisos tienen los archivos para los usuarios que pertenecen al mismo grupo del archivo. Permisos para otros usuarios: Estas 3 letras dicen qué permisos tienen otros usuarios con respecto al archivo o directorio. Útil para resguardar la privacidad del archivo.
Cambiar los permisos a un archivo o directorio chmod permisos archivo Comando para cambiar los permisos a un directorio o archivo Como especificar los permisos Observe la figura
Es decir, cada letra correspondiente a una parte del permiso (r,w,x) puede estar activada o no (en 1 ó 0) para formar un número binario, el cual es convertido luego a número decimal. Como son tres posiciones para cada permiso, el mayor número decimal es 7, lo que indica que tiene todos los permisos: lectura, escritura y ejecución, es decir, todos los bits están en 1. No es correcto darles la permisología 777 a los archivos o directorios. Por ejemplo para ponerle permiso de lectura para el usuario, lectura y escritura para el grupo y ningún permiso a otros debemos escribir kumar:~> chmod 460 prueba kumar:~> ls -l total 2 drwx------ 10 luis users 1024 Sep 27 17:22 foto/ -r--rw---- 1 luis users 78 Sep 29 09:13 prueba kumar:~>
Actividades 1. Investiga cuál es la versión estable del kernel de Linux 2. Investiga al menos dos distribuciones de Linux y cuáles son sus características 3. Realizar man a los siguientes comandos, tomar nota de las diferentes formas de utilizarlos: a. cp b. ls c. cd d. df 4. Lista todos los archivos que se encuentran en /etc 5. Lista todos los archivos que se encuentran ocultos en / 6. Lista todos los archivos que se encuentran en su home de usuario (tiene que conseguir quien es el usuario con el cual se logueo) 7. Ubiquese en la ruta /home/usuario (Recuerde que el usuario depende del que ud. esté usando en el momento que se logueo), cree la siguiente estructura de directorios
8. Estando en /home/alumno, crea dentro del directorio AlumnosInf los archivos alu1.txt, fotoalu1.jpg, alu2.txt, fotoalu2.jpg, utilizando una única orden. Puedes elegir hacerlo con rutas absolutas o relativas. 9. Ahora estás situado en el directorio AulaOpt, y quieres cambiar el directorio de trabajo actual a NotasOpt. Utiliza rutas relativas. 10. Cree dentro del directorio NotasInf un archivo, llamelo archivo1 y escriba dentro de él “Hola Linux” 11. Copie el archivo1 al directorio ProfesoresTur con el nombre archivo2 12. Mueva archivo1 al directori AulaOpt 13. Borre el directorio AulaTur 14. Borre el directorio ProfesoresTur y todo lo que contenga 15. Cree otro archivo en Informatica llamelo prueba 16. Al archivo prueba que acaba de crear cambiele los permisos a 547, y especifique que permisos se le está otorgando a este archivo prueba