Archivos, permisos y usuarios

Autora: M. Nayeli Luis-Vargas

Objetivo

  • Aprender a crear y editar archivos desde la terminal.

  • Comprender el significado de lo símbolos de permisos y ser capaza de cambiarlos.

  • Comprender las diferencias entre las ligas soft y hard.

Un archivo o fichero en Linux puede definirse como una colección de datos que aparecen al usuario como un bloque de información.

Nota

Te recomiendo siempre hacer carpetas para cada prueba/ejercicio que vayas a realizar y conozcas la dirección exacta. En este caso, seguiré utilizando Sandbox, pero tu puedes utilizar la terminal de tu computadora o del ambiente Linux que hayas creado.

Crear archivos

Primero, crearemos un directorio para guardar todo lo que hagamos en este apartado, ingresaremos en ese nuevo directorio, crearemos una carpeta dentro e imprimiremos la ruta:


mkdir 01_archivos
cd 01_archivos
mkdir genomica
pwd

Una vez que estés dentro de tu directorio de trabajo, vamosa a crear un fichero. Para crear archivos solo basta con utilizar el comando touch:


touch archivo01.txt

Y para asegurarnos que fue creado podemos ingresar el comando ls:


ls

Podras observar que ya aparece tu archivo. Tambié podemos crear varios ficheros en una sola línea. Imaginemos que deseamos crear 10 archivos, lo que escribiríamos a continuación sería:


touch archivo0{2..9}.txt

Lista de nuevo para comprobar que se han creado.

Ahora, vamos a utilizar el comando echo para pasar una linea de texto como un argumento y guardarlo en un archivo.


echo "Aprender bioinformatica es bueno para la salud" > archivo02.txt

Si te das cuenta, utilicé el símbolo de “mayor que” para poder indicar en donde quería guardar la linea de texto.

Vamos a comprobar que archivo02.txt se creó correctamente, para esto lo abriremos y usaremos el comando file.


file archivo02.txt

file determina el tipo y formato de un archivo, en este caso es un fichero que utiliza el formato de codificación ASCII que es el Código Estadounidense Estándar para el Intercambio de Información y es el código que se utiliza en los ficheros generados por métodos de secuenciación masiva. Aquí puedes hallar cada símbolo.

Podemos cambiar el nombre de un archivo con el comando mv.


mv archivo02.txt archivo02_mod.txt

Vuelve a listar para comprobar que el cambio se llevó a cabo.

Editar archivos

Para editar algún archivo desde la terminal se utilizan editores de texto. GNU nano es un editor de texto para entornos similares a Unix y otros sistemas operativos que utilizan una línea de comandos de terminal. Existen otros editores como vi, vim, Emacs y pico, en este caso usaremos Nano.

Primero, vamos a crear un nuevo archivo con el siguiente ejemplo:


nano datos_alumnos.txt

Te abrirá una ventana de éste estilo:

_images/nano.png

Fig. 7 Ventana de Nano


Ahora ingresaremos una tabla donde separaremos cada valor por tabuladores `tab`. Es decir, nombre + tab + apellido + tab + correo.
_images/01.png

Fig. 8 Valores ingresados en Nano


Ahora darás control + x para salir del editor nano, y te aparecerá un menú que te preguntará si deseas guardar lo que has modificado, le pondrás que si presionando la tecla y y luego Enter.

Permisos y usuarios

Cada archivo o fichero tiene un propietario individual (por lo general, el usuario que lo creó) y un amplio conjunto más amplio de propietarios que pertenece a un grupo Unix en particular. Un grupo Unix es un conjunto de usuarios que tienen permiso para acceder a un software o archivos particulares. Los grupos también se utilizan para garantizar que solo determinados usuarios puedan utilizar comnados que pueden afectar todo el sistema Linux. Para ver en qué grupos se encuentra.

Primero veremos que usuario somos, para ello ingresaremos en terminal:

whoami

Este comando desplegará el nombre de tu usuario, si te encuentras realizando ésta práctica en CS50 Sandbox , tu usuario será ‘root’.

Ahora para conocer los permisos de un archivo se escribe en terminal ls -l. Veamos los permisos de los archivos que creamos:

_images/permisos.png

Fig. 9 Permisos

Como se puede ver en la imagen (o en tu propia pantalla), aparece una especie de tabla con siete columnas.

  • La primera columna tiene 10 caracteres, el caracter en la posición 1 indica si el archivo tiene un estatus especial, si primero tiene una ‘d’, entonces el archivo listado es un directorio. En este caso, el directorio ‘genomica’. De la posición 2-4 son los permisos del propietario, de la posición 5-7 son los permisos para el grupo, de la posición 8-10 son los permisos para el resto de los usuarios o público. Ahora los permisos son:

    • r: read - permiso para leer el archivo.

    • w: write - permiso para escribir en el archivo, es decir, editar.

    • x: executable - permiso para ejecutar en caso de ser un script o programa, todas las carpetas son ejecutables, por tanto el permiso para abrir la carpeta ‘genomica’ está concedido.

  • La segunda columna indica el número de links que tiene ese archivo.

  • La tercera columna el usuario propietario.

  • La cuarta columna el rango de usuario que tiene el propietario del archivo.

  • La quinta columna el peso del archivo en bytes.

  • La sexta columna la fecha y hora de creación.

  • La séptima columna el nombre del archivo.

Cambiar permisos

Para cambiar los permisos se utilizan los comandos chown, chgrp y chmod. Te recomiendo ver más especificaciones de cada uno con el comando man.

chown

change owner. En general sólo lo utilizan quienes tienen permiso de administrador.

chgrp

change group .Se utiliza para cambiar el grupo propietario.

chmod

change mode. Permite cambiar los permisos de acceso de un fichero o directorio. La sintaxis que se utiliza es numérica, por ejemplo, si se quiere dar permiso de lectura, escritura y ejecución de un archivo para todos la sintaxis sería:


chmod 777 archivo01.txt

Si vuelves a listar ( ls -l) podrás ver que los permisos para tu ‘archivo01.txt’ han cambiado. Ahora en la primera columna deberá aparecerte -rwxrwxrwx. Para saber el número que deberías poner para cambiar los permisos puedes utilizar la siguiente calculadora de chmod.


Otra manera de usar chmod es de manera simbólica, donde se usan las letras u (usuario), g (grupo) y a (all, todos), los simbolos + (más) o - (menos) y las letras r (read, leer), w (write, escribir) o x (executable, ejecutar) para cambiar los permisos. Por ejemplo, supongamos que tenemos un script (un programa) llamado ‘script.sh’ que deseamos ejecutar, para cambiar los permisos escribiríamos en terminal:


chmod a+x script.sh

Super usuarios

Todas las versiones de UNIX tienen un super-usuario el cual tiene TODOS los derechos y privilegios sobre el SO y los archivos dentro del mismo. Este usuario es root y pertenece al grupo del mismo nombre, siendo su UID y GID 0. Existe un comando especial llamado sudo (super user do) que al utilizarlo permite al usuario actual tener privilegios de super-usuario temporales. No te emociones, muchas veces se te solicita una contraseña cuando utilizar este comando.


usuario@computadora: ~$ sudo [comando]