ls exibe arquivos copiados de uma unidade externa com um fundo amarelo

0

Copiei alguns arquivos de uma unidade externa e agora eles aparecem com um fundo amarelo no meu shell ZSH no OSX. Eu acredito que é uma coisa de permissões como os normais exibir "drwxr-xr-x" e aqueles com amarelo não têm as permissões ausentes, ou seja, "drwxrwxrwx"

aqui é um exemplo

total 24
drwxr-xr-x  21 martin  staff   714B Aug  4 00:10 .
drwxr-xr-x+ 63 martin  staff   2.1K Aug  5 18:50 ..
-rw-r--r--@  1 martin  staff    10K Aug  4 00:24 .DS_Store
drwxrwxrwx   9 martin  staff   306B Jul 31 00:44 Tempa
drwxrwxrwx   5 martin  staff   170B Jul 11 21:31 XCode
drwxrwxrwx   5 martin  staff   170B Jul 11 21:31 Items
drwxr-xr-x  21 martin  staff   714B Jul 31 09:13 code-test
..

Se você notar acima, há dois itens exibidos sem o plano de fundo amarelo. Este é o diretório .DS_Store e o diretório code-test. Na verdade, vale a pena notar que dentro de um diretório que tem um fundo amarelo, ou seja, "XCode" eu tenho um carregamento mais arquivos e diretórios que têm o mesmo problema.

Por que os arquivos copiados têm essas permissões? O que as permissões ausentes significam? E, claro, como consertá-lo, mas é claro corrigi-lo de forma recursiva, como parece dentro de cada diretório efetuado os arquivos e outros diretórios também têm o mesmo problema.

    
por Martin 05.08.2015 / 23:38

1 resposta

1

Presumivelmente, a unidade externa usa um sistema de arquivos, como uma variante FAT, que não armazena permissões, e foi montada com todas as permissões permitidas a todos. A ferramenta que você usou para copiar arquivos manteve as permissões originais.

A cor chamativa avisa que os arquivos são graváveis em todo o mundo. Na saída de ls -l , as permissões rwx são agrupadas em três blocos de três caracteres: usuário, grupo e outros, nesta ordem. Portanto, rwxrwxrwx significa que todos podem fazer tudo, enquanto rwxr-xr-x significa um arquivo que todos podem ler e executar, mas apenas o usuário que possui o arquivo pode gravar. Consulte Noções básicas sobre as permissões do UNIX e seus atributos para obter mais detalhes sobre permissões e a saída de ls -l .

Para alterar os arquivos para serem graváveis somente por você, execute o chmod :

chmod -R go-w .

-R significa recursivo; go significa afetar o grupo e outras permissões, e -w significa remover as permissões de gravação.

Se você quiser remover a permissão de execução dos arquivos porque eles não são realmente executáveis, não apenas adicione x a este comando. Os diretórios devem manter a permissão x , porque em um diretório, x na verdade significa permissão para acessar arquivos dentro desse diretório ( r apenas permite listar o conteúdo do diretório, não acessando os arquivos). Você pode usar o comando find para executar chmod apenas em não diretórios. Para remover a permissão de execução de tudo sob o diretório atual, exceto os diretórios:

find . -type d -o -exec chmod a-x {} +
    
por 06.08.2015 / 01:58