Questão de Sistemas Operacionais — Linux — VUNESP 2023
- Código
- vu197288
- Banca
- VUNESP
- Órgão
- UNICAMP
- Ano
- 2023
- Cargo
- PTIC ( )
- Afind / -perm /a=x
- Bfind exe
- Cfind *.exe
- Dfind / -perm / exe
- Efind ~ / a=x
GabaritoA — find / -perm /a=x
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.
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.
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.
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.
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.
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