Permisos de acceso a archivos

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda

La mayoría de los sistemas de archivos modernos permiten asignar permisos (o derechos de acceso) a los archivos para determinados usuarios y grupos de usuarios. De esta manera, se puede restringir o permitir el acceso de un determinado usuario a un archivo para su visualización de contenidos, modificación y/o ejecución (en caso de un archivo ejecutable).

Diferencias entre los sistemas operativos[editar]

Los sistemas UNIX o compatibles POSIX, incluyendo sistemas basados en Linux y Mac OS X, poseen un sistema simple para el manejo de permisos sobre archivos individuales. POSIX especifica también un sistema de listas de control de acceso (ACLs), pero sólo está implementado por ciertos sistemas de archivos y sistemas operativos.

Las variantes de DOS (incluyendo los productos de Microsoft MS-DOS, Windows 95, Windows 98, y Windows Me) no implementan ningún sistema de permisos. Existe un atributo de "solo lectura" que puede ser asignado o quitado de cualquier archivo por cualquier usuario.

Microsoft Windows NT y sus derivados (incluyendo Windows 2000 y Windows XP), así como VMS y OpenVMS usan listas de control de acceso (ACLs) para administrar un conjunto más complejo y variado de permisos.

Permisos tradicionales en sistemas UNIX/LINUX: Notación[editar]

Los permisos de sistemas UNIX se dividen en tres clases, conocidas como usuario, grupo y otros (con frecuencia abreviado UGO, por sus siglas en inglés, User, Group, Others). De hecho, los permisos en Unix son una forma simplificada de listas de control de acceso (ACLs).

Notación simbólica[editar]

Existen muchas formas para representar los esquemas de permisos Unix. La forma más común es la notación simbólica. Este esquema permite representar permisos en una serie de 10 caracteres.

Primer carácter
- archivo regular
d directorio
l enlace simbólico
Tres grupos de tres caracteres
primero lo que el propietario (o dueño) puede hacer
segundo lo que los miembros del grupo de usuarios pueden hacer
tercero lo que el resto de los usuarios pueden hacer
La tupla
primero r: leíble, -: no leíble
segundo w: modificable, -: protegido contra escritura
tercero x: ejecutable, -: no ejecutable

El primer carácter indica el tipo de archivo:

Cada clase de permisos se representa por tres caracteres. El primer conjunto de caracteres representa la clase de usuario. El segundo conjunto representa la clase de grupo. El tercer y último conjunto de tres caracteres representa la clase del resto.

Cada uno de los tres caracteres representa los permisos de lectura, escritura y ejecución respectivamente:

  • 'r' si el bit de lectura está asignado, '-' en caso contrario.
  • 'w' si el bit de escritura está asignado, '-' en caso contrario.
  • 'x' si el bit de ejecución está asignado, '-' en caso contrario.

Estos son algunos ejemplos de notación simbólica:

  1. "-rwxr-xr-x" para un archivo regular que tiene todos los permisos asignados para su propietario y solo permisos de lectura y ejecución para el grupo de usuarios del archivo y el resto de los usuarios. Ningún usuario, salvo el propietario, puede modificar los contenidos del archivo.
  2. "crw-rw-r--" para un archivo especial de caracteres que tiene permisos de lectura y escritura para su propietario y grupo de usuarios y solo permiso de lectura para el resto de los usuarios.
  3. "dr-x------" para un directorio que tiene permisos de lectura y ejecución únicamente para su propietario.

Notación simbólica y permisos adicionales[editar]

Los tres permisos adicionales se indican cambiando uno de los tres permisos de ejecución según se indica en la tabla siguiente:

Permiso Clase Ejecutable1 No ejecutable²
Set User ID (setuid) Usuario s S
Set Group ID (setgid) Grupo s S
Sticky Otros t T
  1. El carácter que se utilizará para indicar que el bit de ejecución estará asignado también.
  2. El carácter que se utilizará cuando el bit de ejecución no esté asignado.

He aquí un ejemplo:

  • "-rwsr-Sr-x" para un archivo cuya clase de usuario tiene permisos de lectura, escritura y ejecución, cuya clase de grupo tiene permiso de lectura, cuya clase del resto tiene permisos de lectura y ejecución y que tiene los permisos de setuid y setgid asignados.

Notación octal[editar]

Otra forma muy común de representar los permisos Unix es la notación octal, que consiste en un valor de tres o cuatro dígitos en base 8.

Con la notación octal de tres dígitos, cada número representa un componente distinto del conjunto de permisos: clase de usuario, clase de grupo y clase del resto respectivamente.

Cada uno de estos dígitos es la suma de los bits que lo componen (véase también sistema de numeración binario). El peso de cada bit en un dígito es el siguiente:

  • El bit de lectura suma 4 al total.
  • El bit de escritura suma 2 al total.
  • El bit de ejecución suma 1 al total.

Estos valores nunca producen una combinación ambigua: cada suma representa un conjunto específico de permisos.

He aquí los ejemplos de la sección Notación simbólica de más arriba en su notación octal:

  • "-rwxr-xr-x" se representa como 755 en notación octal de tres dígitos.
  • "-rw-rw-r--" se representa como 664 en notación octal de tres dígitos.
  • "-r-x------" se representa como 500 en notación octal de tres dígitos.

Notación octal y permisos adicionales[editar]

Existe también un cuarto dígito para la notación octal. En este nuevo esquema, los tres dígitos descritos antes forman parte de los tres últimos dígitos del valor final. El primer dígito representa los permisos adicionales. En algunos sistemas, este primer dígito no puede omitirse y por lo tanto es común usar los cuatro dígitos (con el primer dígito nulo en caso de que no se deseen permisos adicionales).

El primer dígito se forma también como suma de pesos:

  • El bit setuid suma 4 al total.
  • El bit setgid suma 2 al total.
  • El bit sticky suma 1 al total.

El ejemplo de la sección Notación simbólica y permisos adicionales, "-rwsr-Sr-x" se representa como 6745 en notación octal de cuatro dígitos. Los ejemplos de la sección precedente se representan como 0755, 0664, y 0500 respectivamente en notación octal de cuatro dígitos.

Véase también[editar]