Crear y configurar directorios SetGID para la colaboración - Preparación de objetivos RHCSA
- 4319
- 420
- Norma Sedillo
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
Requisitos y convenciones de software utilizados
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 dominiops - 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 sarah
El 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
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
- Crear múltiples directorios de proyectos con diferentes grupos. Compruebe si los miembros de un proyecto pueden leer los archivos de otro proyecto.
- Cree un directorio de proyectos cruzados, donde cualquier miembro del proyecto tenga acceso a.
- 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
- « Cómo verificar una salud del disco duro desde la línea de comandos utilizando SmartCTL
- Cómo hacer estresar probar su CPU en Linux »