Por que ls sem -l retornar 1 quando a permissão para o diretório é r--

7

Eu li this e this , e descobri que o meu problema é diferente e mais específico.

Eu entendo os seguintes pontos.

  • + x no diretório concede acesso aos arquivos inodes por meio deste diretório específico
  • as informações meta de um arquivo, que é usado por ls -l , são armazenadas em seu i-node, mas o nome do arquivo não pertence àquele

Dos 2 pontos acima, como ls sem -l não precisa acessar os i-nodes dos arquivos no diretório, ele deve listar com sucesso os nomes dos arquivos e retornar 0.

No entanto, quando tentei na minha máquina, os nomes dos arquivos estão listados, mas houve alguns avisos como permission denied e o código de retorno é 1.

b03705028@linux7 [~/test] chmod 500 permission/
b03705028@linux7 [~/test] ls --color=no permission/
f1*
b03705028@linux7 [~/test] chmod 400 permission/
b03705028@linux7 [~/test] ls --color=no permission/
ls: 無法存取 'permission/f1': 拒絕不符權限的操作
f1
b03705028@linux7 [~/test] echo $0
bash

Os caracteres chineses basicamente falam sobre permission denied

Minha distribuição unix é Linux 4.17.11-arch1

    
por David Chen 06.11.2018 / 11:50

1 resposta

8

Eu suspeito que ls no seu caso é um alias para algo como ls --color=auto ; Nesse caso, ls tenta encontrar informações sobre os arquivos contidos no diretório para determinar qual cor usar.

ls --color=no

deve listar o diretório sem reclamar.

Se ainda reclamar, você pode estar usando outra opção, como -F ou --classify , que precisa acessar os metadados do arquivo ( -F / --classify examina o tipo de arquivo, por exemplo). / p>

Para garantir que você execute ls sem passar por um alias, use

command ls

ou

\ls

Para remover um alias para ls , use

unalias ls
    
por 06.11.2018 / 11:59