Pular para o conteúdo principal

Questão de Sistemas Operacionais — Linux — VUNESP 2023

Sistemas OperacionaisLinux
Código
vu197276
Banca
VUNESP
Órgão
UNICAMP
Ano
2023
Cargo
PTIC ( )
Em um computador com o sistema operacional Linux, diferentes usuários acessam (para leitura e escrita) o diretório work, o qual armazena arquivos de código-fonte de um projeto. Esse diretório pertence ao grupo desenv, sendo que esse grupo também é um grupo secundário dos usuários mencionados. O diretório work já possui permissão de leitura e escrita para seu grupo. Deseja-se que os arquivos criados nesse diretório, por qualquer um desses usuários, pertençam automaticamente ao grupo desenv, e não ao grupo primário do usuário criador. O comando que adiciona a permissão correta ao diretório work para obter esse comportamento é:
  1. Achmod u+s work
  2. Bchmod g+w work
  3. Cchmod u+w desenv
  4. Dchmod g+s work
  5. Echmod u+x desenv
Revelar gabarito e comentário

GabaritoD — chmod g+s work

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Permissões e o bit setgid no Linux

Gabarito: letra D — o comando chmod g+s work ativa o bit setgid no diretório, fazendo com que os arquivos criados dentro dele herdem o grupo do diretório (desenv) em vez do grupo primário do usuário criador. É exatamente o comportamento descrito no enunciado.

O sistema de permissões do Linux é baseado em três classes de usuários — dono (u), grupo (g) e outros (o) — e três permissões básicas: leitura (r), escrita (w) e execução (x). Para diretórios, a permissão de escrita permite criar e remover arquivos, e a de execução permite acessar (buscar) o conteúdo. Além dessas permissões básicas, existem os chamados bits especiais: setuid (u+s), setgid (g+s) e sticky bit (o+t). Cada um tem um efeito particular, e é o setgid que resolve o problema proposto.

Quando o bit setgid é aplicado a um diretório, ele altera a regra padrão de atribuição de grupo para os arquivos criados dentro dele. Normalmente, um arquivo novo pertence ao grupo primário do usuário que o criou. Com o setgid ativo no diretório, o arquivo passa a pertencer ao grupo do diretório — no caso, desenv. Isso é extremamente útil em ambientes colaborativos, como o descrito na questão, onde vários usuários compartilham um diretório de trabalho e precisam que todos os arquivos sejam acessíveis pelo mesmo grupo, independentemente de qual usuário os criou.

Vale destacar que o setgid também pode ser aplicado a arquivos executáveis, mas nesse caso o efeito é diferente: o processo executado assume o grupo do arquivo, e não o do usuário que o executou. Essa distinção é importante e frequentemente cobrada em provas.

A pegadinha da questão está em confundir o setgid (g+s) com o setuid (u+s) ou com a simples permissão de escrita do grupo (g+w). O enunciado já informa que o diretório possui permissão de leitura e escrita para o grupo — ou seja, g+w já está configurado. O que falta é justamente o bit especial que garante a herança do grupo. O setuid (u+s) em um diretório não tem efeito relevante para a herança de grupo; ele é usado em arquivos executáveis para que o processo rode com os privilégios do dono do arquivo. As alternativas que mencionam desenv como alvo do comando estão erradas porque o comando deve ser aplicado ao diretório work, não ao grupo.

Guarde a distinção central: para que arquivos criados em um diretório herdem o grupo do diretório, o comando é chmod g+s <diretório>. É esse critério que separa a alternativa correta das demais.

Bits especiais
  • 1setuid (u+s)
    • Arquivo: roda com privilégios do dono
    • Diretório: sem efeito relevante
  • 2setgid (g+s)
    • Arquivo: processo assume grupo do arquivo
    • Diretório: arquivos herdam o grupo do diretório
  • 3sticky bit (o+t)
    • Diretório: só o dono remove arquivos
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

O comando chmod u+s work ativa o bit setuid no diretório. Esse bit, quando aplicado a um diretório, não tem efeito sobre a herança de grupo dos arquivos criados. O setuid é relevante para arquivos executáveis, fazendo o processo rodar com os privilégios do dono do arquivo. No contexto da questão, não atende ao objetivo.

Alternativa B — ❌ Incorreta

O comando chmod g+w work adiciona a permissão de escrita para o grupo no diretório. Porém, o enunciado já afirma que o diretório possui essa permissão. Portanto, o comando é redundante e não resolve o problema da herança de grupo. A permissão de escrita permite criar arquivos, mas não altera o grupo ao qual eles pertencerão.

Alternativa C — ❌ Incorreta

O comando chmod u+w desenv tenta adicionar permissão de escrita para o dono no grupo desenv. Isso é um erro conceitual: desenv é um grupo, não um diretório, e o comando chmod opera sobre arquivos e diretórios, não sobre grupos. Além disso, mesmo que fosse um diretório, a permissão de escrita para o dono não teria relação com a herança de grupo.

Alternativa D — ✅ Correta ⟵ GABARITO

O comando chmod g+s work ativa o bit setgid no diretório work. Com isso, qualquer arquivo criado dentro dele pertencerá automaticamente ao grupo do diretório (desenv), independentemente do grupo primário do usuário que o criou. É exatamente o comportamento desejado no enunciado.

Alternativa E — ❌ Incorreta

O comando chmod u+x desenv adiciona permissão de execução para o dono no grupo desenv. Assim como na alternativa C, há um erro conceitual: desenv é um grupo, não um diretório, e o chmod não opera sobre grupos. Além disso, a permissão de execução não tem relação com a herança de grupo dos arquivos criados.

Gabarito: letra D

Link permanente: /questoes/vu197276