sudo ls não mostra arquivos ocultos no Linux

2

Hoje eu descobri que sudo ls mostra arquivos ocultos (isto é, aqueles que têm nomes começando com . ) no OS X. Isso me surpreendeu tanto que eu fez uma pergunta sobre esse comportamento, que eu ainda acho um tanto estranho e inesperado.

Acontece , esse comportamento volta para 2BSD em 1979 .

Agora, gostaria de fazer a seguinte pergunta. Por que o ls no Linux não se comporta dessa maneira?
Houve um período de tempo em que ls em alguns outros tipos de * nixes tiveram esse comportamento? Existem documentos, mensagens de commit, emails explicando quem e por que decidiu que este recurso não deve ser copiado ou que deve ser descartado se for copiado inicialmente?

    
por kirelagin 23.06.2015 / 23:29

1 resposta

5

O padrão POSIX diz:

"Filenames beginning with a ( '.' ) and any associated information shall not be written out unless explicitly referenced, the -A or -a option is supplied, or an implementation-defined condition causes them to be written."

Ser root, evidentemente, não é considerado uma condição que faz com que arquivos ocultos sejam escritos pela implementação GNU Coreutils de ls que é comumente empacotado em distribuições Linux.

Existem boas razões para não ter o comportamento de programas influenciados por variáveis globais, como qual ID de usuário está em vigor. Um script desenvolvido como não-raiz mudará o comportamento quando executado como root.

A ocultação de arquivos que começam com ponto não é um mecanismo de segurança; não deve estar ligado a contextos de segurança. Ele oculta coisas que normalmente não queremos ver, como o diretório .git entre seus arquivos de origem .c ou o que for. Se você tiver acesso de leitura ao diretório de outro usuário, poderá listar seus arquivos ocultos. O ponto oculta itens cuja presença é esperada e desinteressante, e não cuja presença se destina a ser secreta.

Entradas de diretório pontilhadas diferentes de .. e . não possuem status especial do sistema operacional; apenas ls os trata especialmente.

Eu apenas tentei o Solaris 10; Seu ls também não possui tal comportamento. Não é um "Unixismo" universal, o que explica por que o requisito POSIX é expresso dessa maneira.

    
por 24.06.2015 / 00:13