3. Interprete de órdenes
Anterior |  | Siguiente

## 3. Interprete de órdenes

### 3.1. Archivos y permisos

En esta sección se introducen diversas órdenes para administrar archivos y permisos desde un interprete de órdenes.

Una orden usualmente recibe opciones y parámetros que especifican que operación realizar; algunos parámetros son indispensables mientras que las opciones modifican el comportamiento por defecto de una orden (y por tanto son opcionales). En la ayuda presentada por la orden `man` y en estas guías empleamos como notación los paréntesis cuadrados `[ ]` para encerrar parámetros opcionales y opciones. Por ejemplo

     ls [-l] [ruta]

indica que la orden `ls` puede recibir la opción `-l` y una ruta como parámetro (las opciones suelen comenzar con uno o dos guiones). Puede descubrir que hace tal opción y el parámetro tecleando `ls / -l` y comparando con `ls -l`, `ls /`, y `ls`.

#### 3.1.1. Administración de archivos, directorios y enlaces

El programa `ls` por defecto presenta los nombres de archivos que no comienzan con el caracter “.” y que están en el directorio de trabajo del usuario. Los archivos cuyos nombres comienzan con el caracter punto suelen llamarse archivos de configuración, si desea verlos también al usar la orden `ls`, puede emplear la opción `-a` (i.e. teclear `ls -a`). Si desea ver los archivos de un directorio diferente puede dar como argumento el nombre del directorio, por ejemplo `ls /usr/bin`. Además de `-a` y `-l`, la orden `ls` tiene muchas otras opciones que le permiten especificar que mostrar y como mostrarlo.

Figura 1. Sesión en la que se examinan archivos y permisos

A continuación se presentan algunos programas para administrar archivos, junto con una breve descripción y unas pocas opciones —Puede consultar todas las opciones que recibe un programa con `man`:

`ln` `[-s]` fuente destino

  Crea un nuevo enlace para el archivo referenciado por fuente pero con el nombre destino. Por ejemplo si en el directorio de trabajo hay un archivo enlazado con el nombre `carta.txt` puede crearse otro enlace llamado `diario.txt` con:

      ln carta.txt diario.txt

  Después de hacerlo tanto `carta.txt` como `diario.txt` serán nombres que enlazarán la misma información. La opción `-s` indica que el enlace debe ser simbólico, lo cual en general es más flexible que la opción por defecto [^1].

`mkdir` `[-p]` ruta

  Crea un directorio con la ruta especificada. Sin la opción `-p` todos los directorios de la ruta excepto el último deben existir (el último es el nuevo directorio por crear). Con la opción `-p` el orden `mkdir` creará todos los directorios necesarios para construir la ruta.

`mv` fuente destino

  Renombra o mueve el archivo fuente en la localización/nombre destino.

`rm` `[-i]` `[-rf]` archivo

  Borra un archivo.

  > Warning

  > Una vez se borra un archivo no hay un método sencillo para recuperarlo.

  La opción `-i` confirma antes de borrar cada archivo, las opciones `-rf` permiten borrar directorios enteros junto con todos los subdirectorios que contengan (la opción `-r` por si sola borra en subdirectorios, la opción `-f` borra sin preguntar al usuario y sin producir fallas cuando no haya archivos por borrar).

`cp` `[-rf]` fuente destino

  Copia del archivo fuente al destino especificado. Si se usa la opción `-rf` también se copiaran subdirectorios.

`df` `[-h]`

  Para examinar espacio disponible en los dispositivos de almacenamiento, en particular el de las particiones cuyos sistemas de archivos estén montados (ver Montaje y desmontaje de sistemas de archivos). Puede emplearse con la opción `-h` para obtener datos en unidades más conocidas (en Kilobytes, Megabytes y Gigabytes) [^2].

`du` `[-s]` `[ruta [ruta] ... ]`

: Para examinar espacio empleado por cada una de las ruta y sus archivos y subdirectorios. Si no se especifica ruta alguna, este orden da información sobre el directorio de trabajo. La opción `-s` presenta totales de cada ruta (sin incluir los detalles de cada archivo o subdirectorio).

Al usar la opción `-a` con `ls`, por lo menos verá dos directorios más: `.` y `..`, el primero denota el directorio que examinó y el segundo denota el directorio en el cual está el directorio examinado. Por ejemplo si su directorio de trabajo es `/home/pepe` el caracter `.` abrevia `/home/pepe` mientras que `..` abrevia `/home`.

En la mayoría de programas y en el intérprete de órdenes podrá emplear tanto `.` como `..` para referenciar archivos y subdirectorios relativos al directorio de trabajo. Así mismo los archivos y directorios que estén en su directorio de trabajo puede referenciarlo sin prefijo alguno, por ejemplo `du` es equivalente a `du` porque muestra la utilización de disco del directorio de trabajo. Si en su directorio de trabajo tiene un directorio notas que tiene un archivo `2000.txt` puede verlo con el orden `less notas/2000.txt`.

También podrá emplear `~` que abrevia su directorio personal (i.e `/home/sulogin`). Por ejemplo si desde un intérprete de órdenes teclea `cd ~`, después `cd ../..` y después `pwd` verá que estará ubicado en el directorio raíz.

Otra facilidad que brinda el interprete de órdenes es la expansión de nombres de archivos con los comodines * y ?. ? indica una letra mientras que * indica una cantidad cualquiera de letras. Por ejemplo `ls /var/lo?` lista todos los archivos del directorio `var` de tres letras que comiencen con `lo`, mientras que `cp *gz ~` copia todos los archivos con sufijo gz en el directorio personal del usuario.

#### 3.1.2. Permisos

Para brindar algo de privacidad y protección cada archivo o directorio tiene asociados permisos diferentes para el dueño, para el grupo y para los demás usuarios. En el caso de archivos los permisos que pueden darse o quitarse son: (r) lectura, (w) escritura y (x) ejecución. En el caso de directorios los permisos son: (r) para listar los archivos, (w) para escribir, crear o borrar archivos y (x) para acceder a archivos del directorio. [^3].

Desde un administrador de archivos, puede ver los permisos de un archivo con el botón derecho del mouse cuando el puntero está sobre el archivo, escogiendo la opción apropiada del menú que aparece. Desde un interprete de órdenes puede emplear la orden `ls` con la opción `-l`. Un ejemplo del resultado de este orden se presenta a continuación:

    drwxr-xr-x    5 pepe   users        4096 Feb 21 06:31 graficas
    -rw-r-----    1 pepe   users       62561 May 13 18:13 c.tar.gz
    lrwxrwxrwx    1 pepe   users          12 Nov 12  2000 a -> /etc/hosts

La primera línea presenta un directorio (la `d` al principio de la línea lo indica), la segunda presenta un archivo (el guión inicial lo indica) y la tercera un enlace. El nombre del directorio es `graficas` tiene 5 archivos, fue modificado por última vez el 21 de Febrero del año en curso a las 6:31AM, el dueño es `pepe`, el grupo es `users` y el tamaño es 4096 bytes —en realidad el tamaño cobra sentido sólo en el caso de archivos como `c.tar.gz` cuyo tamaño es 62561 bytes. Los tres caracteres `rwx` que siguen a la `d` inicial indican los permisos para el dueño, los tres siguientes `r-x` indican los permisos para el grupo y los tres siguientes `r-x` indican los permisos para el resto de usuarios. Como el orden de estos permisos es siempre el mismo (primero lectura `r`, después escritura `w` y después ejecución `x`), resulta que el archivo `x.tar.gz` no es ejecutable, que puede ser leído por el dueño y el grupo pero no por los demás usuarios, además puede ser escrito sólo por `pepe`. Del enlace podemos destacar que se llama `a`, que enlaza al archivo `/usr/bin/awk` y que su tamaño y permisos reales los heredará de `/usr/bin/awk`.

Los permisos de un archivo pueden ser modificados por el dueño o por el administrador del sistema con la orden `chmod` que espera dos parámetros: cambio por realizar al permiso y nombre del archivo por cambiar. Los permisos se pueden especificar en octal o con una o más letras para identificar al usuario (u para el usuario, g para el grupo, o para los demás usuarios y a para todos), un +, un - o un = y después letras para identificar los permisos (r, w o x). Por ejemplo

`chmod og+x sube.sh`

  Da a los demás usuarios y al grupo permiso de ejecución del archivo `sube.sh` —que debe estar en el directorio desde el cual se da el orden.

`chmod a-w deu.txt`

  Quita el permiso de escritura en el archivo `deu.txt` tanto al dueño, como al grupo, como a los demás usuarios. Este mismo resultado puede obtenerse con la orden `chmod -w deu.txt`. Cuando no se especifican usuarios `chmod` toma por defecto todos los usuarios.

`chmod u=rxw,g=rx,o= textos`

  Cambia permisos del archivo (o directorio) textos, el usuario puede leer, ejecutar y escribir, el grupo puede leer y ejecutar mientras que los demás usuarios no tienen permisos.

El dueño de un archivo pueden ser modificados sólo por el administrador del sistema con el programa `chown`. Un usuario que pertenezca a varios grupos puede cambiar el grupo de uno de sus archivos a alguno de los grupos a los que pertenezca con el programa `chgrp`, por ejemplo

    chgrp estudiantes tarea1.txt

Cambiará el grupo del archivo `tarea1.txt` a `estudiantes`. Los grupos a los cuales un usuario pertenece son mostrados por el programa `groups`.

#### 3.1.3. Lecturas recomendadas: Archivos y permisos

- En estas guías puede consultar más sobre permisos y administración, ver Administración de usuarios.

- Cada uno de los órdenes para administrar archivos es muy flexible y configurable por medio de opciones, recomendamos de forma especial consultar las páginas `man` de cada uno de ellos.

- La jerarquía de directorios, los archivos y los permisos se organizan en las particiones de un disco duro o en un disquete empleando un sistema de archivo. Puede conocer algo más sobre el tema en Administración de archivos o con `man fs`.

- Como complemento a esta lectura, puede consultar varias secciones de la documentación de fileutils con `info fileutils` o en línea en http://www.gnu.org/manual/fileutils/html_mono/fileutils.html.

#### 3.1.4. Ejercicios: Archivos y permisos

1. ¿En su directorio personal hay archivos de configuración? En caso afirmativo cite algunos.

1. Estando en un intérprete de órdenes vaya al directorio `/usr/share/pixmaps` y liste con `ls` y caracteres comodín todos los archivos con extensión `.xpm`. Desde bash, copie uno de esos archivos a su directorio con la orden `cp`. (Ayuda: busque ayuda sobre la orden `cp` y emplee `~` para referirse a su directorio).

1. Para mejorar la seguridad de sus archivos y evitar que otras personas puedan consultarlos, quite a su directorio el permiso de ejecución para el grupo y para otros usuarios.

1. Revise los directorios de los usuarios del sistema en `/home`. Identifique y liste directorios con permisos de seguridad deficientes. Intente cambiar los permisos de archivos o directorios de otro usuario.

Anterior |  | Siguiente
2. Sobre la instalación | Inicio | 4. Paquetes y portes