Pular para o conteúdo principal

Questão de Sistemas Operacionais — Linux — VUNESP 2023

Sistemas OperacionaisLinux
Código
vu197288
Banca
VUNESP
Órgão
UNICAMP
Ano
2023
Cargo
PTIC ( )
O comando find pode ser utilizado no bash no sistema operacional Linux para localizar arquivos.   Assinale a alternativa que apresenta corretamente o comando find sendo utilizado para localizar todos os arquivos executáveis do sistema.
  1. Afind / -perm /a=x
  2. Bfind exe
  3. Cfind *.exe
  4. Dfind / -perm / exe
  5. Efind ~ / a=x
Revelar gabarito e comentário

GabaritoA — find / -perm /a=x

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”.

Comando find no Linux

Gabarito: letra A. O comando find / -perm /a=x localiza todos os arquivos executáveis do sistema, pois o find busca a partir do diretório raiz / e a opção -perm /a=x seleciona arquivos que possuem a permissão de execução (x) para qualquer usuário (a = all). As demais alternativas apresentam sintaxes inválidas ou incompletas.

O comando find é uma ferramenta poderosa do Linux para localizar arquivos e diretórios com base em critérios como nome, tipo, tamanho, data de modificação e permissões. Sua sintaxe básica é find [caminho] [expressão], onde o caminho define o ponto de partida da busca e a expressão define os critérios de filtragem. No caso da questão, o objetivo é encontrar todos os arquivos executáveis do sistema, ou seja, arquivos que tenham a permissão de execução (x) habilitada.

A opção -perm é usada para filtrar arquivos por permissões. Ela aceita três formatos principais:

  • -perm mode: seleciona arquivos com permissões exatamente iguais a mode.

  • -perm -mode: seleciona arquivos que possuem todas as permissões especificadas em mode (e possivelmente outras).

  • -perm /mode: seleciona arquivos que possuem qualquer uma das permissões especificadas em mode.

No comando find / -perm /a=x, o / antes de a=x indica que queremos arquivos que tenham qualquer uma das permissões listadas. A notação a=x significa que a permissão de execução (x) deve estar presente para a classe de usuário a (all, ou seja, todos: dono, grupo e outros). Portanto, o comando busca a partir da raiz / todos os arquivos que tenham a permissão de execução para qualquer usuário, o que corresponde a arquivos executáveis.

É importante notar que a permissão de execução não garante que o arquivo seja um executável binário; ela apenas indica que o arquivo pode ser executado. Por exemplo, um script shell também possui permissão de execução. No entanto, para a questão, a definição de "arquivo executável" é aquela que possui o bit de execução setado, e o comando da alternativa A atende a esse critério.

A pegadinha da questão está na sintaxe correta da opção -perm. Muitos candidatos confundem a notação simbólica com a numérica ou esquecem a barra / que indica "qualquer uma das permissões". A alternativa D (find / -perm / exe) parece similar, mas está incorreta porque exe não é uma notação válida para permissões; a notação correta usa letras como r, w, x e classes como u, g, o, a. A alternativa E (find ~ / a=x) também está errada porque o ~ representa o diretório home do usuário, não o sistema inteiro, e a sintaxe está quebrada.

find [caminho] [expressão]
  • 1Caminho
    • / (raiz do sistema)
    • ~ (home do usuário)
  • 2Expressão -perm
    • -perm mode (exatamente igual)
    • -perm -mode (todas as permissões)
    • -perm /mode (qualquer permissão)
      • a=x (execução para todos)
LEVEL · soulevel.com.br

Alternativa A — ✅ Correta ⟵ GABARITO

O comando find / -perm /a=x está correto. Ele busca a partir do diretório raiz / e usa a opção -perm /a=x para encontrar arquivos que tenham a permissão de execução (x) para qualquer usuário (a). A barra / antes de a=x é essencial, pois indica que queremos arquivos que tenham qualquer uma das permissões especificadas, não todas. Neste caso, como só há uma permissão (x), o resultado é o mesmo, mas a sintaxe é a correta para a busca.

Alternativa B — ❌ Incorreta

O comando find exe está incorreto porque exe é tratado como um caminho de diretório, não como um critério de busca. O find espera um caminho inicial e, em seguida, expressões de teste. Sem um caminho válido e sem uma expressão de teste, o comando tentará buscar por um arquivo ou diretório chamado exe no diretório atual, o que não atende ao objetivo de localizar todos os arquivos executáveis do sistema.

Alternativa C — ❌ Incorreta

O comando find *.exe está incorreto porque o *.exe é um padrão de nome de arquivo, não um caminho. O find espera um caminho como primeiro argumento, e *.exe será expandido pelo shell para os nomes de arquivos que terminam com .exe no diretório atual. Isso não busca em todo o sistema e não considera permissões de execução. Além disso, a extensão .exe é típica do Windows, não do Linux, onde executáveis não têm extensão obrigatória.

Alternativa D — ❌ Incorreta

O comando find / -perm / exe está incorreto porque exe não é uma notação válida para permissões no find. A opção -perm espera uma especificação de permissão como a=x, u+x, 755, etc. A palavra exe não é reconhecida e causará um erro de sintaxe. A alternativa parece tentar imitar a correta, mas usa um termo inválido.

Alternativa E — ❌ Incorreta

O comando find ~ / a=x está incorreto por vários motivos. Primeiro, ~ é uma expansão do shell que representa o diretório home do usuário, não o sistema inteiro. Segundo, a sintaxe está quebrada: há uma barra separando ~ e a=x, o que não é válido. O find espera find [caminho] [expressão], e aqui o caminho seria ~ e a expressão seria / a=x, que não é uma expressão válida. O correto seria find ~ -perm /a=x para buscar no home, mas o objetivo é buscar no sistema todo, então a alternativa A é a única correta.

Gabarito: letra A

Link permanente: /questoes/vu197288