Unix / Linux - Modos de acceso / permiso de archivo

En este capítulo, discutiremos en detalle sobre los modos de acceso y permisos de archivos en Unix. La propiedad de los archivos es un componente importante de Unix que proporciona un método seguro para almacenar archivos. Cada archivo en Unix tiene los siguientes atributos:

  • Owner permissions - Los permisos del propietario determinan qué acciones puede realizar el propietario del archivo en el archivo.

  • Group permissions - Los permisos del grupo determinan qué acciones puede realizar un usuario, que es miembro del grupo al que pertenece un archivo, en el archivo.

  • Other (world) permissions - Los permisos para otros indican qué acción pueden realizar todos los demás usuarios en el archivo.

Los indicadores de permisos

Durante el uso ls -l comando, muestra diversa información relacionada con el permiso del archivo de la siguiente manera:

$ls -l /home/amrood
-rwxr-xr--  1 amrood   users 1024  Nov 2 00:10  myfile
drwxr-xr--- 1 amrood   users 1024  Nov 2 00:10  mydir

Aquí, la primera columna representa diferentes modos de acceso, es decir, el permiso asociado con un archivo o directorio.

Los permisos se dividen en grupos de tres, y cada posición en el grupo denota un permiso específico, en este orden: leer (r), escribir (w), ejecutar (x) -

  • Los primeros tres caracteres (2-4) representan los permisos del propietario del archivo. Por ejemplo,-rwxr-xr-- representa que el propietario tiene permiso de lectura (r), escritura (w) y ejecución (x).

  • El segundo grupo de tres caracteres (5-7) consiste en los permisos para el grupo al que pertenece el archivo. Por ejemplo,-rwxr-xr-- representa que el grupo tiene permiso de lectura (r) y ejecución (x), pero no de escritura.

  • El último grupo de tres caracteres (8-10) representa los permisos para todos los demás. Por ejemplo,-rwxr-xr-- representa que hay read (r) solo permiso.

Modos de acceso a archivos

Los permisos de un archivo son la primera línea de defensa en la seguridad de un sistema Unix. Los bloques de construcción básicos de los permisos de Unix son losread, writey execute permisos, que se describen a continuación:

Leer

Otorga la capacidad de leer, es decir, ver el contenido del archivo.

Escribir

Otorga la capacidad de modificar o eliminar el contenido del archivo.

Ejecutar

El usuario con permisos de ejecución puede ejecutar un archivo como programa.

Modos de acceso al directorio

Los modos de acceso al directorio se enumeran y organizan de la misma manera que cualquier otro archivo. Hay algunas diferencias que deben mencionarse:

Leer

El acceso a un directorio significa que el usuario puede leer el contenido. El usuario puede mirar elfilenames dentro del directorio.

Escribir

Acceso significa que el usuario puede agregar o eliminar archivos del directorio.

Ejecutar

La ejecución de un directorio no tiene mucho sentido, así que piense en esto como un permiso de desplazamiento.

Un usuario debe tener execute acceso al bin directorio para ejecutar el ls o la cd mando.

Cambiar permisos

Para cambiar el archivo o los permisos del directorio, utilice el chmodcomando (cambiar modo). Hay dos formas de usar chmod: el modo simbólico y el modo absoluto.

Usando chmod en modo simbólico

La forma más fácil para que un principiante modifique los permisos de archivos o directorios es usar el modo simbólico. Con los permisos simbólicos, puede agregar, eliminar o especificar el conjunto de permisos que desee mediante los operadores de la siguiente tabla.

No Señor. Operador y descripción de Chmod
1

+

Agrega los permisos designados a un archivo o directorio.

2

-

Elimina los permisos designados de un archivo o directorio.

3

=

Establece los permisos designados.

Aquí hay un ejemplo usando testfile. Corriendols -1 en el archivo de prueba muestra que los permisos del archivo son los siguientes:

$ls -l testfile
-rwxrwxr--  1 amrood   users 1024  Nov 2 00:10  testfile

Entonces cada ejemplo chmod El comando de la tabla anterior se ejecuta en el archivo de prueba, seguido de ls –l, para que pueda ver los cambios de permisos -

$chmod o+wx testfile
$ls -l testfile
-rwxrwxrwx  1 amrood   users 1024  Nov 2 00:10  testfile
$chmod u-x testfile
$ls -l testfile
-rw-rwxrwx  1 amrood   users 1024  Nov 2 00:10  testfile
$chmod g = rx testfile
$ls -l testfile
-rw-r-xrwx  1 amrood   users 1024  Nov 2 00:10  testfile

Así es como puede combinar estos comandos en una sola línea:

$chmod o+wx,u-x,g = rx testfile
$ls -l testfile
-rw-r-xrwx  1 amrood   users 1024  Nov 2 00:10  testfile

Usando chmod con permisos absolutos

La segunda forma de modificar los permisos con el comando chmod es usar un número para especificar cada conjunto de permisos para el archivo.

A cada permiso se le asigna un valor, como muestra la siguiente tabla, y el total de cada conjunto de permisos proporciona un número para ese conjunto.

Número Representación de permiso octal Árbitro
0 Sin autorización ---
1 Permiso de ejecución --X
2 Permiso de escritura -w-
3 Permiso de ejecución y escritura: 1 (ejecutar) + 2 (escribir) = 3 -wx
4 Leer permiso r--
5 Permiso de lectura y ejecución: 4 (lectura) + 1 (ejecución) = 5 rx
6 Permiso de lectura y escritura: 4 (lectura) + 2 (escritura) = 6 rw-
7 Todos los permisos: 4 (lectura) + 2 (escritura) + 1 (ejecutar) = 7 rwx

Aquí hay un ejemplo usando el archivo de prueba. Corriendols -1 en el archivo de prueba muestra que los permisos del archivo son los siguientes:

$ls -l testfile
-rwxrwxr--  1 amrood   users 1024  Nov 2 00:10  testfile

Entonces cada ejemplo chmod El comando de la tabla anterior se ejecuta en el archivo de prueba, seguido de ls –l, para que pueda ver los cambios de permisos -

$ chmod 755 testfile
$ls -l testfile
-rwxr-xr-x  1 amrood   users 1024  Nov 2 00:10  testfile
$chmod 743 testfile
$ls -l testfile
-rwxr---wx  1 amrood   users 1024  Nov 2 00:10  testfile
$chmod 043 testfile
$ls -l testfile
----r---wx  1 amrood   users 1024  Nov 2 00:10  testfile

Cambio de propietarios y grupos

Al crear una cuenta en Unix, asigna un owner ID y un group IDa cada usuario. Todos los permisos mencionados anteriormente también se asignan según el propietario y los grupos.

Hay dos comandos disponibles para cambiar el propietario y el grupo de archivos:

  • chown - el chown comando significa "change owner" y se utiliza para cambiar el propietario de un archivo.

  • chgrp - el chgrp comando significa "change group" y se utiliza para cambiar el grupo de un archivo.

Cambio de propiedad

los chowncomando cambia la propiedad de un archivo. La sintaxis básica es la siguiente:

$ chown user filelist

El valor del usuario puede ser el name of a user en el sistema o en el user id (uid) de un usuario en el sistema.

El siguiente ejemplo le ayudará a comprender el concepto:

$ chown amrood testfile
$

Cambia el propietario del archivo dado al usuario. amrood.

NOTE - El superusuario, root, tiene la capacidad ilimitada de cambiar la propiedad de cualquier archivo, pero los usuarios normales pueden cambiar la propiedad solo de los archivos que poseen.

Cambiar la propiedad del grupo

los chgrpEl comando cambia la propiedad del grupo de un archivo. La sintaxis básica es la siguiente:

$ chgrp group filelist

El valor del grupo puede ser el name of a group en el sistema o the group ID (GID) de un grupo en el sistema.

El siguiente ejemplo le ayuda a comprender el concepto:

$ chgrp special testfile
$

Cambia el grupo del archivo dado a special grupo.

Permiso de archivos SUID y SGID

A menudo, cuando se ejecuta un comando, tendrá que ejecutarse con privilegios especiales para realizar su tarea.

Por ejemplo, cuando cambia su contraseña con el passwd comando, su nueva contraseña se almacena en el archivo /etc/shadow.

Como usuario habitual, no tiene read o writeacceso a este archivo por razones de seguridad, pero cuando cambia su contraseña, necesita tener permiso de escritura en este archivo. Esto significa que elpasswd El programa tiene que otorgarle permisos adicionales para que pueda escribir en el archivo. /etc/shadow.

Se otorgan permisos adicionales a los programas a través de un mecanismo conocido como Set User ID (SUID) y Set Group ID (SGID) bits.

Cuando ejecuta un programa que tiene habilitado el bit SUID, hereda los permisos del propietario de ese programa. Los programas que no tienen el bit SUID establecido se ejecutan con los permisos del usuario que inició el programa.

Este también es el caso de SGID. Normalmente, los programas se ejecutan con los permisos de su grupo, pero en su lugar, su grupo se cambiará solo para este programa al propietario del grupo del programa.

Los bits SUID y SGID aparecerán como la letra "s"si el permiso está disponible. El SUID"s" bit se ubicará en los bits de permiso donde los propietarios execute el permiso normalmente reside.

Por ejemplo, el comando -

$ ls -l /usr/bin/passwd
-r-sr-xr-x  1   root   bin  19031 Feb 7 13:47  /usr/bin/passwd*
$

Muestra que el bit SUID está establecido y que el comando es propiedad de la raíz. Una letra mayúsculaS en la posición de ejecución en lugar de minúsculas s indica que el bit de ejecución no está establecido.

Si el bit adhesivo está habilitado en el directorio, los archivos solo se pueden eliminar si usted es uno de los siguientes usuarios:

  • El propietario del directorio fijo
  • El propietario del archivo que se elimina
  • El superusuario, root

Para configurar los bits SUID y SGID para cualquier directorio, intente con el siguiente comando:

$ chmod ug+s dirname
$ ls -l
drwsr-sr-x 2 root root  4096 Jun 19 06:45 dirname
$