GNU/Linux >> Tutoriales Linux >  >> Linux

Permisos de Linux 101

Comprender los permisos de Linux y cómo controlar qué usuarios tienen acceso a los archivos es una habilidad fundamental para la administración de sistemas.

Este artículo cubrirá los permisos estándar de los sistemas de archivos de Linux, profundizará en los permisos especiales y terminará con una explicación de los permisos predeterminados usando umask. .

Comprensión del resultado del comando ls

Antes de que podamos hablar sobre cómo modificar los permisos, necesitamos saber cómo verlos. Los ls comando con el argumento de lista larga (-l ) nos da mucha información sobre un archivo.

$ ls -lAh
total 20K
-rwxr-xr--+ 1 root root    0 Mar  4 19:39 file1
-rw-rw-rw-. 1 root root    0 Mar  4 19:39 file10
-rwxrwxr--+ 1 root root    0 Mar  4 19:39 file2
-rw-rw-rw-. 1 root root    0 Mar  4 19:39 file8
-rw-rw-rw-. 1 root root    0 Mar  4 19:39 file9
drwxrwxrwx. 2 root root 4.0K Mar  4 20:04 testdir

Para entender lo que esto significa, dividamos la salida con respecto a los permisos en secciones individuales. Será más fácil hacer referencia a cada sección individualmente.

Eche un vistazo a cada componente de la línea final en el resultado anterior:

drwxrwxrwx. 2 root root 4.0K Mar  4 20:04 testdir

La sección 1 (a la izquierda) revela qué tipo de archivo es.

Sección 1 Sección 2 Sección 3 Sección 4 Sección 5 Sección 6 Sección 7
d rwx rwx rwx  . raíz raíz

La página de información de ls tiene una lista completa de los diferentes tipos de archivos.

Cada archivo tiene tres modos de acceso:

  • el propietario
  • el grupo
  • todos los demás

Las secciones 2, 3 y 4 se refieren a los permisos de usuario, grupo y "otros usuarios". Y cada sección puede incluir una combinación de r (leer), w (escribir) y x permisos (ejecutables).

A cada uno de los permisos también se le asigna un valor numérico, lo cual es importante cuando se habla de la representación octal de los permisos.

d Directorio
- Archivo normal
l Un enlace suave

La Sección 5 detalla cualquier método de acceso alternativo, como SELinux o la Lista de control de acceso a archivos (FACL).

Permiso Valor octal
Leer 4
Escribir 2
Ejecutar 1

Las secciones 6 y 7 son los nombres del propietario y del grupo, respectivamente.

Usando chown y chmod

El comando chown

El chown El comando (cambiar propiedad) se utiliza para cambiar la propiedad del grupo y del usuario de un archivo.

Para cambiar la propiedad del usuario y del grupo del archivo foo para rootear , podemos usar estos comandos:

$ chown root:root foo
$ chown root: foo

Ejecutar el comando con el usuario seguido de dos puntos (: ) establece la propiedad del usuario y del grupo.

Para establecer solo la propiedad del usuario del archivo foo a la raíz usuario, ingrese:

$ chown root foo

Para cambiar solo la propiedad del grupo del archivo foo , preceda el grupo con dos puntos:

$ chown :root foo

El comando chmod

El chmod El comando (modo de cambio) controla los permisos de archivo para el propietario, el grupo y todos los demás usuarios que no son el propietario ni forman parte del grupo asociado con el archivo.

El chmod El comando puede establecer permisos tanto en formato octal (p. ej., 755, 644, etc.) como simbólico (p. ej., u+rwx, g-rwx, o=rw).

La notación octal asigna 4 "puntos" para leer , 2 para escribir y 1 para ejecutar . Si queremos asignarle al usuario leer permisos, asignamos 4 a la primera ranura, pero si queremos agregar escribir permisos, debemos agregar 2. Si queremos agregar ejecutar , luego agregamos 1. Hacemos esto para cada tipo de permiso:propietario, grupo y otros.

Por ejemplo, si queremos asignar leer , escribir y ejecutar al propietario del archivo, pero solo leer y ejecutar para los miembros del grupo y todos los demás usuarios, usaríamos 755 en formato octal. Esos son todos los bits de permiso para el propietario (4+2+1), pero solo un 4 y 1 para el grupo y otros (4+1).

El desglose de eso es:4+2+1=7; 4+1=5; y 4+1=5.

Si quisiéramos asignar leer y escribir al propietario del archivo pero solo leer para los miembros del grupo y todos los demás usuarios, podríamos usar chmod de la siguiente manera:

$ chmod 644 foo_file

En los ejemplos a continuación, usamos notación simbólica en diferentes agrupaciones. Tenga en cuenta las letras u , g , y o representar a usuario , grupo y otros . Usamos u , g , y o junto con + , - , o = para agregar, eliminar o establecer bits de permiso.

Para agregar el ejecutar bit al conjunto de permisos de propiedad:

$ chmod u+x foo_file

Para eliminar leer , escribir y ejecutar de miembros del grupo:

$ chmod g-rwx foo_file

Para configurar la propiedad para que todos los demás usuarios lean y escribir :

$ chmod o=rw

Los bits especiales:establecer UID, establecer GID y sticky bits

Además de los permisos estándar, existen algunos bits de permisos especiales que tienen algunos beneficios útiles.

Establecer ID de usuario (suid)

Cuando suicidio se establece en un archivo, una operación se ejecuta como el propietario del archivo, no como el usuario que ejecuta el archivo. Un buen ejemplo de esto es la contraseña dominio. Necesita el suid bit que se establecerá para que el cambio de una contraseña se ejecute con permisos de root.

$ ls -l /bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10  2014 /bin/passwd

Un ejemplo de configuración de suid bit sería:

$ chmod u+s /bin/foo_file_name

Establecer ID de grupo (sgid)

El sgid bit es similar al suid bit en el sentido de que las operaciones se realizan bajo la propiedad del grupo del directorio en lugar de que el usuario ejecute el comando.

Un ejemplo del uso de sgid sería si varios usuarios estuvieran trabajando en el mismo directorio, y cada archivo creado en el directorio necesita tener los mismos permisos de grupo. El siguiente ejemplo crea un directorio llamado collab_dir , establece el sgid bit y cambia la propiedad del grupo a webdev .

$ mkdir collab_dir
$ chmod g+s collab_dir
$ chown :webdev collab_dir

Ahora cualquier archivo creado en el directorio tendrá la propiedad de grupo de webdev en lugar del usuario que creó el archivo.

$ cd collab_dir
$ touch file-sgid
$ ls -lah file-sgid
-rw-r--r--. 1 root webdev 0 Jun 12 06:04 file-sgid

La parte "pegajosa"

Más recursos de Linux

  • Hoja de trucos de los comandos de Linux
  • Hoja de trucos de comandos avanzados de Linux
  • Curso en línea gratuito:Descripción general técnica de RHEL
  • Hoja de trucos de red de Linux
  • Hoja de trucos de SELinux
  • Hoja de trucos de los comandos comunes de Linux
  • ¿Qué son los contenedores de Linux?
  • Nuestros últimos artículos sobre Linux

El bit adhesivo indica que solo el propietario de un archivo puede eliminarlo, incluso si los permisos del grupo lo permitieran. Esta configuración suele tener más sentido en un directorio común o colaborativo como /tmp . En el siguiente ejemplo, la t en el ejecutar columna de todos los demás el conjunto de permisos indica que se ha aplicado el sticky bit.

$ ls -ld /tmp
drwxrwxrwt. 8 root root 4096 Jun 12 06:07 /tmp/

Tenga en cuenta que esto no evita que alguien edite el archivo; simplemente evita que eliminen el contenido de un directorio.

Configuramos el sticky bit con:

$ chmod o+t foo_dir

Por su cuenta, intente configurar el sticky bit en un directorio y otorgue permisos de grupo completo para que varios usuarios puedan leer, escribir y ejecutar en el directorio porque están en el mismo grupo.

A partir de ahí, cree archivos como cada usuario y luego intente eliminarlos como el otro.

Si todo está configurado correctamente, un usuario no debería poder eliminar usuarios del otro usuario.

Tenga en cuenta que cada uno de estos bits también se puede establecer en formato octal con SUID=4, SGID=2 y Sticky=1.

$ chmod 4744
$ chmod 2644
$ chmod 1755

¿Mayúsculas o minúsculas?

Si está configurando los bits especiales y ve una S mayúscula o T en lugar de minúsculas (como hemos visto hasta este punto), es porque el bit de ejecución subyacente no está presente. Para demostrarlo, el siguiente ejemplo crea un archivo con el sticky bit establecido. Luego podemos agregar/eliminar el bit de ejecución para demostrar el cambio de caso.

$ touch file cap-ST-demo
$ chmod 1755 cap-ST-demo
$ ls -l cap-ST-demo
-rwxr-xr-t. 1 root root 0 Jun 12 06:16 cap-ST-demo

$ chmod o-x cap-X-demo
$ ls -l cap-X-demo
-rwxr-xr-T. 1 root root 0 Jun 12 06:16 cap-ST-demo

Configurando el bit de ejecución condicionalmente

Hasta este punto, hemos configurado el ejecutar bit usando una x minúscula , que lo establece sin hacer preguntas. Tenemos otra opción:usar una X mayúscula en lugar de minúsculas establecerá ejecutar bit solo si ya está presente en algún lugar del grupo de permisos. Este puede ser un concepto difícil de explicar, pero la demostración a continuación ayudará a ilustrarlo. Observe aquí que después de intentar agregar ejecutar bit a los privilegios del grupo, no se aplica.

$ touch cap-X-file
$ ls -l cap-X-file
-rw-r--r--. 1 root root 0 Jun 12 06:31 cap-X-file
$ chmod g+X cap-X-file
$ ls -l cap-X-file
-rw-r--r--. 1 root root 0 Jun 12 06:31 cap-X-file

En este ejemplo similar, agregamos primero el bit de ejecución a los permisos del grupo usando la x minúscula. y luego usa la X mayúscula para agregar permisos para todos los demás usuarios. Esta vez, la X mayúscula establece los permisos.

$ touch cap-X-file
$ ls -l cap-X-file
-rw-r--r--. 1 root root 0 Jun 12 06:31 cap-X-file
$ chmod g+x cap-X-file
$ ls -l cap-X-file
-rw-r-xr--. 1 root root 0 Jun 12 06:31 cap-X-file
$ chmod g+x cap-X-file
$ chmod o+X cap-X-file
ls -l cap-X-file
-rw-r-xr-x. 1 root root 0 Jun 12 06:31 cap-X-file

Comprensión de umask

La máscara enmascara (o "bloquea") bits del conjunto de permisos predeterminado para definir permisos para un archivo o directorio. Por ejemplo, un 2 en umask la salida indica que está bloqueando la escritura bit de un archivo, al menos por defecto.

Uso de la máscara El comando sin argumentos nos permite ver el umask actual entorno. Hay cuatro columnas:la primera está reservada para el suid especial, sgid o sticky bit, y las tres restantes representan el propietario, el grupo y otros permisos.

$ umask
0022

Para entender lo que esto significa, podemos ejecutar umask con una -S (como se muestra a continuación) para obtener el resultado de enmascarar los bits. Por ejemplo, debido al 2 valor en la tercera columna, el escribir bit está enmascarado del grupo y otras secciones; solo leer y ejecutar se pueden asignar para esos.

$ umask -S
u=rwx,g=rx,o=rx

Para ver cuál es el conjunto de permisos predeterminado para archivos y directorios, configuremos nuestro umask a todos ceros. Esto significa que no estamos enmascarando ningún bit cuando creamos un archivo.

$ umask 000
$ umask -S
u=rwx,g=rwx,o=rwx

$ touch file-umask-000
$ ls -l file-umask-000
-rw-rw-rw-. 1 root root 0 Jul 17 22:03 file-umask-000

Ahora, cuando creamos un archivo, vemos que los permisos predeterminados son leer (4) y escribir (2) para todas las secciones, lo que equivaldría a 666 en representación octal.

Podemos hacer lo mismo para un directorio y ver que sus permisos predeterminados son 777. Necesitamos ejecutar bit en directorios para que podamos recorrerlos.

$ mkdir dir-umask-000
$ ls -ld dir-umask-000
drwxrwxrwx. 2 root root 4096 Jul 17 22:03 dir-umask-000/

Conclusión

Hay muchas otras formas en que un administrador puede controlar el acceso a los archivos en un sistema. Estos permisos son básicos para Linux y podemos construir sobre estos aspectos fundamentales. Si su trabajo lo lleva a FACL o SELinux, verá que también se basan en estas primeras reglas de acceso a archivos.


Linux
  1. ¿Qué es Umask en Linux?

  2. Restablecer contraseña raíz en Linux

  3. Conceptos básicos de los permisos de archivos de Linux

  4. Permisos de Linux:una introducción a chmod

  5. Laboratorio Linux:SysAdmin 101

Contraseña predeterminada de Kali Linux

Comprender los permisos de archivos de Linux

Comando Umask en Linux

Comando Chmod en Linux (Permisos de archivo)

Cómo cambiar permisos en Linux

Comando Chmod en Linux

    Método Personaje
    Ningún otro método  -
    SELinux  .
    FACL  +
    Cualquier combinación de métodos  +