Permisos de Linux

De Mendoza CONICET

Permisos

Cada uno de los elementos del sistema de ficheros de Linux posee permisos de acceso de acuerdo a tres tipos de usuarios:

1. Su dueño (casi siempre el creador) representado por la letra "u" (user)

2. Su grupo representado por la letra "g" (group)

3.El resto de los usuarios que no son el dueño ni pertenecen al grupo. Se representan con "o" (other).

Nota: Para representar a todos los tipos de usuarios se utiliza la letra "a" (all).

Para cada uno de estos tres grupos de usuarios existen tres tipos de permisos fundamentales:

1. "r": read (lectura). El usuario que tenga este permiso podrá si es un directorio, listar los recursos almacenados en él, y si es culaquier otro tipo de fichero podrá leer su contenido.

2. "w" write (escritura). Todo usuario que posea este permiso para un fichero podrá modificarlo. Si se posee para un directorio se podrán crear y borrar ficheros en su interior.

3. "x" executive (ejecución). Este permiso para el caso de los ficheros permitirá ejecutarlos desde la línea de comandos y para los directorios, el usuario que lo posea tendrá acceso para realizar el resto de las funciones permitidas mediante los otros permisos (lecura y/o escritura).


Para determinar los permisos finales siempre se deben tener en cuenta los siguientes aspectos:

  • Para poder realizar operaciones sobre cualquier directorio (leer o escribir) será necesario siempre, tener otorgado además el permiso de ejecución.
  • Para acceder a un recurso de cualquier forma (ejecución, lectura o escritura) se deben tener permisos de ejecución para todos los directorios que contienen al recurso directa o indirectamente.

Los tres tipos de permisos mencionados poseen una representación numérica basada en el sistema octal que parte de representar como "1" los bits de los permisos otorgados y "0" para los negados. Luego se transforma la representación binaria así obtenida en octal. De esta forma se obtiene para cada tipo de permiso los siguientes valores:

r - - = 100 (4 en octal)

- w - = 010 (2 en octal)

- - x = 001 (1 en octal)

La combinación de los tres tipos de permisos para un tipo de usuario oscila desde cero (ningún permiso) hasta siete (todos los permisos)

Ejemplos:

r w - = 110 (6 en octal)

r w x = 111 (7 en octal)

r - x = 101 (5 en octal)

Los permisos "totales" de un recurso consta de nueve indicadores, donde los tres primeros indican los permisos asociados al dueño, los otros tres, al grupo y los últimos, al resto de los usuarios.

Ejemplos:

r w x r - x - - - = 111 101 000 (750 en octal)
r w - r - - r - - = 110 100 100 (644 en octal)

Sólo el dueño de un recurso siempre tendrá derecho a cambiar sus permisos, además de root.

Existen otros tipos de permisos más complejos:

  • s y S: es un permiso que de no administrarse correctamente puede provocar problemas de seguridad. Para su representación a través de caracteres se utiliza el lugar del permiso de ejecución y de ahí la diferencia entre s y S: si es s (minúscula) significa que incluye además el permiso de ejecución a diferencia de S (mayúscula). Este permiso se puede asociar al dueño o al grupo del recurso. Si se asocia a un fichero significa que cuando este se ejecute por un usuario que tenga permisos para ello adquirirá los permisos de su dueño o grupo en dependenciade la cual de los dos está asociado el permiso. Un ejemplo de fichero con este permiso es el comando "passwd", el cual adquiere los permisos de root al ser ejecutado por los usuarios (sin argumentos) para poder modificar el fichero "/etc/shadow" que es donde se guardan las contraseñas de los usuarios. Para el caso de un directorio este permiso sólo tiene validez para el grupo del mismo permitiendo a los ficheros y a los subdirectorios que se creen en él heredar el grupo, los subdirectorios heredarán también el permiso "s". Un ejemplode directorio con este permiso es aquel donde se guardan los documentos de un sitio FTP anónimo. Este permiso se conoce como setuid bit o setgid bit, para el usuario y el grupo, respectivamente.
  • t y T: cuando está asociado a un directorio junto al permiso de escritura para un grupo de usuarios, indica que estos usuarios pueden escribir nuevos ficheros en el directorio pero estos sólo podrán ser borrados por sus dueños o por root. Para un fichero el permiso expresa que el texto de este se almacena en memoria swap para ser accedido con mayor rapidez. Este permiso solo se asocia al resto de los usuarios y para su representación se emplea el bit correspondiente al permiso de ejecución: si es t (minúscula) significa que incluye además el permiso de ejecución y T (mayúscula) no lo incluye. Ejemplo de un directorio con este permiso es "/tmp" donde todos los usuarios pueden escribir pero sólo los dueños pueden borrar sus ficheros, además de root. Este permiso se conoce también como sticky bit.

Para representar los permisos t y s en el sistema binario se utilizan tres bits adicionales: el primero par s en el dueño, el segundo para s en el grupo y el tercero para t. Estos se colocan al inicio de la cadena numérica de nuevebits vista anteriormente. En la cadena de carcterres se mezclan con el permiso de ejecución y de ahí la necesidad de emplear las mayúsculas y minúsculas.

Ejemplos

r w s r w S r - - = 110 111 110 100 (6764 en octal)
r w x r w s - w T = 011 111 111 010 (3772 en octal)
Herramientas personales