Descifrar los permisos del sistema de archivos de Linux

Publicado: 2017-02-24

Los permisos de archivo de Linux pueden parecer jeroglíficos de teoría de números arcanos para algunos y es comprensible. El modelo de permisos del sistema de archivos de Linux proviene del legado de UNIX. Sin embargo, son bastante fáciles de comprender, una vez que comprende la lógica detrás de ellos.

Grupos y tipos de permisos

Todo el control de acceso a archivos y carpetas se define en el sistema de archivos utilizando la siguiente información:

  • Tres grupos de permisos: u para propietario, g , grupo, o o a , todos los usuarios.
  • Tres tipos de permisos: r , leer, x , ejecutar, w , escribir.

Los tipos de permisos son los caracteres "r", "x" y "w", llamados banderas, y se muestran como tales si enumera los permisos del archivo o carpeta de alguna manera. Las banderas no configuradas se muestran con un carácter "-". Los de grupo de permisos se utilizan en comandos que cambian la propiedad y el grupo de un archivo, en los que profundizaremos en breve.

Permisos de visualización

Puede ver los permisos de un archivo o carpeta utilizando un administrador de archivos GUI o inspeccionando el resultado del comando ls en la terminal de la consola.

Abre tu terminal y escribe el siguiente comando:

$ prueba táctil

$ ls -la prueba

-rw-r–r– 1 personal de yorgos 0 23 de febrero 17:07 prueba

La cadena “-rw-r–r–” contiene la información de permisos del sistema de archivos que nos interesa. El resto de los campos de izquierda a derecha muestran la siguiente información:

  • cuantos enlaces hay a este archivo (1)
  • ID de usuario del propietario (yorgos)
  • La identificación del grupo (personal)
  • Longitud del archivo en bytes (0)
  • Fecha de creación (23 de febrero)
  • Hora de creación (17:07)
  • Nombre de archivo (prueba)

bits de permiso

Notará que hay 9 combinaciones diferentes de grupos y tipos de permisos, pero 10 posiciones de bandera. El primero muestra el indicador de tipo de archivo, mientras que el último indica los permisos en sí. Los tipos de archivos pueden ser: "-" para archivos, "l" para enlaces simbólicos (estos son enlaces de sistemas de archivos que simplemente apuntan a otro archivo) y "d" para directorios. Dado que el primer carácter/bandera en nuestro ejemplo es "-", estamos hablando de un archivo simple. Continuando, analicemos el campo de permisos:

: Tipo de archivo (puede contener l, - o d)

rw- : permisos de lectura y escritura (sin ejecución). Estos permisos son para el propietario.

r– : permiso de lectura, sin permiso de escritura y ejecución. Estos permisos se refieren a los usuarios que pertenecen a un grupo.

r– : permiso de lectura, no escritura y ejecución. Por último, estos permisos conciernen a todos los demás.

Entonces, en efecto, esto solo significa que "el propietario puede leer y escribir este archivo, y todos los demás solo pueden leerlo". El grupo comparte los mismos permisos.

Modificación de permisos

Para modificar los permisos de un archivo o carpeta, nuevamente, puede usar un comando GUI (esto está fuera del alcance de este artículo, por lo que no iremos allí) o usar ciertos comandos de Linux en su terminal. El comando que vamos a utilizar se llama chmod (modo de cambio de archivo). El comando chmod acepta una variedad de parámetros que cambian su comportamiento de muchas maneras diferentes, pero su uso general es el siguiente:

$ chmod <modo> <archivo>

El <modo> se especifica mediante los siguientes símbolos:

r la bandera de lectura

w el indicador de escritura

x la bandera de ejecución

u el indicador de permiso de usuario/propietario

g la bandera de permiso de grupo

o el indicador de permiso de otros usuarios

Hay un par de otros, pero los discutiremos en la sección final de nuestro artículo.

Entonces, supongamos que desea otorgar permisos de ejecución a los usuarios que pertenecen al grupo (¡pero primero asegúrese de ser el propietario del archivo!):

prueba de $ chown g+x
$ ls -l prueba
-rwxrwxrwx 1 personal de yorgos 0 23 de febrero 17:07 prueba

O tal vez necesite bloquear a todos los demás por completo. No podrían leer, escribir o ejecutar el archivo:

prueba $ chown o-rwx
$ ls -l prueba
-rwxrwx— 1 personal de yorgos 0 23 de febrero 17:07 prueba

Aquí vemos las últimas banderas todas desactivadas en "-".
Si desea ver más ejemplos, consulte la página del manual de chmod emitiendo el siguiente comando:

$ hombre chmod

propietarios y grupos

También puede cambiar la propiedad de un archivo y grupo de un archivo mediante el comando chown .

El comando chown acepta varios parámetros que alteran su comportamiento de alguna manera, pero el uso más común es el siguiente:

# chown <propietario> <archivo>

O

# chown <propietario:grupo> <archivo>

El primer ejemplo se utiliza para cambiar el propietario de un archivo a otro. Sin embargo, tenga en cuenta que debe tener acceso de root para cambiar la propiedad de un archivo. Entonces, ejecutando lo siguiente:

# prueba de chown nadie

# ls -l prueba

-rwxrwxrwt 1 nadie personal 0 23 de febrero 17:07 prueba

ahora se revela que el archivo es propiedad del ID de usuario 'nadie' y ya no de 'yorgos'.

Del mismo modo el comando:

# Chown nadie: prueba de rueda

# ls -l prueba

-rwxrwxrwt 1 nadie rueda 0 23 de febrero 17:07 prueba


Cambia la propiedad del archivo a nadie y el grupo a rueda .

Si desea obtener más información sobre el comando y sus diversos parámetros, consulte la página del manual de chown emitiendo el comando:

$ hombre chown

Permisos especiales

Además de los tipos de permisos y grupos que ya hemos mencionado en el artículo, hay un par de otros, llamados "permisos especiales".

Estos son los siguientes:

s       El indicador Establecer ID de usuario y Establecer ID de grupo.

t       La bandera pegajosa.

El primero se establece usando el indicador "s" en el comando chmod de la manera habitual, como tal:

$ chmod u+s prueba
$ ls -l prueba
-rwsrwx—   1 yorgos   personal   0 23 feb 17:07 prueba

Esta bandera también se llama bandera SUID (Establecer ID de usuario) o SGID (Establecer ID de grupo). Si se establece este bit, el archivo hereda los derechos de acceso de su propietario. Esto significa que cualquiera que ejecute el archivo lo hace como propietario. El SGID es similar, pero el archivo hereda el derecho de acceso de su grupo. Esto, por supuesto, puede generar problemas de seguridad, por lo que se debe tener cuidado.

El bit adhesivo, o "t" es particularmente útil. Cuando se establece en un directorio, que generalmente se comparte como /tmp, los archivos creados allí solo pueden ser renombrados o eliminados por sus respectivos propietarios. Si el sticky bit no está configurado, el propietario del directorio no tiene control sobre ellos.

Puede hacer que un directorio sea "pegajoso" emitiendo el siguiente comando:

$ chmod +t /directorio

representación octal

Además de usar banderas para definir permisos como "r" y "w", también puede usar valores numéricos. El comando chmod asigna los siguientes valores a los permisos:

"r" = 4

“w” = 2

"x" = 1

Entonces, para configurar un archivo para lectura/escritura/ejecución para el propietario, y lectura/ejecución para todos los demás, lo que significa “-rwxr-xr-x”, calculamos el valor numérico como tal:

rwx = 4+2+1 = 7

rx = 4+1 = 5

Finalmente emitimos el comando:

$ chmod 755 prueba
$ ls – prueba
-rwxr-xr-x   1 yorgos   personal   21 24 feb 02:08 prueba

¡Practica por tu cuenta utilizando diferentes permisos y valores numéricos para dominarlo!