Revista Tecnología

Administración Linux (IV) – Permisos de archivos y directorios

Publicado el 09 diciembre 2014 por Instintobinario

Antes de comenzar con el artículo de hoy he de hacer notar que ha cambiado el nombre de la serie. Te preguntarás por qué motivo. La verdad es que el otro nombre era correcto al inicio de ésta serie, ya que solo pretendía enseñar comando del sistema Linux y su utilización. Sin embargo, tras la anterior entrega, queda en evidencia que no es un nombre correcto, ya que vamos a tratar partes en la que no entra ningún comando, si no explicaciones del funcionamiento del sistema. Por ejemplo, en el presente artículo sólo hablaremos de dos comandos, aunque habrá muchas más explicaciones detrás. Así pues he decidido cambiar el nombre de “Consola Linux” por “Administración Linux”, de forma que describa mejor el propósito de la misma. También se notará que he cambiado los títulos de los demás artículos, sin embargo las url quedarán iguales para evitar problemas con lo enlaces. Dicho y aclarado éste punto, vamos a comenzar con el artículo.

Linux es un sistema multiusuario y multiproceso, lo que quiere decir que puede haber varios usuarios trabajando en el mismo equipo a la par que puede haber varios procesos ejecutándose al tiempo. Por éste motivo, es necesario implementar una serie de permisos de acceso a los ficheros y directorios de forma que se pueda controlar el acceso de los usuarios a la información contenida en el sistema.

En los sistemas Linux existen 3 tipos de permisos: lectura (read), escritura (write) y ejecución (execute). Mediante estos tres permisos se puede controlar la confidencialidad y la seguridad en todo el sistema. El permiso de lectura da acceso a la lectura del contenido de un archivo, o a listar el contenido de una archivo con el comando ls. El permiso de escritura permite escribir, modificar o eliminar el contenido de una archivo, incluso eliminar el archivo en sí. En los directorios permite crear, eliminar y mover archivos desde o hacia el directorio. El permiso de ejecución permite ejecutar el archivo si es un programa o ingresar en el directorio mediante el comando cd.

Además, en Linux, todo archivo ha de tener un usuario propietario, que por defecto suele ser el usuario que lo crea o el root para los archivos del sistema. Como en un mismo sistema puede haber muchos usuarios, para gestionar más fácilmente los permisos se dividen en grupos. Estos grupos suelen utilizarse para agrupar a usuarios que son diferentes en la vida real. Por ejemplo, en una empresa se pueden crear los grupos de marketing, contabilidad, dirección, técnicos, etc.; en una universidad se puede utilizar para separar: profesores, alumnos, dirección, invitados… En otro artículo hablaremos de los usuarios y los grupos más en detalle.

Todo esto está muy bien, pero debemos ser capaces de saber que archivos tiene cada archivo o directorio. En el modo gráfico hay diversas maneras según el entorno de escritorio que tengamos instalado, generalmente se hace clic con el botón secundario del ratón en el icono correspondiente al archivo o el directorio y se accede a propiedades. Sin embargo, en ésta serie estamos aprendiendo a manejar la consola del sistema, por este motivo vamos a mirar y modificar los permisos de archivos y directorios mediante ésta herramienta. Para ver los archivos es tan simple como entrar en el directorio donde queramos ver los permisos y listar el contenido en modo largo: ls -l. Aparecerá una serie de columnas con información, de las cuales miraremos solo la primera, tercera y cuarta.

 

Administración Linux (IV) – Permisos de archivos y directorios

 

En la imagen superior vemos un ejemplo de un listado de archivos en formato largo. Analicemos los permisos. La tercera y cuarta columnas indican el propietario del archivo y el grupo. En la primera columnas tenemos 10 caracteres, cada uno con su función. En el primero hay una letra ‘d’ o un guión (‘-‘). La letra d indica que se trata de un directorio, y el guión indica que se trata de un fichero regular. Los siguientes 9 caracteres es necesario agruparlos de 3 en 3 para entenderlos bien. El primer grupo de 3 indica los permisos del propietario, indicado en la tercera columna. El siguiente grupo de 3 indica los permisos del grupo al que pertenece el usuario, indicado en la cuarta columna, que pueden ser más restrictivos. Por último, el último grupo de 3, dice los permisos que tienen los demás usuarios del sistema.

Por ejemplo, en la imagen superior, vemos que la carpeta instintobinario, contiene el directorio Comentarios, y el fichero Linux.txt. El directorio no tiene ningún permiso para nadie (esto no es común, solo es para poner un ejemplo). El fichero tiene los permisos de lectura y escritura para el propietario y para el grupo y el permiso de lectura para los demás. Esta es la configuración más común de permisos.

Vamos ahora a ver como podemos cambiar permisos de acceso a los archivos y directorios, ya que esta es la mayor labor para la administración de un sistema: Quién puede ver cada parte del sistema. Para esta labor utilizamos el comando chmod, cuyo formato es:

chmod [<opciones>] [<usuarios>][<+,->][<permisos>] archivo

Las opciones del comando son muy básicas, así que no las voy a explicar aquí, si queréis aprenderlas utilizad el manual del sistema (man chmod). Tan solo voy a decir que la opción -R asigna los permisos a los directorios y subdirectorios de forma recursiva. Los usuarios los podemos seleccionar del siguiente modo, pudiendo realizar cualquier combinación de ellos:

  • a = Todos los usuarios (All). Aplicará el permiso indicado a todos los usuarios. No tiene sentido que se combine con otros.
  • u = Propietario (User). Aplica los permisos al propietario del archivo.
  • g = Grupo (Group). Aplica los permisos a los usuarios del grupo al que pertenece el propietario.
  • o = Otros (Other). Aplica los permisos a otros usuarios.

Tras seleccionar el usuario al que se van a asignar los permisos, decidimos si queremos añadirlos (+), o quitarlos (-), y paramos a decir que permisos vamos a modificar: ‘r’, para lectura; ‘w’, para escritura; o ‘x’ para ejecución. Se puede realizar cualquier combinación de estos permisos.

Veamos varios ejemplos:

  • chmod u+rwx Linux.txt = añade los permisos de lectura, escritura y ejecución para el propietario al fichero Linux.txt.
  • chmod a+rw Comentarios = añade permisos de lectura y escritura para todos al directorio Comentarios.
  • chmod +w Linux.txt = añade permisos de lectura a todos los usuarios.
  • chmod o-w Comentarios = elimina el permisos de escritura para los demás usuarios.

También se puede combinar diferentes acciones en una línea:

  • chmod u+x,o-r Linux.txt = añade permisos de ejecución para el propietario y elimina los permisos de lectura para otros usuarios al fichero Linux.txt.

Hay otra forma de asignar permisos a los ficheros que puede que a algunos les resulte más fácil y a otros quizás más compleja. Sería asignando los permisos en modo octal, mediante un número para cada grupo. La sintaxis de ésta es la siguiente:

  • chmod [<opciones>] <permisos> archivo

La asignación de permisos debemos entenderla en binario, de forma que a cada grupo de 3 le asignamos un 1 al permiso concedido y un 0 al permiso no concedido. De ésta forma, si vamos a conceder todos los permisos al usuario, de lectura y escritura al grupo y de lectura a otros, debemos asignar: 111 110 100, dividido en los 3 grupos. Sin embargo debemos pasar esto al sistema octal,para lo cual, en cada grupo, el primer dígito sumará 4, el segundo 2 y el tercero 1, pero sólo si tiene un 1. De ésta forma, la anterior cadena queda en: 7 6 4. Así pues podemos asignarlo del siguiente modo: chmod 764 Linux.txt. Es posible que en un futuro escribamos sobre los sistemas de numeración y como se convierte de unos a otros.

Los permisos tienen ciertas dependencias que hay que tener en cuenta. Todo fichero hereda los permisos del directorio que lo contiene, ya que si no se tiene permisos de lectura sobre un directorio, técnicamente, no se puede acceder a los ficheros que contiene el mismo. Sin embargo, no se podrá listar el directorio, pero si alguno de los ficheros tiene permisos de lectura o de escritura, podremos acceder a él escribiendo la ruta directa.

Por último, vamos a terminar explicando como cambiar de grupo a los usuarios. Para ello utilizamos el comando chown. Su sintaxis es la siguiente:

chown [<opciones>] propietario[:grupo] fichero

Las opciones son igual de triviales que en el comando chmod, funcionando la opción -R de igual forma. Es obligatorio indicar un propietario, pero no un grupo.

Como viene siendo habitual en ésta serie, os ofrezco un pequeño listado de los artículos que hay escritos hasta ahora, aunque os adelanto que, cuando acabe la serie haré un artículo recopilatorio en el que enlazaré a todos los artículos que lo componen para que resulten más fáciles de encontrar y para que podáis añadirlo a vuestros favoritos y utilizarlo como directorio de consulta.

Administración Linux (I) – ¿Por que la consola?

Administración Linux (II) – Navegar el árbol de directorios Linux

Administración Linux (III) – Los directorios Linux

 


Volver a la Portada de Logo Paperblog

Revista