Com o OS X Yosemite, usando os seguintes comandos, recebo o seguinte:
$ touch .a
$ touch b
$ /bin/ls
b
$ /bin/ls -A
.a b
$ sudo /bin/ls
.a b
Ele mostra arquivos ocultos (que têm nomes começando com um ponto) quando chamados pelo root e não os mostram (conforme o esperado) quando executados como um usuário normal. Isso difere do que o ls
Linux (o que vem coreutils
) faz.
Por que ls
se comporta dessa maneira?
BSD
eOSX
fossem mais apropriadas aqui.Respostas:
Acontece que esse recurso não é específico da Apple. Esse é um recurso dos sistemas BSD em geral.
Inicialmente, eu era capaz de rastreá-lo de volta às fontes do 4.4BSD-Lite . Já estava presente neste commit do FreeBSD de 1994, que está importando essas fontes.
O recurso também está presente no OpenBSD e pode ser encontrado neste commit, de 1995, que afirma estar importando código do NetBSD, portanto, ele já estava presente no NetBSD .
Em seguida, descobrimos o commit do NetBSD de 1993 que afirma estar importando código do 386BSD , e o recurso já está lá . Além disso, esse commit mostra que ele estava presente durante o desenvolvimento da versão 0.0 do 386BSD em 1991, que saiu do BSD por volta de 4,3, até onde eu sei.
O comentário apareceu pela primeira vez durante o desenvolvimento do 4.3BSD-Reno em este cometer (27 de junho de 1989), intitulado “primeira versão de novos ls de trabalho”. O comentário original dizia:
que foi alterado mais tarde naquele dia (no entanto, não tenho certeza de que os carimbos de data e hora estejam corretos neste repositório) para:
E somente em 1992 a letra maiúscula e o período foram adicionados, transformando o comentário no que temos agora:
Mas o comportamento estava presente no 2BSD a partir de 9 de maio de 1979, como visto neste instantâneo :
Não consigo encontrar nenhuma história real daqueles tempos, mas também há um instantâneo do 1BSD de 1977 sem essas linhas. E sem a
-A
bandeira, na verdade.Parece que o recurso foi introduzido entre novembro de 1977 (1BSD sendo desenvolvido naquele momento) e o lançamento do 2BSD em maio de 1979.
O que eu também descobri durante esta investigação é a
-I
bandeira que foi adicionada ao FreeBSD em 2005 para substituir esse comportamento e foi retrabalhada um pouco mais tarde.fonte
.
um simples bug -ls
deveria apenas ocultar o.
diretório, nem tudo o que se inicia.
. Avanço rápido por algumas décadas e é comumente usado para ocultar arquivos perigosos etc., além de ser usado para ocultar a configuração do sistema etc. - portanto, faz sentido permitir que os administradores vejam esses arquivos (para manter a configuração ou encontrar malware oculto etc.) .Aqui está um link para o código fonte. Nota
/* Root is -A automatically. */
. Esse é um recurso da versão do BSD da Applels
.fonte
Root is -A automatically
string para procurar pistas.IIRC, houve um tópico sobre isso nos primeiros dias da Usenet (início dos anos 80). O recurso foi adicionado como uma precaução de segurança para que usuários mal-intencionados não pudessem ocultar facilmente arquivos / diretórios / executáveis do sysadmin / root. A teoria era basicamente "a raiz tem acesso a tudo, para poder ver tudo".
fonte