Crie e configure diretórios setGid para colaboração - RHCSA Preparação objetiva

Crie e configure diretórios setGid para colaboração - RHCSA Preparação objetiva

As permissões e direitos do sistema de arquivos GNU/Linux são a base da segurança do sistema, e um de seus princípios é a clara separação de direitos de arquivos e pastas. Em um ambiente fortemente multiusuário, como o servidor de uma escola, os direitos de arquivo impedem um usuário por padrão para excluir ou substituir acidentalmente os documentos de outro. No entanto, há casos de uso em que vários usuários precisam acessar (ler, escrever e até excluir) os arquivos de outros usuários - esse pode ser o caso no servidor escolar mencionado acima, onde os alunos trabalham no mesmo projeto. Nesta seção da preparação do exame RHCSA, aprenderemos a criar um ambiente para essa colaboração, usando a técnica SetGid (Set GroupID). Observe que, enquanto executamos essas etapas em um sistema operacional recente, o setGid não é uma coisa nova e você o encontrará em toda e qualquer distribuição.

Neste tutorial, você aprenderá:

  • Como adicionar usuários a um grupo suplementar
  • Como usar o set-Gid em um diretório
  • Como verificar a propriedade adequada no diretório de dispositivos set
  • Como usar o diretório especial como membro do grupo
Permitindo a colaboração com o SetGid Directory.

Requisitos de software e convenções usadas

Requisitos de software e convenções de linha de comando Linux
Categoria Requisitos, convenções ou versão de software usada
Sistema Red Hat Enterprise Linux 8
Programas GNU CoreUtils 8.30
Outro Acesso privilegiado ao seu sistema Linux como raiz ou através do sudo comando.
Convenções # - requer que os comandos Linux sejam executados com privilégios root diretamente como usuário root ou por uso de sudo comando
$ - Requer que os comandos do Linux sejam executados como um usuário não privilegiado regular

O caso de uso

Para demonstrar o uso do setGid, temos um servidor virtual e, nele, precisamos criar um grupo de usuários, adicionar membros e configurar um diretório que eles tenham acesso. Até agora este é apenas um
Questão de configurações de permissão. O truque será adicionar o setgid ao diretório, para que os arquivos criados dentro do diretório tenham o grupo proprietário do diretório pai. Como o grupo terá lido e gravação permissões no diretório, qualquer membro do grupo pode ler e escrever os arquivos, sem a necessidade da associação original do grupo de configuração do usuário explicitamente.

Configuração básica

Primeiro, criamos os objetos necessários. Vamos criar o diretório do projeto:

# mkdir -p /student_projects /Rocket_science

E nossos dois usuários, Sarah e John, Usando o comando useradd:

# userAdd John # userAdd sarah

Também precisamos criar um grupo de usuários que permitirá a colaboração entre seus membros:

# groupadd foguetengineers

Em seguida, definimos este grupo como proprietário do diretório do projeto, recursivamente:

# CHOW

Em seguida, adicionamos nossos usuários ao RocketEngineers grupo:

# userMod -a -g foguetengineers John # userMod -a -g foguetengineers sarah

Adicionamos o grupo como grupo secundário. Para detalhes sobre grupos, consulte o tutorial de associação ao grupo.



Para terminar a configuração básica, precisamos adicionar permissão total ao grupo no diretório:

# chmod 770 /student_projects /foguet_science

E com isso, nossa configuração básica está completa. Ambos os usuários podem escrever no diretório e os arquivos criados serão de propriedade do usuário, e o grupo de propriedade será o grupo principal do usuário. Podemos verificar o
Permissões com quem definimos Estado:

# Stat/Student_Projects/Rocket_Science Arquivo:/Student_projects/Rocket_Science Tamanho: 6 Blocks: 0 IO Block: 4096 Dispositivo de diretório: FD00H/64768D inode: 17789698 Links: 2 Acesso: (0770/drwxrwx ----) UID: ) GID: (1003/RocketEngineers) Contexto: UNNFINED_U: Object_R: Default_T: S0 Acesso: 2020-10-04 18:29:57.500453785 +0200 Modificar: 2020-10-04 18:29:47.650278956 +0200 Mudança: 2020-10-04 18:30:34.809115974 +0200 Nascimento: -

Os identificadores provavelmente diferem. Podemos ver que o proprietário do diretório é raiz, Enquanto a propriedade do grupo pertence ao RocketEngineers grupo. Isso permite que os dois membros
do grupo para ler e escrever de e para o diretório.

Colaboração sem setgid

Digamos que os dois usuários gostariam de compartilhar algumas anotações com esta configuração. Sarah Recebi um arquivo de texto com dados importantes em seu diretório inicial:

$ id uid = 1002 (Sarah) Gid = 1002 (Sarah) Grupos = 1002 (Sarah), 1003 (RocketEngineers) Contexto = UNNFINED_U: UNNFINED_R: UNNFINED_T: S0-S0: C0.C1023 $ CAT GENERAL_PROJECT.Notas texto

Para compartilhar com John, Ela copia o arquivo para o diretório compartilhado (então ainda há um backup em seu diretório doméstico, apenas por precaução):

$ cp general_project.Notas/Student_projects/Rocket_science/

Ao verificar os proprietários, podemos ver que o proprietário é realmente Sarah, e o grupo que possui o arquivo também é Sarah, O grupo principal do usuário:

$ stat/student_projects/foguet_science/general_project.Arquivo de notas:/student_projects/foguet_science/general_project.Notas Tamanho: 5 Blocos: 8 Bloco IO: 4096 Dispositivo de arquivo regular: FD00H/64768D INODE: 18019570 Links: 1 Acesso: (0664/-rw-rw-r--) UID: (1002/Sarah) GID: (1002/ Sarah) Contexto: UNNFINED_U: Object_R: Default_T: S0 Acesso: 2020-10-04 18:31:30.229099624 +0200 Modificar: 2020-10-04 18:31:30.229099624 +0200 Mudança: 2020-10-04 18:31:30.229099624 +0200 Nascimento: -

Vamos mudar para John. Ele também tem algumas descobertas no projeto e gostaria de compartilhá -las.

$ id uid = 1001 (john) gid = 1001 (john) grupos = 1001 (john), 1003 (foguetengineers) context = não confinado_u: UNNFINEND_R: UNNFINED_T: S0-S0: C0.C1023 $ ECHO "MyText"> Rocket.txt $ cp foguete.txt/student_projects/foguet_science/


As mesmas permissões se aplicam, o arquivo recém -copiado será de propriedade de John:

$ stat/student_projects/foguet_science/foguete.Arquivo TXT:/Student_projects/Rocket_science/Rocket.TIZ TXT: 7 Blocos: 8 Bloco IO: 4096 Dispositivo de arquivo regular: FD00H/64768D INODE: 18356857 Links: 1 Acesso: (0664/-rw-rw-r--) UID: (1001/John) GID: (1001//1001/ John) Contexto: UNNFINEN_U: Object_R: Default_T: S0 Acesso: 2020-10-04 18:32:24.433075710 +0200 Modificar: 2020-10-04 18:32:24.433075710 +0200 Mudança: 2020-10-04 18:32:24.433075710 +0200 Nascimento: -

Já que os dois são membros do RocketEngineers Grupo, eles podem ler o conteúdo do diretório e, como ambas as anotações são legíveis ao mundo, eles podem ler os dois
arquivos.

$ cat/student_projects/foguet_science/general_project.Notas texto

O problema surge quando John gostaria de adicionar algumas notas sobre SarahArquivo de dados importante:

$ echo "Alguns comentários" >>/student_projects/foguet_science/general_project.Notas -bash:/student_projects/Rocket_science/general_project.Notas: permissão negada

Na verdade, eles não podem trabalhar nos arquivos um do outro, apenas lê -los. Agora Sarah poderia definir a propriedade do grupo de seu arquivo para seu grupo comum, resolvendo o problema. Mas por que ela precisaria
isso com cada arquivo, se obtivéssemos o setgid para nos ajudar?

Definindo a bandeira setgid

Para definir a bandeira setgid, usamos chmod:

# chmod g+s /student_projects /foguet_science

Observe a bandeira "S" nas permissões Grop (definido como em negrito por uma questão de clareza):

# stat/student_projects/foguet_science Arquivo:/student_projects/foguet_science Tamanho: 53 Blocks: 0 IO Block: 4096 Dispositivo de diretório: fd00h/64768d inode: 17789698 Links: 2 Acesso: (2770/drWxrws---) UID: (0/ raiz) GID: (1003/ RocketEngineers) Contexto: UNNFINED_U: Object_R: Default_T: S0 Acesso: 2020-10-04 18:32:29.389167450 +0200 Modificar: 2020-10-04 18:32:24.433075710 +0200 Mudança: 2020-10-04 18:34:04.449927062 +0200 Nascimento: -

Testando e verificando os resultados

Agora Sarah Pode compartilhar suas novas notas de pesquisa:

$ CAT ACIMAS.Rocket TXT precisa.txt/student_projects/foguet_science/$ stat/student_projects/foguet_science/descobertas.Arquivo TXT:/Student_projects/Rocket_science/descobertas.TXT Tamanho: 19 Blocks: 8 Bloco IO: 4096 Dispositivo de arquivo regular: FD00H/64768D INODE: 18999000 Links: 1 Acesso: (0664/-RW-RW-R--) UID: (1002/Sarah) GID: ( 1003/foguetengineers) Contexto: UNNFINED_U: Object_R: Default_T: S0 Acesso: 2020-10-04 18:35:15.195236593 +0200 Modificar: 2020-10-04 18:35:15.195236593 +0200 Mudança: 2020-10-04 18:35:15.195236593 +0200 Nascimento: -


A propriedade do grupo é definida para o grupo do diretório pai por causa do setGid no lugar. Isso vai causar John Para poder comentar as novas notas de pesquisa:

$ eco "verificado!">>/Student_projects/Rocket_science/descobertas.txt $ cat/student_projects/foguet_science/descobertas.O foguete txt precisa de asas verificadas!

E com isso concluímos nosso objetivo de configurar um diretório de colaboração para um grupo de usuários. Poderíamos fazê -lo para outros grupos com o método acima, separando os dados de diferentes projetos por
Permissões, então um membro de um grupo não pode excluir acidentalmente dados de outro projeto.

# Título do vídeo: Trabalhando em um diretório setGid
# Descrição do vídeo: Editando os arquivos de outros usuários em um diretório setGid
# Nome do arquivo de vídeo: rhcsa_setgid.WebM

Trabalhando em um diretório setGid - editando os arquivos de outros usuários em um diretório setGid

Conclusão

Sob GNU/Linux Permissões rigorosas e direitos de propriedade, setGid é uma maneira simples de permitir que os usuários do sistema interajam com os arquivos um do outro de uma maneira segura, permitindo que o trabalho em grupo
Sem o uso de uma solução externa pesada ou estragar os grupos e permissões iniciais do usuário. No exemplo acima, não precisávamos tocar nos diretórios da casa do usuário ou em todo o sistema
Permissões, acabamos de montar um lugar especial onde eles podem compartilhar o que precisam.

Exercícios

  1. Crie vários diretórios de projeto com diferentes grupos. Verifique se os membros de um projeto podem ler os arquivos de outro projeto.
  2. Criar um diretório de projeto cruzado, onde qualquer membro do projeto tem acesso a.
  3. Crie um projeto cruzado somente leitura Diretório, onde apenas um projeto (gerenciamento de projetos) pode escrever, mas membros de todos os projetos podem ler.

Tutoriais do Linux relacionados:

  • Uma introdução à automação, ferramentas e técnicas do Linux
  • Coisas para instalar no Ubuntu 20.04
  • Mastering Bash Script Loops
  • Mint 20: Melhor que o Ubuntu e o Microsoft Windows?
  • Coisas para fazer depois de instalar o Ubuntu 20.04 fossa focal linux
  • Manipulando a entrada do usuário em scripts bash
  • Com que frequência você tem que reiniciar seu servidor Linux?
  • Download do Linux
  • Como criar backups incrementais e diferenciais com alcatrão
  • Arquivos de configuração do Linux: os 30 primeiros mais importantes