Como ocultar diretórios ou arquivos sem alterar seus nomes?

51

O TOC em mim deseja que os diretórios dos quais não gosto sejam ocultos, pois não interajo diretamente com eles.

Como ocultar diretórios sem usar a notação de ponto?

myusuf3
fonte

Respostas:

79

Supondo que você se preocupe apenas em ocultar os arquivos para que apareçam no nautilus, existe um bug no GNOME Bugzilla sobre isso. No entanto, atualmente, esse bug não foi resolvido.

Há outra maneira de ocultar os arquivos que não aparecem no nautilus. Se você criar um arquivo chamado .hiddendentro de um diretório, qualquer nome de arquivo listado no arquivo não será exibido.

Por exemplo, abaixo está um arquivo .hidden que eu criei. Este arquivo oculta qualquer arquivo ou pasta nomeado bou elocalizado no mesmo diretório que o arquivo .hidden.

Arquivo .hidden de exemplo

Abaixo está uma captura de tela da pasta que contém o arquivo .hidden. Note que você só vê três arquivos: a, c, e f. Você não vê o arquivo .hidden devido ao '.' no início de seu nome. Pasta de exemplo

A captura de tela abaixo é da mesma pasta de antes. No entanto, desta vez, pressionei Ctrl+ Hpara fazer com que o nautilus exibisse arquivos e pastas ocultos. Observe como existem vários arquivos adicionais que aparecem. Agora você vê vários arquivos que estavam ocultos anteriormente devido a nomes que começaram com um '.'. Agora também existem arquivos chamados 'b' e 'e', ​​que apesar de não terem nomes começando com um '.', Foram ocultados devido a serem listados no arquivo .hidden.

Pastas de exemplo com arquivos ocultos visíveis

Os arquivos mencionados no arquivo .hidden serão ocultados apenas no nautilus. Ferramentas como lsainda as exibirão. O arquivo .hidden também não é recursivo. Isso afeta apenas os arquivos no mesmo diretório em que o arquivo .hidden está.

Algumas pessoas no fórum criaram scripts para o nautilus que facilitam a adição de arquivos ao arquivo .hidden. O primeiro script inclui uma boa explicação sobre como instalar e usar os scripts, mas o segundo é um pouco mais limpo e mais curto. Sinta-se livre para usar qualquer um dos scripts para tornar sua vida um pouco mais fácil.

nhandler
fonte
+1. Apenas uma observação, se você acha que precisa adicionar o 'nome do arquivo ou da pasta que contém `` espaço, não é. Basta adicionar o nome do arquivo ou pasta
Anwar
13

Unix e Linux suportam apenas ocultar pastas que estão com a ..

Se você realmente deseja tirá-los do caminho, mas deseja que eles não tenham .s, coloque-os todos no .hiddenmesmo diretório do arquivo ou pasta que deseja ocultar. .hiddennão serão expostos pelo gerenciador de arquivos e seus arquivos não terão uma alteração de nome.

lfaraone
fonte
11
Gostaria assim como para mantê-los no mesmo lugar :)
myusuf3
11
esta solução os manterá no mesmo lugar. .hidden nem precisa estar na sua pasta pessoal se você não quiser. Eu costumo usá-lo em unidades removíveis que possuem arquivos de configuração que eu não quero ver.
jumpnett
11
@jumpnett está correto, coloque .hidden no mesmo local que os arquivos que você deseja ocultar e adicione os nomes de arquivo / diretório no arquivo .hidden, um por linha. Funciona bem!
Invert
3

Na linha de comando, você pode tentar algo como isto em seu .bash_aliasesarquivo:

lsh() {
    [ -s .hidden ] && echo "lsh: hiding $(wc -l .hidden) patterns" && ls $@ | grep -v -F "$(cat .hidden)";
    [ ! -f .hidden ] && ls $@
}

Isso adiciona um novo comando lshque se comporta como ls, mas oculta arquivos listados em um .hiddendiretório. (Também faltam alguns de seus recursos, como saída colorida e listagens de colunas.)

qneill
fonte
2

Se você deseja ocultar arquivos, você apenas os renomeou com uma precedente ., como é a convenção * NIX. Desculpe, mas é isso.

No entanto, se você deseja ocultar o conteúdo dos arquivos / diretórios, pode fazê-lo com permissões de arquivo.

Digamos que você tenha um monte de arquivos em uma pasta chamada secret_stash, você pode alterá-lo para que somente você (o proprietário) tenha r-x(leia, execute) e todo mundo não tenha nada ---(sem acesso). Como r-xsão as permissões mínimas necessárias para exibir um diretório (leia para acessar seu conteúdo e execute para poder vê-lo), qualquer coisa dentro dessa pasta está efetivamente oculta a todos, exceto root.

NOTA : Estou executando esta demonstração como roote tentando acessar a pasta comomyuser

Para fazer isso, você executa chmod 700 dirname(700 significa rwx------):

% mkdir secret_stash
% chmod 700 secret_stash

E aqui está:

% whoami
root
% ls -ld secret_stash
drwx------ 2 root root 4.0K 2010-08-12 07:59 secret_stash/
% ls secret_stash  
./  ../  secret.txt
% cat secret_stash/secret.txt 
TOP SECRET DATA

Agora, e se eu tentar acessá-lo myuser, tentativas de acessar a pasta ou seu conteúdo falham:

% whoami
myuser
% ls -ld secret_stash
drwx------ 2 root root 4.0K 2010-08-12 07:59 secret_stash/
% ls secret_stash 
ls: cannot open directory secret_stash: Permission denied
% cat secret_stash/secret.txt
cat: secret_stash/secret.txt: Permission denied

E agora eu disse a palavra "segredo" tantas vezes que perdeu todo o sentido!

jathanism
fonte
2
Você pode torná-lo realmente oculto chmod -R 000 secret_stashe ninguém poderá lê-lo!
Marco Ceppi
@Marco Ceppi - MUITO SEGREDO!
jathanism
Claro que isto é mais "segurança" do que é "obscuridade" - que é o que o OP estava procurando eu acho;)
Marco Ceppi
2
@MarcoCeppi: chmod 000 oculta o arquivo até mesmo do proprietário do arquivo, exceto a raiz, que sempre pode ignorar 000. No entanto, o proprietário do arquivo ainda pode alterar a permissão do arquivo para lê-lo, então você precisa Também altere a propriedade do arquivo para root para tornar a permissão 000 realmente significativa.
Lie Ryan
2

1º desligado: se você deseja ocultar um arquivo de alguém: instale um sistema de detecção de intrusão no Linux . ( Snort é um exemplo) Você pode até ocultar um arquivo de "root", mas "root" também poderá reverter essas configurações.


Mas pode ser mais fácil definir as permissões do diretório que contém o arquivo como "root". Exemplo:

 $ sudo su
 # mkdir tmp/
 # touch tmp/1
 # chown root:root tmp
 # chmod 000 tmp  
 # ls -l
total 4
d--------- 2 root root 4096 2015-08-07 06:36 tmp  
 # exit
exit
 $ ls
tmp
 $ cd tmp/
bash: cd: tmp/: Permission denied

E o arquivo 1está efetivamente oculto.

O diretório estará visível; O arquivo não estará visível. Lembre-se: "root" SEMPRE terá acesso a qualquer arquivo.


Juntamente com chattrvocê, você pode até tornar o arquivo imutável.

sudo su    
chattr + i {file}

e mesmo "root" não pode alterar o arquivo, a menos que chattrseja revertido (e sim "root" pode fazer isso).

Algum atalho de teclado para isso?

Não, isso é algo que você precisa fazer manualmente.

Rinzwind
fonte
0

Há também uma extensão para o Nautilus, chamada nautilus-hide, que permitirá ocultar qualquer arquivo ou pasta com um simples clique com o botão direito do mouse.

Para instalar esta extensão: sudo apt-get install nautilus-hideem um terminal, ou procure por "nautilus hide" no Ubuntu Software Center.

Não se esqueça de sair do Nautilus após a instalação: Alt+ F2e digite nautilus -q.

SNugues
fonte