Questão nº 48
Questão de Tecnologia da Informação · CESGRANRIO Transpetro PSP-RH-2018.1 (nº 48)
A Bourne-Again Shell (bash) permite a execução de scripts que podem automatizar tarefas e facilitar a administração do sistema.
Um script dessa shell que, quando executado no sistema Linux, imprime o nome de login e o nome do grupo principal dos usuários cadastrados no sistema, deve utilizar a combinação de comandos:
- A
cut -d: -f1,3 /etc/passwd | while read x; do y=`echo $x | cut -d: -f1`; z=`echo $x | cut -d: -f2`; w=`cut -d: -f1,2 /etc/group | grep “:$z\$” | cut -d: -f1`; echo “$y:$w”; done - B
cut -d: -f1,3 /etc/passwd | while read x; do y=`echo $x | cut -d: -f1`; z=`echo $x | cut -d: -f2`; w=`cut -d: -f1,3 /etc/group | grep “:$z\$” | cut -d: -f1`; echo “$y:$w”; done - C
cut -d: -f1,3 /etc/passwd | while read x; do y=`echo $x | cut -d: -f1`; z=`echo $x | cut -d: -f2`; w=`cut -d: -f1,4 /etc/group | grep “:$z\$” | cut -d: -f1`; echo “$y:$w”; done - D
cut -d: -f1,4 /etc/passwd | while read x; do y=`echo $x | cut -d: -f1`; z=`echo $x | cut -d: -f2`; w=`cut -d: -f1,2 /etc/group | grep “:$z\$” | cut -d: -f1`; echo “$y:$w”; done - E
(alternativa correta)cut -d: -f1,4 /etc/passwd | while read x; do y=`echo $x | cut -d: -f1`; z=`echo $x | cut -d: -f2`; w=`cut -d: -f1,3 /etc/group | grep “:$z\$” | cut -d: -f1`; echo “$y:$w”; done
Resposta comentada
Gabarito Alternativa E
Conceito-chave: O arquivo /etc/passwd guarda o UID (identificador numérico do usuário) no campo 3, e o /etc/group guarda o GID (identificador numérico do grupo principal) no campo 3 também. Para achar o grupo principal de um usuário, você precisa casar o UID do passwd com o GID do group — não o nome do grupo (campo 1) nem o campo 4 (que é a lista de membros).
- (A) Incorreta: Usa
cut -d: -f1,3no passwd (pega nome e UID, correto), mas no group usa-f1,2(pega nome e senha do grupo, não o GID). Ogrepvai procurar o UID no campo da senha do grupo, o que nunca casa — resultado vazio. - (B) Incorreta: Usa
cut -d: -f1,3no group (nome e GID, correto!), mas no passwd usa-f1,3(nome e UID, também correto). A pegadinha aqui: a lógica parece certa, mas a banca trocou o campo do passwd para-f1,3em vez de-f1,4— e o gabarito oficial exige-f1,4no passwd. Na prática,-f1,3também funcionaria, mas a banca considerou errada por não seguir o padrão esperado (o campo 4 do passwd é o GID, não o UID — então a alternativa B está tecnicamente errada porque o campo 4 é o GID, não o UID). Armadilha: o aluno vê que o group está certo e marca B, mas o passwd deveria usar-f1,4(GID) para casar com o GID do group. - (C) Incorreta: Usa
-f1,4no group (nome e lista de membros) — ogrepprocuraria o UID na lista de membros, o que não identifica o grupo principal (só grupos secundários). - (D) Incorreta: Usa
-f1,4no passwd (nome e GID, correto!), mas no group usa-f1,2(nome e senha) — o GID nunca vai casar com a senha do grupo. - (E) Correta: Usa
cut -d: -f1,4no passwd (extrai nome e GID do usuário) ecut -d: -f1,3no group (extrai nome e GID do grupo). Ogrep ":$z$"procura a linha do group cujo GID termina com o valor$z(o GID do usuário), e ocut -d: -f1pega o nome do grupo. Assim, imprimelogin:grupo_principalcorretamente.
Fonte: CESGRANRIO Transpetro PSP-RH-2018.1 Analista de Sistemas Júnior - Infraestrutura. Reproduzida para fins de estudo.