El sistema de archivos de UNIX

Contenidos

Introducción al sistema de archivos

Un archivo se puede definir como un conjunto de datos con un nombre asociado. Los archivos suelen residir en dispositivos de almacenamiento secundario tales como cintas, discos duros o discos flexibles. Algunos sistemas operativos imponen a los archivos una estructura determinada bien definida. Este no es el caso de UNIX, donde un archivo no es más que una secuencia de bytes (8bits).

Un sistema de archivos se debe entender como aquella parte del sistema responsable de la administración de los datos en dispositivos de almacenamiento secundario. Por lo tanto, es el sistema de archivos el que debe proporcionar los medios necesarios para un acceso y almacenamiento seguro y privado de la información.

Estructura del sistema de archivos

En UNIX los archivos están organizados en lo que se conoce como directorios. Un directorio no es más que un archivo especial, el cual contiene información que permite localizar en el dispositivo otros archivos. Los directorios pueden contener a su vez nuevos directorios, los cuales se denominan subdirectorios. A la estructura resultante de esta organización se la conoce con el nombre de estructura en árbol invertido. Un ejemplo típico de arbol de directorios UNIX lo tenemos representado en la figura 2.1:

Figura 2.1

Todos los archivos y directorios dependen de un único directorio denominado directorio raíz o root, el cual se representa por el símbolo /. En el caso de que en el sistema tengamos varios dispositivos físicos de almacenamiento secundario (normalmente discos), todos deben depender del directorio raíz, y el usuario tratará cada uno de los discos como un subdirectorio que depende del directorio raíz (root).
Se trata de un directorio que el administrador del sistema crea o asigna cuando da de alta a un usuario. El propósito de este directorio es suministrar un punto en la jerarquía de directorios del sistema de archivos UNIX a partir del cual el usuario puede almacenar y estructurar sus propios archivos y directorios. Este directorio suele ser tomado como directorio de trabajo inicial cuando el usuario establece una sesión de trabajo. Se representa mediante el símbolo ~.
El directorio de trabajo o act el directorio en el que nos encontramos operando en cada momento de la sesión. Se representa mediante un punto .

Asociado al concepto de directorio de trabajo esta el concepto de directorio padre, que se representa mediante .. y que sirve para denotar al directorio del que depende el directorio de trabajo. La manera de conocer en todo momento el directorio de trabajo es a través de la orden pwd (print working directory). Su sintaxis es:

pwd

Ejemplo:
Apis:~$ pwd
/users/so/so00
En este ejemplo, el directorio "." y ".." serían respectivamente /users/so/so00, y /users/so.
Los archivos se identifican en la estructura de directorios por lo que se conoce como nombre de camino, trayectoria o path name. Fijándonos en la figura 2.1. distinguiremos las tres formas existentes para refenciar un archivo:
Camino absoluto o completo. Consistente en el conjunto de nodos por los que hemos de pasar, partiendo del directorio raíz, para llegar al archivo o directorio que queremos referenciar. Va precedido siempre por el caracter /. Identifica de modo único a un directorio o archivo dentro del sistema de archivos.
Ejemplo: /usr/bin/troff
Camino relativo. Tenemos dos formas de acceder a un archivo usando una trayectoria relativa, según tomemos en consideración el directorio de trabajo o el directorio de conexión:

1. Respecto del directorio de trabajo:

Suponiendo que nuestro directorio de trabajo es /usr, el camino para llegar al archivo /usr/bin/troff sería bin/troff.

NOTA: Para el camino relativo se pueden utilizar las cadenas "." y "..", permitiéndose entonces ascender en el árbol de directorios para referenciar archivos de modo relativo.

Por ejemplo, si el directorio de trabajo es el /usr/bin/troff y queremos referenciar el archivo /usr/local/bin , usando una trayectoria relativa, escribiríamos ../../local/bin.
2. Respecto del directorio de conexión.
Suponiendo que nuestro directorio de conexión actual es /users/ssp, la referencia al archivo o directorio anterior seria ~/../../usr/bin/troff
El nombre de un archivo en UNIX puede tener hasta 255 caracteres y aunque no existe el concepto de extensión de un archivo es posible incluir el carácter . tantas veces como se desee, la única consideración a tener en cuenta en este sentido, es la referente a los nombres de archivo cuyo primer carácter es . a los que históricamente se denominan archivos ocultos, ya que por defecto no son mostrados por la orden ls. Una denominación más precisa para estos archivos sería la de archivos sin interés habitual, ya que se suelen utilizar para configurar aplicaciones y normalmente el usuario no tiene interés en verlos.

Es importante tener en cuenta que los intérpretes de órdenes de UNIX (denominados shell) consideran distintos los caracteres en mayúsculas de los caracteres en minúscula. Por lo tanto no son equivalentes los archivos: programa.c y Programa.c.

Ejemplos de nombres de archivos:

programa, programa.c, programa.c.primera_version, base_datos.1992

Expansión de nombre de archivo: caracteres comodín y especiales

Existen en UNIX un conjunto de caracteres cuya combinación permite que el intérprete de órdenes los sustituya por un grupo de símbolos. Estos caracteres se denominan caracteres comodín. De entre los existentes destacamos los siguientes:
* Representa cualquier conjunto de símbolos. Por ejemplo, sabiendo que la orden lp permite imprimir archivos:
Apis:~$ lp * # imprime todos los archivos del directorio de trabajo
Apis:~$ lp ab* # imprime los archivos que empiecen por ab
? Representa cualquier carácter.
Apis:~$ lp a?b # imprime los archivos cuyos nombres tengan tres caracteres, el primero sea una a y el último una b
[...] Representan un símbolo del conjunto.
Apis:~$ lp ab[123] # imprime (si existen) los archivos ab1, ab2 y ab3


[!...] Representa un símbolo NO contenido en el conjunto.

Apis:~$ lp [!ab]* # imprime todos los archivos cuyo nombre NO comienza por ni por a ni por b
Aparte de los caracteres comodín, existen otros caracteres cuyo significado es especial para la shell. Entre estos destacamos:
< , > , | , &
cuyo significado se explicará en prácticas posteriores.
De modo general para todos los caracteres especiales y comodín, se habilitan distintas maneras para forzar a que la shell los interprete literalmente como los caracteres que son. Los modos de escapar los caracteres especiales y comodín son los siguientes:
  • Utilizando el carácter \ se pueden escapar caracteres individualmente.
  • Cuando se quiere escapar cadenas completas se recurre a encerrarlos entre comillas '.

  •  

     
     
     

    Apis:~$ lp `test?&' #imprime el archivo con nombre test?&
    Apis:~$ lp \*a #imprime el archivo de nombre *a
     

    Niveles de acceso a la información

    Todo usuario tiene la posibilidad de crear, modificar y borrar archivos. Cada archivo tiene tres modos de acceso diferentes:
    En los sistemas multiusuario se hace necesario controlar el acceso a la información asegurando su privacidad. Como ya se ha visto anteriormente, cada usuario del sistema tiene un número identificador (UID) único dentro del sistema y también pertenece a un grupo de usuarios identificado unívocamente dentro del sistema por un número (GID). A estos números se les asocia unos nombres lógicos que se denominan login en el caso del UID y nombre de grupo en el caso del GID. Por lo tanto, una manera de identificar la información perteneciente a un usuario (el caso que nos ocupa son sus archivos), es que cada archivo lleve asociado el identificador de usuario propietario de la información y la del grupo a que este usuario pertenece.

    De la combinación de los tres modos de acceso explicados anteriormente rwx y los atributos propietario de un archivo y grupo al que pertenece dicho propietario, surgen los denominados niveles de acceso a la información. Estos son tres:

    Listado de archivos

    La orden ls se utiliza para visualizar el contenido de un directorio. Su sintaxis es la siguiente:
    ls [parámetros] [path_name]
    Si no indicamos path_name, se presentará el contenido del directorio de trabajo actual. Ejemplo:
    Apis:~$ cd /bin
    Apis:~$ ls c*
    c89      cd      chown   colcrt    cp       csplit
    cal      cdoc    chsh    colrm     cpio     ct
    calendar cdsuf   cksum   comm      cpp      ctod
    capsar   chfn    clear   command   crashdc  cu
    cat      chgrp   cmp     compress  crontab  cut
    cc       chmod   col     cord      csh
    Según los parámetros utilizados en la orden (campo parámetros en la sintáxis), obtendremos distintos tipos de información acerca de los archivos. Especialmente relevantes son los siguientes:
    -a permite visualizar los archivos ocultos (aquellos que empiezan por .).

    -F introduce el carácter / tras los nombres de los subdirectorios listados y un * tras los archivos ejecutables.

    -l lista los archivos en formato largo, incluyendo información adicional completa acerca de cada uno de ellos.
    Apis:~$ cd
    Apis:~$ pwd
    /users/so/infsis/so00
    Apis:~$ ls -a
    .
    ..
    .profile
    Mwm
    docprac
    test
    Apis:~$ ls -F
    Mwm
    docprac/
    test*
    Apis:~$ ls -l
    total 40
    -rw-r----- 1 so00 users 4639  Sep 3 14:05 Mwm
    drwxr-xr-x 2 so00 users 512   Sep 5 1994  docprac
    -rwxr-xr-x 2 so00 users 24512 Sep 3 14:05 test
    El listado con la opción -l del archivo TCPsock.c sería:

     

    Figura 2.2

    Los campos que aparecen al realizar el listado con la opción -l son los siguientes (de izquierda a derecha):

     

    Figura 2.3

    donde el carácter - en el campo del tipo de archivo indica que es un archivo ordinario, y en cualquiera de los otros campos supone que el permiso (rwx) NO está habilitado.

    Enlaces a archivos

    La orden ln  permite crear enlaces a  ficheros y directorios. Existen dos tipos de enlaces: enlaces fuertes (hard links) y enlaces suaves (soft links), que se distinguen por la forma en la que llevan a cabo el enlace. Desde un punto de vista del usuario no hay ninguna diferencia entre ambos tipos de enlace, salvo que los enlaces fuertes sólo son permitidos para ficheros y directorios pertenecientes a un mismo sistema de ficheros. Un enlace es un nombre alternativo que podemos asignar a un fichero o a un directorio ya existente. La finalidad de esto es el realizar cómodamente el acceso a dichos ficheros o directorios sin necesidad de referenciarlos con su camino completo a través del sistema de ficheros. Por ejemplo, supongamos que en nuestro lugar de trabajo tenemos varias estaciones de trabajo bajo UNIX y que una de ellas es un servidor de  servidor de ficheros. Lo más normal es que cada estación realice un login en su disco local. Si somos programadores interesa que nuestros programas fuente no estén duplicados en cada disco local, ya que además de desperdiciar espacio,  se podrían plantear problemas de coherencia entre las distintas versiones de los programas. UNIX permite compartir sistemas de ficheros de forma que una estación exporta su disco local (o parte de él) para que otras estaciones lo puedan ver como un disco local. Una vez que es posible acceder a un disco  remoto (montado) se puede crear un  enlace simbólico desde nuestro directorio home en la estación sobre la que estamos trabajando hacia el camino completo a través del sistema de ficheros, donde se encuentran nuestros programas fuente. Si realizamos este proceso en cada estación de trabajo a la que tenemos acceso, parecería que en el directorio home de cada máquina hay un directorio local que contiene los fuentes, cuando lo que realmente existe en un enlace simbólico al directorio real, situado en otro sistema de ficheros.

    Ejemplo: En el siguiente ejemplo se muestra que hay dos enlaces simbólicos creados en nuestro directorio home. El directorio /home1 está físicamente sobre otra máquina. Sin embargo, de cara al usuario, el directorio doc es como si estuviera en el sistema de ficheros local y, además, cuelga de nuestro home.
     

    gogh: > pwd
        /usr/users/v               (nuestro home directory)
    gogh: > ls -l
        total 3
        drwxr-xr-x   2 vi     wheel    1024 Feb 14 01:50 bin/
        -rw-rw-r--   1 vi     wheel     325 Apr  2 18:49 carta
        lrwxrwxrwx   1 vi     wheel      21 Feb 14 01:48 doc -> /home1/paralelo/v/doc/
        lrwxrwxrwx   1 vi     wheel      19 Feb 14 01:52 f.txt -> /users/so/pepeillo/k/f.txt
        -rw-rw-r--   1 vi     wheel     227 Mar 15 20:21 un_fichero_ASCII
    gogh: >


    La orden para realizar un enlace emplea la siguiente sintaxis:
     

    ln [-sf] fichero_o_directorio

    En el ejemplo anterior también se puede observar que se ha efectuado un enlace simbólico al fichero /users/so/pepeillo/k/f.txt de forma que es posible acceder a él a través de f.txt, localizado en nuestro propio directorio home sin tener que desplazarse hasta el directorio /users/so/pepeillo/k/.
     

    Permisos, propietario y grupo de un archivo

    Como hemos visto anteriormente, a cada archivo se le asocian un conjunto de permisos de acceso (rwx) asociados a cada uno de los tres niveles de la jerarquía de usuarios existente: nivel de usuario, nivel de grupo y el nivel formado por el resto de los usuarios del sistema.

    La orden chmod (change mode) permite cambiar los permisos de un archivo. La utilización de esta función está restringida exclusivamente al propietario del archivo cuyos permisos (modo) se desean alterar o al administrador del sistema. La sintaxis es la siguiente:

    chmod modo archivo1 [archivo2 ... ]
    donde modo supone el modo de acceso al archivo que se desea asignar. Hay dos formas diferentes de utilizar la orden:
  • Modo relativo. En este caso la referencia a los permisos asignados al archivo se realiza de acuerdo con la siguiente sintaxis:
  • El primer campo indica a quién se le modifica el permiso: u(usuario), g (grupo), o (otros) y a (todos).

    El segundo campo indica si se activa (+), se desactiva (-) o se fija (=) un permiso. Cuando se utiliza = los permisos que no aparecen se eliminan.

    El tercer campo indica sobre que modos de acceso se actúa (r, w, x). Ejemplo:

    Apis:~$ chmod a-x prog.c
    Apis:~$ ls -l prog.c
    -rw-r--r-- 1 so00 users 1024 Sep 3 14:58 prog.c
    Apis:~$ chmod go+w prog.c
    Apis:~$ ls -l prog.c
    -rw-rw-rw- 1 so00 users 1024 Sep 3 14:58 prog.c
    Apis:~$ chmod gu-rw prog.c
    Apis:~$ ls -l prog.c
    -------rw- 1 so00 users 1024 Sep 3 14:58 prog.c
    Apis:~$ chmod u=r prog.c
    Apis:~$ ls -l prog.c
    -r-------- 1 so00 users 1024 Sep 3 14:58 prog.c
    Por otro lado, la orden  umask  permite fijar los permisos que tendrá por defecto cualquier archivo que cree un determinado usuario. Su estructura es:
    Si no se desea que por defecto los archivos y directorios se creen con estos valores, se puede cambiar el valor de la máscara de usuario pasando como argumento a la orden umask un número de tres dígitos en octal. Este número es el resultado de fijar a 1 aquellos permisos que se desean limpiar y dejar a 0 los bits de los permisos que no se quieren limpiar (es decir, justo del revés a como se construían los permisos en octal para chmod). Así, si se desea que a partir de este momento los archivos y directorios que se creen tengan todos los permisos desactivados para los niveles de grupo y de otros y que no se limpie ningún permiso para el nivel de propietario, la orden a introducir será:
    $ umask 077

    Cambio del propietario de un archivo. Orden chown

    La sintaxis de chown es la siguiente:
    $ chown propietario_nuevo archivos
    Ejemplo:
    Apis:~$ ls -l a.out
    -rwxr-xr-x 1 so13 so 2894 Nov 11 16:51 a.out
    Apis:~$ chown so00 a.out
    Apis:~$ ls -l a.out
    -rwxr-xr-x 1 so00 so 2894 Nov 11 16:51 a.out

    En muchos sistemas esta orden sólo puede ser ejecutada por el administrador del sistema.

    Cambio del grupo de un archivo. Orden chgrp

    La sintaxis de chgrp es la siguiente:

    $ chgrp grupo_nuevo archivos
    Es necesario pertenecer al grupo_nuevo para poder cambiarlo. La orden groups permite conocer a qué grupos pertenece un usuario.
    Apis:~$ ls -l a.out
    -rwxr-xr-x 1 so00 users 2894 Nov 11 17:04 a.out
    Apis:~$ chgrp itt a.out
    Apis:~$ ls -l a.out
    -rwxr-xr-x 1 so00 itt 2894 Nov 11 17:04 a.out

    Visualización y manejo de archivos

    En UNIX existe un conjunto de órdenes que entre otras funciones, permiten visualizar el contenido de archivos. Si bien otras aplicaciones se explicarán más adelante en otros capítulos, aquí se introduce su utilización como visores.

    Orden cat

    Se utiliza para visualizar el contenido de un archivo de texto (ASCII) por la pantalla. Si a cat no le pasamos como argumento ningún archivo de texto, entonces leerá de la entrada estándar (teclado) hasta que pulsemos Ctrl+d (^d). Una vez hecho esto, visualizará lo que acabamos de escribir. Por lo tanto, cat es una orden que por defecto (si no le pasamos parámetro alguno) lee de la entrada estándar y dirige su salida a la salida estándar (la pantalla). Ejemplo:
    Apis:~$ cd
    Apis:~$ cat /etc/motd
    OSF/1 V2.0 (Rev. 240); Fri Aug 5 11:54:48 GMT 1994
    OSF/1 V2.0 Worksystem Software (Rev. 240)

    #############################################
    # BIENVENIDO AL LABORATORIO DE ARQUITECTURA #
    #############################################

    Apis:~$ cat mensaje
    Lo que estoy escribiendo es un
    mensaje que se muestra por pantalla
    con el uso de la orden "cat".
    Apis:~$

    Orden more

    La orden imprime por pantalla el contenido del archivo de texto que le pasemos como argumento. Su sintaxis es:
    more [archivo1 ...]
    A diferencia de la orden cat, la visualización se hace pantalla a pantalla. Para avanzar en la visualización línea a línea, se debe pulsar retorno (¿ ). Para visualizar la siguiente pantalla, se pulsará la barra espaciadora, y para finalizar se pulsará la tecla q (quit).
    La tabla de opciones vista para la orden man es aplicable también a esta orden.

    Órdenes head y tail

    En muchas ocasiones no se pretende visualizar el archivo de texto completo, sino que con algunas líneas sería suficiente (por ejemplo para identificarlo). Las órdenes head y tail se pueden utilizar para visualizar las primeras o las últimas N líneas de un archivo de texto. Su sintaxis es:
    head [-N] archivo1

    tail [-N] archivo1

    En esta sección se introducen las órdenes básicas necesarias para poder gestionar los archivos bajo UNIX.

    Orden cd

    Se utiliza para cambiar el directorio de trabajo actual.

    Su sintaxis es la siguiente:

    cd [path_name]
    Cuando se utiliza sin parámetros, el directorio de trabajo actual pasa a ser el directorio propio (el del arranque), también conocido como directorio HOME, dicho de otro modo, si nuestro directorio act /usr/local, dando la orden cd nos colocamos en nuestro directorio HOME.

    HOME es el directorio en el que iniciamos sesión de trabajo, es decir el CWD que tenemos al entrar en el sistema.

    Tanto cd, como pwd son ordenes internas del intérprete, no existe ningún archivo ejecutable en el que estén programadas.

    Apis:~$ cd /usr/so
    Apis:~$ pwd
    /usr/so
    Apis:~$ cd
    Apis:~$ pwd
    /users/so/tel/so01

    Orden cp

    Se utiliza para copiar archivos. Su sintaxis es:
    $ cp archivo1 [archivo2 ...] destino
    Como mínimo necesita dos argumentos. El primero es el archivo existente que queremos copiar en otro lugar, y el segundo es el nombre del archivo destino. Las rutas de ambos archivos se pueden dar tanto en forma absoluta como relativa. En caso de que el archivo destino exista, su contenido se perderá, quedando sustituido por el contenido de archivo1. Ejemplo:
    Apis:~$ cd
    Apis:~$ pwd
    /users/so/tel/so25
    Apis:~$ ls -F
    c/ personal/ pruebas.c
    pruebas xxx
    Apis:~$ cp pruebas.c prnew.c
    Apis:~$ ls -F
    c/ personal/ pruebas.c
    prnew.c pruebas xxx

    Orden rm

    Se utiliza para borrar un conjunto de archivos. Su sintaxis es:
    $ rm [-irf] archivo1 archivo2 ...
    Esta orden opera silenciosamente en ausencia de problemas, lo c especialmente peligroso si se tiene en cuenta que en UNIX un archivo borrado no puede ser recuperado de manera alguna.

    Las opciones tienen el siguiente significado:

    -i (interactive) antes de borrar cada uno de los archivos, rm preguntará si realmente queremos hacerlo.
    -f (force) fuerza el borrado de los archivos, incluso si estos están protegidos contra escritura (el archivo debe pertenecer al usuario que quiere borrarlo). Ejemplo:

    Apis:~$ ls -F
    c/ personal/ pruebas.c
    prnew.c pruebas xxx
    Apis:~$ rm prnew.c
    Apis:~$ ls -F
    c/ personal/ pruebas.c
    pruebas xxx

    Orden mv

    Su funcionalidad es idéntica a cp, salvo que mv provoca que los archivos o directorios origen desaparezcan de su localización inicial. Su sintaxis es:
    $ mv origen1 [origen2 ...] destino
    Ejemplo:

    Apis:~$ mv pruebas personal
    Apis:~$ ls -F
    c/ personal/ pruebas.c
    xxx
    Apis:~$ ls personal
    pruebas

    Órdenes para el manejo de directorios

    Las dos órdenes que necesitamos para manipular directorios son mkdir y rmdir. La forma de trabajar de estas órdenes es la misma que en DOS.
    mkdir nom_directorio

    rmdir nom_directorio

    mkdir (make directory) permite crear un nuevo directorio, mientras que rmdir (remove directory) lo elimina. Para eliminar un directorio, este tiene que estar vacío. Ejemplo:

    Apis:~$ ls -F
    c/ personal/ pruebas.c
    xxx
    Apis:~$ rmdir c
    Apis:~$ mkdir tmp
    Apis:~$ ls -F
    personal/ pruebas.c tmp/
    xxx

    Ejercicios

    2.1. Averiguar c su directorio de conexión y crear en él un directorio que se llame p02.

    2.2. Ejercicio sobre enlaces.

    a. Cree un enlace fuerte a un archivo situado en su directorio de conexión y compare el número de enlaces que tiene ahora y los que tenía antes de realizar esta operación.
    b. Realice de nuevo la misma operación pero en este caso sobre un directorio. ¿Puede realizar un enlace blando sobre un directorio?
    c. Cree un enlace blando sobre el archivo original de la pregunta a) ¿Cuántos enlaces tiene ahora?

    d. Borre el archivo original. ¿Puede acceder a los datos a través del soft-link? ¿y a través del hard-link? ¿Qué ocurre si creamos un archivo con el mismo nombre que el que hemos borrado? ¿Puede acceder a los datos a través del soft-link? ¿y a través del hard-link?

    e. Intente realizar un enlace fuerte sobre el archivo de contraseñas del sistema. ¿Qué ocurre? ¿Por qué? Realice un enlace blando. ¿Qué ocurre? ¿Por qué?

    2.3. Rellene al siguiente tabla:
     
     
      ¿Es el mismo para todos? ¿Se puede cambiar?
    Directorio /    
    Directorio .    
    Directorio ~    
    2.4. Con este ejercicio pretendemos que se entienda de qué depende el hecho de que un archivo se pueda borrar o acceder a la información de un directorio. Vamos a proponer una serie de pequeños ejercicios a realizar y al final deberá responder a dos preguntas.
    a. Cree un directorio que se llame D1 colgando de su directorio de conexión. ¿Con que permisos se crea?

    b. Cambie los permisos con umask de forma que estén activados todos menos los de ejecución. Cree otro directorio hermano de D1 llamado D2. ¿Qué permisos tiene?

    c. En el directorio D2 cree un archivo con los permisos ----------. ¿Lo puede borrar?

    d. Intente borrar el archivo que pertenece a otro usuario.

    e. Ponga todos los permisos del D2 a d---------. ¿Puede acceder a él? Active el de ejecución, ¿puede acceder a él? Active también el de escritura, ¿puede acceder y ver su contenido? Active para el directorio D2 los permisos de ejecución y lectura únicamente ¿puede acceder al directorio? ¿puede borrar un archivo que tenga los permisos de escritura activados?

    Después de realizados los ejercicios contesta a las siguientes preguntas:

    i. Con que permisos se crea un directorio o archivo
    ii. De que depende que se pueda borrar un directorio o archivo.
    2.5. Listar todos los archivos del directorio /etc que comiencen por i y terminen por b. ¿Qué archivos tienen como segunda letra una s ? ¿Qué archivos tienen como tercera letra una consonante?

    2.6. ¿Sería posible copiar con una única orden el directorio p02 en el directorio bin que cuelga de vuestro directorio de conexión? Indicar cómo y ejecutarlo. Explicar a qué se deben los mensajes que salen por la pantalla.

    2.7. Hacer un listado largo de TODOS los archivos de vuestro directorio de conexión pero de modo que NO muestren el propietario sino exclusivamente el grupo y que añadan una / tras los archivos de directorio.

    2.8. ¿Cómo se podría paginar la salida de la orden anterior para que se pudiera ver el resultado más cómodamente por pantalla?