PRÁCTICAS DE SISTEMAS OPERATIVOS I

PRIMERA SESIÓN


  1. Configuración del entorno de trabajo.

    Si no se configura bien el entorno de trabajo, se rendirá mucho menos en la realización de las prácticas. Primero hay que configurar el terminal. Para ello, hay que poner de acuerdo al programa de terminal que tenéis instalado en el aula de informática con la configuración que tiene el servidor donde se realizarán las prácticas.
    Antiguamente los servidores eran accedidos mediante un dispositivo denominado terminal. Fundamentalmente constaban de un monitor y un teclado y la suficiente electrónica para recoger los caracteres tecleados y mostrar otros por la pantalla. Los caracteres recogidos se enviaban a través de una línea de conexión (normalmente serie) hasta el servidor y, la respuesta de este llegaba al terminal por la misma línea.
    Actualmente, el esquema es diferente. En lugar de un terminal se dispone de PCs de propósito general y un programa que emula el comportamiento de los antiguos terminales. La conexión en lugar de hacerse a través de una línea dedicada, se realiza por Internet y siguiendo un protocolo, que normalmente para conexiones de texto será SSH, la versión con transmisión codificada del viejo TELNET.

    Programas para PC emuladores de los distintos modelos de terminales existen muchos. Debéis usar aquel que más os guste y que mejor sepáis configurar. Aquí se os dan tres ejemplos que os pueden servir de guía para configurar cualquier otro programa, aunque os recomiendamos que uséis el primero, pues usa SSH en lugar de TELNET.
    1. PuTTY (SSH) [Recomendado]
    2. Programa TELNET por defecto de Windows NT 4.x y sucesivos
    3. Wyse Term (Algunas aulas de informática)

    ¡Atención! No se atenderán dudas relativas a la presentación, falta de caracteres en español, descolocación de las pantallas del editor de quienes utilicen programas emuladores distintos o no los configuren del modo antedicho. Trabajar con una mala configuración entorpece la programación.

     Si usáis Linux, no necesitáis ningún programa externo. Os basta con abrir un terminal y poner:
                ssh -l vuestro_login_de_encina encina.fis.usal.es
    La huella digital que os debe poner la primera vez que os conectéis es:
    4D:FE:15:17:09:18:41:30:2E:0A:E4:38:73:42:45:29
    Verificar esta huella sirve para evitar ataques al protocolo de seguridad encriptado de SSH.

    De trabajar en Linux, tenéis además la ventaja de que las órdenes que veamos las podéis probar en el servidor o en el propio Linux, que también es UNIX. Además, para trabajar en casa, lo mejor es que os instaléis un Linux del mismo tipo que hay en las aulas (Ubuntu).

    Encina usa la codificación iso8859-1 para tratar con los caracteres propios del español (ñ, acentos, aperturas de interrogación y exclamación, etc.). Vuestro Linux, sin embargo, usa UTF-8, que es mejor, como ya se vio en Computadores I. Para que podáis ver bien estos caracteres en el terminal de Linux, cambiad la codificación en el menú de "Preferencias", "Codificación", "Europeo occidental (iso8859-1)"

  2. Conexión con el servidor.

    El servidor que usaremos para hacer las prácticas se llama en Internet encina.usal.es. En el programa emulador que uséis, o en el propio ssh, debéis indicar el nombre del servidor, como se indicó en el apartado anterior, para conectaros. Teclead en el sitio apropiado encina.usal.es. Si no lograrais conexión, probad con la dirección IP de encina, pues puede que no funcione el servidor de nombres de la universidad. Teclead en ese caso: 212.128.144.28.
    Os tiene que aparecer una pantalla parecida a esta:
    
    
    
                    ######  #    #   ####      #    #    #    ##
                    #       ##   #  #    #     #    ##   #   #  #
                    #####   # #  #  #          #    # #  #  #    #
                    #       #  # #  #          #    #  # #  ######
                    #       #   ##  #    #     #    #   ##  #    #
                    ######  #    #   ####      #    #    #  #    #
    
                     ########  UNIVERSIDAD DE SALAMANCA ########
                       Departamento de Informática y Automática
                                 Facultad de Ciencias
    
     "Este ordenador sólo puede ser utilizado por personas debidamente autorizadas"
    
    
    login:
    
                
    Teclead ahora vuestro login, intro, y contraseña.

    En el caso de que estéis usando el programa TELNET de Windows, aumentad el tamaño de la ventana de modo que no queden barras de desplazamiento ni horizontales ni verticales en la ventana del terminal.

  3. ¿Quién soy? ¿Dónde estoy?

    Una vez os habéis conectado correctamente al servidor, encina os va a recibir con un mensaje parecido a este:
    Last login: Sun Aug 14 20:29:20 2011 from avellano.fis.us
    Sun Microsystems Inc.   SunOS 5.10      Generic January 2005
    <gyermo@ENCINA>/usuarios/profes/gyermo$ 
    
    En la primera línea os dice cuándo fue la última vez que os conectasteis y desde qué ordenador. En la siguiente, el servidor se presenta y nos dice la versión del sistema operativo que tiene instalado (SunOS 5.10, en el caso del ejemplo).

    Acto seguido, se queda esperando a que le demos órdenes y nos lo indica mediante el prompt o indicador. Vuestro indicador será seguro distinto del del ejemplo. Este que veis ha sido reconfigurado para que dé más información: usuario, máquina y directorio donde nos encontramos. Aprenderéis cómo hacerlo más adelante.

    Sin embargo, vosotros os encontráis como quien se despierta en una isla desierta y no recuerda cómo llegó allí, ni siquiera recuerda quién es. Pues se lo preguntamos al servidor:
    <gyermo@ENCINA>/usuarios/profes/gyermo$ whoami
    gyermo
    <gyermo@ENCINA>/usuarios/profes/gyermo$ 
    
    Teclead la orden toda junta, en minúsculas y os pondrá quiénes sois, esto es, vuestro identificador de usuario dentro de la máquina. A continuación, el servidor se queda esperando a que le deis más órdenes.

    Si os equivocáis al teclear y aún no habéis pulsado Intro, basta con que rectifiquéis con la tecla de retroceso, como es costumbre. Incluso podéis usar las flechas del cursor. Si ya habéis pulsado Intro, podéis revisar y cambiar las órdenes anteriores con las flechas de arriba y abajo.

    Los usuarios de UNIX se agrupan en grupos para poder organizarse mejor. Preguntemos cuál es nuestro grupo:
    <gyermo@ENCINA>/usuarios/profes/gyermo$ groups
    profes
    
    Cada usuario, y cada grupo, tiene un número identificador propio, algo asó como su DNI:
    <gyermo@ENCINA>/usuarios/profes/gyermo$ id
    uid=108(gyermo) gid=101(profes)
    
    Vemos que el identificador del usuario gyermo en esta máquina es el 108 y el del grupo profes es el 101.

    Una vez hemos resuelto la importante cuestión de quiénes somos (a qué hemos venido no hace falta responderla: es evidente...), pasemos a ver dónde estamos:
    <gyermo@ENCINA>/usuarios/profes/gyermo$ hostname        
    encina
    
    Aunque para este viaje es evidente que no necesitamos estas alforjas. Hace tiempo que sabemos que estamos en encina. Pero, dentro de encina, que es muy grande, ¿dónde nos encontramos?
    <gyermo@ENCINA>/usuarios/profes/gyermo$ pwd
    /usuarios/profes/gyermo
    
    pwd significa print working directory. No es nuevo para vosotros que el ordenador organiza sus ficheros en una estructura de carpetas (directorios), unas dentro de otras, formando lo que se denomina el sistema de ficheros.

    Sistema de ficheros


    Una ruta (o path) nos permite localizar un fichero o directorio concreto dentro del sistema se ficheros. Así, la ruta /usuarios/profes/gyermo nos dice que nos encontramos en una carpeta (o directorio) llamada gyermo que se encuentra dentro de otra llamada profes, dentro de otra llamada usuarios, dentro de la carpeta principal o directorio raíz. En UNIX no existen las letras de las unidades, por lo que las rutas no las contienen. El directorio de trabajo es aquel directorio (o carpeta) en el que estamos situados en este momento.

    Existe dos tipos de rutas:
    La orden pwd nos ha dado una ruta absoluta. Existen dos abreviaturas que pueden incluirse como si fueran un directorio dentro de una ruta. Son:
  4. ¿Quién está conmigo?

    Para saber si hay alguien más trabajando en el servidor, usamos la orden who:
    <gyermo@ENCINA>/usuarios/profes/gyermo$ who
    gyermo     pts/1        ago 16 17:36    (mirto.fis.usal.es)
    
    Siendo agosto, la hora de los toros, en plena canícula, es normal que el servidor esté más solo que la una. En clase, podréis observar la lista de las personas que se encuentran en esos momentos conectados y el nombre del ordenador desde dónde se conectan. Pero existe otra orden que nos da algo más de información para satisfacer esa vocación de periodista del corazón que todos tenemos dentro:
    <gyermo@ENCINA>/usuarios/profes/gyermo$ finger
    Login       Name               TTY         Idle    When    Where
    gyermo          ???            pts/1          4 Tue 17:36  mirto.fis.usal.es   
    
    La orden finger nos da el nombre de usuario, el nombre real, el identificador del terminal, el tiempo en minutos que lleva inactivo el usuario, cuándo se conectó y desde dónde.

    Además, si añadimos un nombre, nos dará información acerca de las cuentas que coincidan con ese nombre:
    <gyermo@ENCINA>/usuarios/profes/gyermo$ finger lalonso
    Login name: lalonso                     In real life: Director Depto
    Directory: /usuarios/profes/lalonso     Shell: /bin/ksh
    Last login Wed Feb 10, 2010 on pts/5 from lilo3.fis.usal.
    No unread mail
    No Plan.
    
    Una vez conocemos quién está con nosotros en el servidor, podemos intentar comunicarnos con él. Nosotros os recomendamos que vayáis donde se encuentre y habléis en vivo y en directo. Es un protocolo maduro, más depurado e interactivo. Pero, en su defecto, disponéis de la orden write. Es complicado poner un ejemplo de esto estando solo. Hablaremos solos en este ejemplo, aunque dicen que es síntoma de locura. Vosotros no os arriesguéis y probadlo con un compañero de clase. En el ejemplo, nos vamos a conectar desde otra ventana otra vez con el servidor. Desde la ventana de la primera conexión, podemos ver que ahora estamos dos, dos yoes, vamos:
    <gyermo@ENCINA>/usuarios/profes/gyermo$ who
    gyermo     pts/1        ago 16 17:36    (mirto.fis.usal.es)
    gyermo     pts/2        ago 16 18:36    (mirto.fis.usal.es)
    
    Nos escribimos a nuestro otro yo (el situado en el terminal pts/2 en el ejemplo):
    <gyermo@ENCINA>/usuarios/profes/gyermo$ write gyermo pts/2
    Hola...
    COmo andamos?
    <CTRL-D>
    
    En vuestro caso no hace falta que pongáis el terminal de la persona a la que queráis mandar el mensaje. El mensaje puede tener todas las líneas que queráis. Para que el ordenador sepa que habéis acabado, pulsad al inicio de la línea las teclas CTRL y D. Esto es lo que recibió mi otro yo:
            Message from gyermo on encina (pts/1) [ mar ago 16 18:49:54 ] ...
    Hola...
    COmo andamos?
    <EOT>
    
    Este mensaje aparece de golpe en el terminal de la otra persona, por lo que, a veces, puede resultar molesto. Le podemos decir al servidor que no queremos que nos molesten con mensajes, mediante la orden mesg n. Si, más tarde, deseamos volver a permitirlos, teclearemos mesg y.

    Existe otra orden que permite a dos usuario escribirse interactivamente (al modo del un chat). Se llama talk, pero no suele estar activada por defecto en los servidores de hoy en día.
  5. ¿Qué puedo hacer?

    Hay infinidad de órdenes que podemos pedir al sistema que ejecute. Vamos a centrarnos en una para ir sintiendo el modo en que se trabaja en una máquina UNIX. La orden elegida es de las más usadas: ls. Adelante con ella:
    <gyermo@ENCINA>/usuarios/profes/gyermo$ ls
    backup                        PRIVADO
    bin                           public_html
    chgrp.2                       SESION3
    gyermo-encina-2005-03.tar.gz  SESION6
    mail                          TEMP
    MANTEJO
    
    La orden ls muestra el contenido (ficheros y directorios) del directorio de trabajo. Esta cuenta es más bien viejuna, por lo que tiene bastantes ficheros y directorios. Vuestra cuenta seguro que no es tan interesante. De hecho, si en vuestro directorio no hay nada, ls, como es costumbre en UNIX, no imprimirá nada. Si todo va bien, no se avisa de ningún modo al usuario. Algunas diferencias entre el tratamiento de ficheros en UNIX y Windows (algunas ya comentadas) son las siguientes:
    1. El separador en las rutas es "/" en UNIX y "\" en Windows
    2. UNIX sí que distingue entre mayúsculas y minúsculas en el nombre de directorios y ficheros
    3. Si el nombre de un fichero o directorio empieza por "." (un punto), el fichero o directorio es oculto y no aparecerá en los listados hechos con ls por defecto

    Los ficheros ocultos existen solo para organizarnos mejor. De hecho, es muy fácil verlos. Lo hacemos con ls -a:
    <gyermo@ENCINA>/usuarios/profes/gyermo$ ls -a
    .                             .ssh
    ..                            .sunw
    .bash_history                 .Xauthority
    .cshrc                        backup
    .gconf                        bin
    .gconfd                       chgrp.2
    .gnome                        gyermo-encina-2005-03.tar.gz
    .gnome2                       mail
    .gnome2_private               MANTEJO
    .login                        PRIVADO
    .mozilla                      public_html
    .pinerc                       SESION3
    .profile                      SESION6
    .recently-used                TEMP
    .sh_history
    
    Seguro que ahora sí que os sale algún fichero... El hecho de añadir opciones, como en este caso -a, a las órdenes de UNIX, es muy típico. Estas opciones hacen que el comportamiento de la orden varíe un poco.

    Podemos pedir a ls que nos muestre un fichero o directorio concreto. Si es un fichero, lo muestra tal cual:
    <gyermo@ENCINA>/usuarios/profes/gyermo$ ls chgrp.2
    chgrp.2
    
    Si es un directorio, nos muestra su contenido:
    <gyermo@ENCINA>/usuarios/profes/gyermo$ ls bin
    Arbol         borrarIPCs    make          matarIPCs     tocar
    Arbol_dominO  c89           mantejo       policia
    
    Y si es algo desconocido, se produce un error:
    <gyermo@ENCINA>/usuarios/profes/gyermo$ ls VillaRatOn
    VillaRatOn: No such file or directory
    
    Las rutas que se indican pueden ser absolutas o relativas.

    Movámonos un poco. Para movernos (cambiar el directorio de trabajo), se usa la orden cd, que son las siglas de change directory:
    <gyermo@ENCINA>/usuarios/profes/gyermo$ pwd
    /usuarios/profes/gyermo
    <gyermo@ENCINA>/usuarios/profes/gyermo$ cd ..
    <gyermo@ENCINA>/usuarios/profes$ pwd
    /usuarios/profes
    
    Nos hemos movido al directorio padre del directorio de conexión con los dos puntos (..). Podríamos haber conseguido el mismo efecto con cd /usuarios/profes

    Curioseemos... ¿qué más profes habrá?
    <gyermo@ENCINA>/usuarios/profes$ ls   
    abg       enrique   gyermo    lalonso   mara      roberto   susana
    adeluis   evacc     inavia    lancho    mjpm      rodrigo
    angelica  figue     jcotobal  luis      nines     sergio
    
    Vosotros, en vuestra cuenta, veréis qué otros alumnos hay (al menos, sus directorios de conexión). Si nos perdemos, podemos volver a nuestro directorio de conexión (a nuestra casa), simplemente tecleando cd:
    <gyermo@ENCINA>/usuarios/profes$ cd
    <gyermo@ENCINA>/usuarios/profes/gyermo$ 
    
    Probad a crear un directorio nuevo en vuestra cuenta. La orden es mkdir:
    <gyermo@ENCINA>/usuarios/profes/gyermo$ mkdir PRUEBA
    <gyermo@ENCINA>/usuarios/profes/gyermo$ ls
    backup                        PRIVADO
    bin                           PRUEBA
    chgrp.2                       public_html
    gyermo-encina-2005-03.tar.gz  SESION3
    mail                          SESION6
    MANTEJO                       TEMP
    <gyermo@ENCINA>/usuarios/profes/gyermo$ cd PRUEBA
    <gyermo@ENCINA>/usuarios/profes/gyermo/PRUEBA$ ls
    <gyermo@ENCINA>/usuarios/profes/gyermo/PRUEBA$ cd ..
    
    Si no os gusta cómo os ha quedado, lo borráis con rmdir, pero recordad que debe estar completamente vacío, incluso de ficheros ocultos:
    <gyermo@ENCINA>/usuarios/profes/gyermo$ rmdir PRUEBA
    <gyermo@ENCINA>/usuarios/profes/gyermo$ ls
    backup                        PRIVADO
    bin                           public_html
    chgrp.2                       SESION3
    gyermo-encina-2005-03.tar.gz  SESION6
    mail                          TEMP
    MANTEJO
    
  6. Ejercicio

    Desde vuestro directorio de conexión, tratad de moveros a los siguientes directorios, adivinad a dónde habéis llegado y comprobadlo con pwd:
    1. /usr/bin
    2. usr/bin
    3. ..
    4. /usr/./bin
    5. /usr/.bin
    6. ./.././..
    7. /./.././..
  7. ¿Qué hay de lo mío?

    Si se os pasa por la cabeza intentar curiosear en los ficheros de otro usuario, la cosa no es tan fácil. Veamos el directorio de conexión del usuario p1777000. finger nos viene al pelo:
    <gyermo@ENCINA>/usuarios/profes/gyermo$ finger p1777000
    Login name: p1777000                    In real life: GYERMO GONZALEZ TALAVAN   
    Directory: /home/p1777000               Shell: /bin/bash
    Last login Mon May 24, 2010 on pts/1 from tejo.fis.usal.e
    No unread mail
    No Plan.
    
    Su directorio de conexión aparece a continuación de la etiqueta Directory: /home/p1777000. Vamos a intentar entrar en él:
    <gyermo@ENCINA>/usuarios/profes/gyermo$ cd /home/p1777000 
    ksh: /home/p1777000: permission denied
    
    Nuestro gozo en un pozo. Nos dice el servidor que no tenemos permisos. En un servidor UNIX, los dueños de ficheros y directorios deciden quiénes pueden hacer qué cosas con ellos. Podemos ver los permisos que tiene un fichero o directorio con la opción -l de la orden ls:
    <gyermo@ENCINA>/usuarios/profes/gyermo$ ls -l /home/p1777000
    /home/p1777000: Permission denied
    total 8
    
    ¡Ups! No nos da permiso porque ls, al ser un directorio, trata de ver lo que hay dentro y no tenemos permisos. Debemos pedirle que nos dé la información del propio directorio y no de su contenido. Lo logramos con la opción -d:
    <gyermo@ENCINA>/usuarios/profes/gyermo$ ls -ld /home/p1777000
    drwx------  24 p1777000 usuarios    4096 feb 24  2010 /home/p1777000
    
    ls nos da mucha información del fichero/directorio:
    1. El primer carácter nos dice qué tipo de objeto es. "d" significa que es un directorio, "-", que es un fichero. Y hay más tipos, que iréis aprendiendo.
    2. Los nueve siguientes caracteres nos muestra los permisos que tiene el objeto. Se dividen en tres partes, de tres caracteres cada una:
      1. Los tres primeros son los permisos que tiene el dueño del fichero
      2. Los tres siguientes muestran los permisos que tiene el grupo al que pertenece el fichero
      3. Los tres últimos son los permisos que tienen el resto de usuarios
      Cada una de las tres letras, indican un tipo de permiso. Un guion (-) quiere decir que no se tiene permiso. El significado de las letras depende del tipo de objeto. Para los ficheros:
      1. r: permiso para leer el fichero (read)
      2. w: permiso para escribir en el fichero (write)
      3. x: permiso para ejecutar el fichero (execute)
      Sin embargo, si se trata de un directorio, el significado es:
      1. r: permiso para ver qué ficheros hay dentro del directorio
      2. w: permiso para borrar o renombrar o mover los ficheros que hay dentro del directorio
      3. x: permiso para moverse al directorio con la orden cd que hemos visto
      Por consiguiente, vemos que el usuario p1777000 es un tanto tacaño. Se deja a sí mismo hacer todo (rwx), a los miembros del grupo usuarios no hacer nada (---) y a los demás, un tanto de lo mismo (---).
    3. El significado del siguiente número (24), lo veremos más adelante
    4. A continuación, viene el nombre del propietario del fichero (p1777000)
    5. Después, el grupo al que pertenece el fichero (usuarios)
    6. El número que viene a continuación, es el tamaño en bytes que tiene el fichero o directorio
    7. Acto seguido aparece la fecha en que se modificó el contenido del fichero o directorio
    8. Finalmente, el nombre del fichero o directorio
    Está claro el porqué no podíamos acceder a él. Solamente si el dueño nos da permiso, podremos acceder. ¿Cómo se puede hacer esto? Veamos una orden relacionada con la propiedad en UNIX.

    Vamos a crear un directorio de prueba y vamos a cambiarle sus permisos. Primero lo creamos y vemos qué permisos tiene:
    <gyermo@ENCINA>/usuarios/profes/gyermo$ cd
    <gyermo@ENCINA>/usuarios/profes/gyermo$ mkdir PRUEBA
    <gyermo@ENCINA>/usuarios/profes/gyermo$ ls -ld PRUEBA
    drwxr-xr-x   2 gyermo   profes       512 ago 18 02:24 PRUEBA
    <gyermo@ENCINA>/usuarios/profes/gyermo$ 
    
    Vemos que, si no hacemos nada, tenemos todos los permisos en nuestro nuevo directorio. Tanto los usuarios de nuestro grupo como los demás pueden acceder y ver el contenido del directorio, pero no borrar ni renombrar sus ficheros. Para cambiar los permisos del fichero se usa la orden chmod. En su primer parámetro pondremos (codificados) los permisos que queremos que tenga el fichero y el segundo parámetro es el nombre del fichero o directorio. El código es muy fácil. Consta de tres cifras, una para cada grupo de permisos (dueño, grupo y demás). Las cifras se calculan mediante una suma:
    1. Partimos de cero
    2. Sumamos cuatro, si queremos dar el permiso r
    3. Sumamos dos, si queremos dar el permiso w
    4. Finalmente, sumamos uno, si queremos dar el permiso x
    Cambiemos los permisos de nuestro flamante directorio PRUEBA. Como somos muy generosos, nos vamos a quitar todos los permisos, vamos a dejar los permisos que tiene el grupo y vamos a dar todos los permisos a los demás. Siguiendo el procedimiento indicado más arriba, la primera cifra es 0 (ningún permiso), la segunda es 5 (permisos r y x) y la tercera es 7 (todos los permisos). Hagámoslo:
    <gyermo@ENCINA>/usuarios/profes/gyermo$ chmod 057 PRUEBA
    >gyermo@ENCINA>/usuarios/profes/gyermo$ ls -ld PRUEBA
    d---r-xrwx   2 gyermo   profes       512 ago 18 02:24 PRUEBA
    
    Vamos a intentar ahora entrar en *nuestro* directorio:
    <gyermo@ENCINA>/usuarios/profes/gyermo$ cd PRUEBA
    ksh: PRUEBA: permission denied
    
    Tener un directorio así es como tener un tío en América. Mejor lo borramos.

    En realidad, si somos algo más técnicos deberíamos decir que los permisos son un campo de bits que, cuando se expresa en octal (base 8), hace que la última cifra trate de los permisos de los otros, la penúltima de los permisos del grupo y la antepenúltima de los permisos del dueño del fichero o directorio.

    Hay otra sintaxis más flexible de la misma orden chmod para cambiar los permisos. Si estáis interesados, podéis consultar la documentación de la propia orden.

    Existen órdenes en UNIX para cambiar el dueño (regalar) un fichero (chown) y el grupo al que pertenece un fichero (chgrp), pero están restringidas por configuración en el servidor.

    Existe tradicionalmente un usuario de UNIX, cuyo nombre es root, que puede hacer de todo. En el servidor puede también cambiar usuarios y grupos y puede saltarse todos los permisos que tengan los ficheros y directorios. El nombre de root proviene de que su directorio de conexión es tradicionalmente el directorio raíz (/). Cuando seais mayores, llegaréis a ser root.

    El mecanismos de permisos de UNIX muchas veces se queda corto. Por ejemplo, podríais querer dejar entrar y ver los ficheros de vuestro directorio de conexión a vuestra pareja de prácticas. En la configuración clásica de UNIX no podéis. El que esté interesado en mayor flexibilidad en la cesión de permisos, debe consultar las listas de control de acceso (ACL), aunque no es un mecanismo igualmente estandarizado en todos los tipos de UNIX.

  8. Ejercicio

    Pedid a un compañero, mediante write, que os cree y os deje acceder a un directorio dentro de su directorio de conexión. Entrad en él. Mandad un mensaje de que habéis entrado para que el usuario original deje todo como estaba antes.
  9. Configuración de la cuenta en el servidor.

    Hay ocasiones en que desearéis no tener que dar siempre las mismas órdenes según os conectáis para dejar vuestra cuenta (que es como vuestra casa en el servidor) a vuestro gusto. Los ficheros de configuración vienen en vuestra ayuda. Existen varios, pero con que modifiquéis o creéis uno de ellos os bastará. Elegimos un fichero oculto, que se debe situar en vuestro directorio de conexión, que se llama .bash_profile. Dicho fichero es de tipo "script" y se ejecutará cada vez que os conectéis al servidor.

    Para poder hacer esto, necesitáis editar un fichero de texto especial y, para ello, debéis elegir el método de ediciĆ³n de ficheros que mejor se adapte a vuestro carácter. Aquí tenéis cuatro posibilidades.

    Así que, por el método de los anteriores que os resulte más atractivo, debéis editar el fichero (pudiera ser que incluso exista) y añadir las líneas siguientes o modificar las que existan, si es que el fichero lo teníais ya, dependiendo de si queréis o no la posibilidad que os da. Tened cuidado porque sólo tenéis que copiar lo que aparece señalado en azul, no los signos de puntuación que aparecen a continuación:
    Probad si os funciona la tecla de borrado. Si no es así, volved a editar el fichero .profile. Añadid una línea que diga: stty erase <CTRL+V><TECLA_DE_RETROCESO>. Debéis pulsar primero las teclas "Control" y "V" y, a continuación, pulsar la tecla de retroceso.

    Comprobad que las modificaciones que habéis hecho funcionan desconectándoos y volviéndoos a conectar para que se ejecute el fichero .bash_profile. También podéis, alternativamente, teclear exec login.

  10. ¿Quién me puede ayudar?

    Son tantas las órdenes de UNIX y tantas sus opciones que es improbable que nadie las controle todas. ¿Cómo puedo pedir ayuda al sistema? Existe una orden que nos ofrece documentación acerca de cualquier otra orden. Se llama man. Para asustarnos un poco, veamos el inicio de la página de manual de ls:
    <gyermo@ENCINA>/usuarios/profes/gyermo$ man ls
    Reformatting page.  Please Wait... done
    
    User Commands                                               ls(1)
    
    NAME
         ls - list contents of directory
    
    SYNOPSIS
         /usr/bin/ls  [-aAbcCdeEfFghHilLmnopqrRstuvVx1@] [file]...
    
         /usr/xpg4/bin/ls  [-aAbcCdeEfFghHilLmnopqrRstuvVx1@]
         [file]...
    
         /usr/xpg6/bin/ls  [-aAbcCdeEfFghHilLmnopqrRstuvVx1@]
         [file]...
    
    DESCRIPTION
         For each file that is a directory, ls lists the contents  of
         the  directory.  For  each file that is an ordinary file, ls
         repeats its name and any other  information  requested.  The
         output is sorted alphabetically by default. When no argument
         is given, the current directory (.) is listed. When  several
         arguments   are   given,  the  arguments  are  first  sorted
         appropriately, but file arguments appear before  directories
    --More--(2%)
    
    Podéis contar hasta 31 opciones. Las páginas de manual de UNIX tienen fama de ser muy completas. Están organizadas en secciones, de las cuales, la primera es la que nos interesa. En ella se encuentras las órdenes que vamos a ver.

    A veces, el problema es que no recordamos cómo se llama la orden que hacía según qué cosa. Una opción de man, -k, acude en nuestra ayuda. Veamos un ejemplo en un Linux. No nos acordamos de la orden que se usa para cambiar el propietario de un fichero:
    gyermo@saturno\:~$ man -k owner
    chgrp (1)            - change group ownership
    chown (1)            - change file owner and group
    chown (2)            - change ownership of a file
    chown32 (2)          - change ownership of a file
    dpkg-statoverride (8) - override ownership and mode of files
    faked (1)            - daemon that remembers fake ownership/permissions of files manipul...
    faked-sysv (1)       - daemon that remembers fake ownership/permissions of files manipul...
    faked-tcp (1)        - daemon that remembers fake ownership/permissions of files manipul...
    fchown (2)           - change ownership of a file
    fchown32 (2)         - change ownership of a file
    fchownat (2)         - change ownership of a file relative to a directory file descriptor
    lchown (2)           - change ownership of a file
    lchown32 (2)         - change ownership of a file
    lspgpot (1)          - extracts the ownertrust values from PGP keyrings and list them in...
    ownership (8)        - Compaq ownership tag retriever
    XGetSelectionOwner (3) - manipulate window selection
    XSetSelectionOwner (3) - manipulate window selection
    XtDisownSelection (3) - set selection owner
    XtOwnSelection (3)   - set selection owner
    XtOwnSelectionIncremental (3) - set selection owner
    
    Ahí aparece la orden que buscamos, en la sección 1 del manual: chown. Se puede limitar la sección de manual donde se busque. Para más detalles, consultad la página de manual de la propia orden man.
  11. Ejercicio

    Cread un directorio. Con ls, mirad la fecha y hora en que lo habéis creado y anotadla. Esperad un minuto y entrad en el directorio. Cread otro directorio dentro de él. Salid afuera y mirad la fecha que aparece ahora. Será la fecha actual, pues habéis modificado el directorio al crear otro dentro de él y ls nos da la fecha de la última modificación.

    Consultad ahora la página de manual de ls hasta encontrar una opción que os permita volver a ver la fecha en que se creó el directorio, no la fecha de su última modificación.
  12. ¿Pero es que nadie habla mi idioma?

    El origen y el desarrollo fundamental de la informática se encuentra en EE.UU. Es por ello que la lengua franca en informática es actualmente el inglés. Cualquier trabajo serio se debe realizar en ese idioma. Sin embargo, los usuarios de la informática no tienen por qué conocer la lengua de Shakespeare. UNIX usa para ello la configuración regional o internacionalización, más conocida como locales. El locale especifica, entre otras cosas, el idioma que prefiere el usuario, cómo dar formato a las fechas, la moneda preferida, la codificación de los caracteres, etc.

    Para ver los locales de que dispone nuestro servidor, disponemos de la orden locale -a:
    <gyermo@ENCINA>/usuarios/profes/gyermo$ locale -a
    C
    POSIX
    [...]
    es
    es.ISO8859-15
    es.UTF-8
    es_ES
    es_ES.ISO8859-1
    es_ES.ISO8859-15
    es_ES.ISO8859-15@euro
    es_ES.UTF-8
    es_ES.UTF-8@euro
    iso_8859_1
    [...]
    
    Para ver la configuración que tenéis actualmente, se usa la orden locale sin más:
    <gyermo@ENCINA>/usuarios/profes/gyermo$ locale
    LANG=es_ES.ISO8859-1
    LC_CTYPE=es_ES.ISO8859-1
    LC_NUMERIC=es_ES.ISO8859-1
    LC_TIME="es_ES.ISO8859-1"
    LC_COLLATE=es_ES.ISO8859-1
    LC_MONETARY=es_ES.ISO8859-1
    LC_MESSAGES=es
    LC_ALL=
    
    No basta con tener la configuración establecida a un locale específico. Es necesario que los programas o paquetes usados estén cargados o tengan la posibilidad de internacionalización. Así, en el servidor, aunque por defecto vuesto locale es el correspondiente al español de España con un juego de caracteres ISO-8859-1, las respuestas del servidor y las páginas de manual son en inglés.

    Veamos la salida de la página de manual de la orden ls en un Linux configurado con un locale chino y con los paquetes necesarios instalados:

    ls en chino
  13. Basta ya por hoy, ¿no?

    Esta sesión de trabajo ha sido extensa, aunque no muy difícil y ya toca a su fin. Es muy conveniente que, si no os ha dado tiempo en clase, la completéis en casa, salvo, como siempre, los apartados de color sepia, que son opcionales.

    Para salir del servidor, debéis hacerlo ordenadamente. Teclead para ello la orden exit.
  14. Y esto, ¿lo puedo trabajar en casa?

    Como mejor se aprende a manejar con soltura la interfaz de texto de UNIX es con la práctica. Es muy recomendable que os instaléis una versión de Linux en vuestro ordenador. Tratad de que coincida en el tipo con la que tenéis en clase, para facilitaros el manejo. Elegid, pues, una versión de Ubuntu (http://www.ubuntu.com/).

    Una vez la tengáis instalada, podéis practicar abriendo una sesión de terminal. Las órdenes del servidor y las de vuestro Linux serán muy similares, si no prácticamente iguales. Podéis incluso establecer vuestro locale al español y tener las páginas de manual en la lengua de Cervantes.

    Esta distribución de Linux funciona mediante paquetes de programas que podéis instalar sin más que tener conexión a internet. Desde vuestro terminal, para instalar el paquete de páginas de manual en español, no tenéis más que teclear:
    fulano@miordenador\:~$ sudo apt-get install manpages-es
    
    Metéis vuestra contraseña, esperáis a que se descarguen e instalen y... ya está.

    Podéis descargaros de este modo toda una serie de paquetes: editores de texto, compiladores, juegos, navegadores, ... Todo ello gratis y legalmente. Linux (nombre cariñoso con el que conocemos al sistema GNU/Linux) y las aplicaciones que se distribuyen con él es software libre. Esto significa que estos programas han sido desarrollados de un modo altruista por personas conectadas a través de Internet y ofrecidos a los demás.

  15. Órdenes de la shell vistas.

    whoami
    muestra el nombre del usuario
    groups
    imprime los grupos a los que pertenece el usuario
    id
    muestra los identificadores del usuario y del grupo
    hostname
    da el nombre del servidor
    pwd
    imprime el directorio de trabajo
    who
    muestra los usuarios que se encuentran conectados
    finger
    da información acerca del usuario
    write
    permite enviar mensajes a otro usuario
    mesg
    visualiza o permite cambiar el estado de recepción de los mensajes
    talk
    chat interactivo entre dos usuarios
    ls
    muestra el contenido de un directorio
    cd
    cambia el directorio de trabajo
    mkdir
    crea un nuevo directorio
    rmdir
    borra un directorio, que debe estar vacío
    chmod
    cambia los permisos de un fichero o directorio
    chown
    cambia el propietario de un fichero o directorio
    chgrp
    cambia el grupo al que pertenece el fichero
    man
    muestra la página de manual de una orden
    locale
    imprime los locales disponibles o la configuración actual
    exit
    nos desconecta del servidor


  16. Funciones de biblioteca relacionadas.



  17. LPEs.


© 2011 Guillermo González Talaván.