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.