Crear y configurar directorios SetGID para la colaboración - Preparación de objetivos RHCSA

Crear y configurar directorios SetGID para la colaboración - Preparación de objetivos RHCSA

Los permisos y derechos del sistema de archivos GNU/Linux son la base de la seguridad del sistema, y ​​uno de sus principios es la clara separación de los derechos a los archivos y carpetas. En un entorno de gran multiusuario, como el servidor de una escuela, los derechos de archivo evitan que un usuario de manera predeterminada elimine o sobrescribe accidentalmente los documentos de otro. Sin embargo, hay casos de uso en los que múltiples usuarios necesitan acceder (leer, escribir e incluso eliminar) los archivos de otros usuarios; tal puede ser el caso en el servidor escolar mencionado anteriormente, donde los estudiantes trabajan en el mismo proyecto. En esta sección de la preparación del examen RHCSA, aprenderemos cómo crear un entorno para dicha colaboración, utilizando la técnica SETGID (SET GroupId). Tenga en cuenta que mientras realizamos estos pasos en un sistema operativo reciente, el setgid no es algo nuevo, y lo encontrará en todas y cada una de las distribuciones.

En este tutorial aprenderás:

  • Cómo agregar usuarios a un grupo suplementario
  • Cómo usar Set-GID en un directorio
  • Cómo verificar la propiedad adecuada dentro del directorio Set-GID
  • Cómo usar el directorio especial como miembro del grupo
Habilitando la colaboración con el directorio SetGID.

Requisitos y convenciones de software utilizados

Requisitos de software y convenciones de línea de comandos de Linux
Categoría Requisitos, convenciones o versión de software utilizada
Sistema Red Hat Enterprise Linux 8
Software GNU coreutils 8.30
Otro Acceso privilegiado a su sistema Linux como root o a través del sudo dominio.
Convenciones # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominio
ps - Requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado

El caso de uso

Para demostrar el uso del SETGID, tenemos un servidor virtual, y en él necesitamos crear un grupo de usuarios, agregar miembros y configurar un directorio al que ambos tengan acceso. Hasta ahora esto es solo un
Configuración de permiso. El truco será agregar el setgid al directorio, por lo que los archivos creados dentro del directorio tendrán el grupo propietario del directorio principal. Dado que el grupo tendrá permisos de lectura y escritura dentro del directorio, cualquier miembro del grupo puede leer y escribir los archivos, sin la necesidad de la membresía del grupo de configuración del usuario original explícitamente.

Configuración básica

Primero creamos los objetos necesarios. Creemos el directorio del proyecto:

# mkdir -p /student_projects /rocket_science

Y nuestros dos usuarios, sarah y John, Uso del comando UserAdd:

# UserAdd John # UserAdd Sarah

También necesitamos crear un grupo de usuarios que permita la colaboración entre sus miembros:

# GroupAdd RocketEnellingers

A continuación, establecemos este grupo como propietario del directorio del proyecto, recursivamente:

# Chown -r: RocketEngineers /Student_Projects /Rocket_Science

A continuación, agregamos a nuestros usuarios al coincidineros grupo:

# usermod -a -g cohetEngineers John # usermod -a -g cohetEdingeners Sarah

Agregamos el grupo como grupo secundario. Para obtener detalles sobre los grupos, consulte el tutorial de membresía del grupo.



Para finalizar la configuración básica, necesitamos agregar permiso completo al grupo en el directorio:

# CHMOD 770 /Student_Projects /Rocket_Science

Y con esto, nuestra configuración básica está completa. Ambos usuarios pueden escribir en el directorio, y los archivos creados serán propiedad del usuario, y el grupo de propiedad será el grupo principal del usuario. Podemos verificar el
Permisos con los que establecemos estadística:

# STAT/Student_Projects/Rocket_Science:/Student_Projects/Rocket_Science Tamaño: 6 Bloques: 0 IO Bloque: 4096 Dispositivo de directorio: FD00H/64768D INODO: 17789698 Enlaces: 2 Acceso: (0770/DRWXRWX ---) UID: (0/root ) GID: (1003/RocketEngineers) Contexto: no Confined_u: Object_R: Default_T: S0 Acceso: 2020-10-04 18:29:57.500453785 +0200 Modificar: 2020-10-04 18:29:47.650278956 +0200 Cambio: 2020-10-04 18:30:34.809115974 +0200 Nacimiento: -

Lo más probable es que los identificadores difieran. Podemos ver que el propietario del directorio es raíz, mientras que la propiedad del grupo pertenece al coincidineros grupo. Esto permite a ambos miembros
del grupo para leer y escribir desde y hacia el directorio.

Colaboración sin setgid

Digamos que a los dos usuarios les gustaría compartir algunas notas con esta configuración. sarah Obtuve un archivo de texto con datos importantes en su directorio de inicio:

$ id uid = 1002 (sarah) gid = 1002 (sarah) grupos = 1002 (sarah), 1003 (cohetEnginineers) context = no confined_u: no confined_r: no confined_t: s0-s0: c0: c0.C1023 $ Cat General_Project.Texto de notas

Para compartirlo con John, Ella copia el archivo al directorio compartido (por lo que todavía hay una copia de seguridad en su directorio de casa, por si acaso):

$ CP General_Project.notas/student_projects/rocket_science/

Al verificar las propietarios, podemos ver que el propietario es de hecho sarah, y el grupo que posee el archivo también es sarah, el grupo principal del usuario:

$ STAT/Student_Projects/Rocket_Science/General_Project.archivo de notas:/student_projects/rocket_science/general_project.Notas Tamaño: 5 bloques: 8 Bloque IO: 4096 Dispositivo de archivo regular: FD00H/64768D Inodo: 18019570 Enlaces: 1 Acceso: (0664/-RW-RW-R--) UID: (1002/Sarah) GID: (1002/1002/1002/ Sarah) Contexto: no Confined_u: Object_R: Default_T: S0 Acceso: 2020-10-04 18:31:30.229099624 +0200 Modificar: 2020-10-04 18:31:30.229099624 +0200 Cambio: 2020-10-04 18:31:30.229099624 +0200 Nacimiento: -

Cambiemos a John. También tiene algunos hallazgos en el proyecto, y le gustaría compartirlos.

$ id uid = 1001 (John) gid = 1001 (John) grupos = 1001 (John), 1003 (RocketEnginineers) context = no Confined_u: no Confined_r: no Confined_t: S0-S0: C0.C1023 $ echo "mytext"> cohete.txt $ cp cohete.txt/student_projects/rocket_science/


Se aplican los mismos permisos, el archivo recién copiado será propiedad de John:

$ stat/student_projects/rocket_science/cohet.Archivo txt:/student_projects/rocket_science/rocket.Txt Tamaño: 7 bloques: 8 Bloque IO: 4096 Dispositivo de archivo regular: FD00H/64768D Inodo: 18356857 Enlaces: 1 Acceso: (0664/-RW-RW-R--) UID: (1001/John) GID: (1001/1001/ John) Contexto: no Confined_u: Object_r: Default_t: S0 Acceso: 2020-10-04 18:32:24.433075710 +0200 Modificar: 2020-10-04 18:32:24.433075710 +0200 Cambio: 2020-10-04 18:32:24.433075710 +0200 Nacimiento: -

Ya que ambos son miembros del coincidineros grupo, pueden leer el contenido del directorio, y dado que ambas notas son legibles al mundo, ambos pueden leer el uno al otro
archivos.

$ Cat/Student_Projects/Rocket_Science/General_Project.Texto de notas

El problema surge cuando John Me gustaría agregar algunas notas sobre sarahEl archivo de datos importante:

$ echo "algunos comentarios" >>/student_projects/rocket_science/general_project.notas -bash:/student_projects/rocket_science/general_project.Notas: permiso denegado

En efecto, no pueden trabajar en los archivos de los demás, solo leanlos. Ahora sarah podría establecer la propiedad del grupo de su archivo a su grupo común, resolviendo así el problema. Pero, ¿por qué necesitaría ella?
que con cada archivo, si tenemos el setgid para ayudarnos?

Configurar la bandera setgid

Para establecer el indicador SetGid, usamos chmod:

# Chmod G+S /Student_Projects /Rocket_Science

Observe la bandera "S" en los permisos de grop (establecido como audaz en aras de la claridad):

# STAT/Student_Projects/Rocket_Science:/Student_Projects/Rocket_Science Tamaño: 53 Bloques: 0 IO Bloque: 4096 Dispositivo de directorio: FD00H/64768D INODO: 17789698 Enlaces: 2 Acceso: (2770/DRWXRWs---) Uid: (0/ root) GID: (1003/ cohetEnginineers) Contexto: no confinado_u: object_r: default_t: s0 acceso: 2020-10-04 18:32:29.389167450 +0200 Modificar: 2020-10-04 18:32:24.433075710 +0200 Cambio: 2020-10-04 18:34:04.449927062 +0200 Nacimiento: -

Prueba y verificación de los resultados

Ahora sarah Puede compartir sus nuevas notas de investigación:

$ hallazgos de gatos.Txt Rocket necesita alas $ CP Hallazgos.txt/student_projects/rocket_science/$ stat/student_projects/rocket_science/hallazgos.archivo txt:/student_projects/rocket_science/hallazgos.Txt Tamaño: 19 Bloques: 8 IO Bloque: 4096 Dispositivo de archivo regular: FD00H/64768D Inodo: 18999000 Enlaces: 1 Acceso: (0664/-RW-RW-R--) UID: (1002/Sarah) GID: (( 1003/RocketEnellingers) Contexto: no confined_u: object_r: default_t: s0 acceso: 2020-10-04 18:35:15.195236593 +0200 Modificar: 2020-10-04 18:35:15.195236593 +0200 Cambio: 2020-10-04 18:35:15.195236593 +0200 Nacimiento: -


La propiedad del grupo se establece en el grupo del directorio matriz debido a la setgid en su lugar. Que causará John Para poder comentar las nuevas notas de investigación:

$ Echo "Verificado!">>/student_projects/rocket_science/hallazgos.txt $ cat/student_projects/rocket_science/hallazgos.Txt Rocket necesita alas verificadas!

Y con eso completamos nuestro objetivo de establecer un directorio de colaboración para un grupo de usuarios. Podríamos hacerlo para otros grupos con el método anterior, separando los datos de diferentes proyectos por parte de
Permisos, por lo que un miembro de un grupo no puede eliminar accidentalmente los datos de otro proyecto.

# Título del video: Trabajar en un directorio de Setgid
# Descripción del video: editar los archivos de otros usuarios en un directorio setgid
# Nombre del archivo de video: RHCSA_SETGID.webm

Trabajar en un directorio de SetGID: editar los archivos de otros usuarios en un directorio SETGID

Conclusión

Bajo permisos estrictos de GNU/Linux y derechos de propiedad, setgid es una forma simple de permitir que los usuarios del sistema interactúen con los archivos de los demás de manera segura, lo que permite el trabajo del grupo
sin el uso de una solución externa pesada, o estropear los grupos y permisos iniciales del usuario. En el ejemplo anterior, no necesitamos tocar los directorios de inicio del usuario o su sistema en todo el sistema
Permisos, acabamos de configurar un lugar especial donde puedan compartir lo que necesitan para.

Ejercicios

  1. Crear múltiples directorios de proyectos con diferentes grupos. Compruebe si los miembros de un proyecto pueden leer los archivos de otro proyecto.
  2. Cree un directorio de proyectos cruzados, donde cualquier miembro del proyecto tenga acceso a.
  3. Crear un proyecto cruzado solo lectura Directorio, donde solo los miembros del proyecto (gestión de proyectos) pueden escribir, pero los miembros de todos los proyectos pueden leer.

Tutoriales de Linux relacionados:

  • Una introducción a la automatización, herramientas y técnicas de Linux
  • Cosas para instalar en Ubuntu 20.04
  • Mastering Bash Script Loops
  • Mint 20: Mejor que Ubuntu y Microsoft Windows?
  • Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
  • Manejo de la entrada del usuario en scripts bash
  • ¿Con qué frecuencia tiene que reiniciar su servidor de Linux??
  • Descarga de Linux
  • Cómo crear copias de seguridad incrementales y diferenciales con TAR
  • Archivos de configuración de Linux: los 30 principales más importantes