Как я могу скрыть каталоги или файлы без изменения их имен?

OCD во мне хочет, чтобы каталоги, имя которых мне не нравилось, скрывались, поскольку я не взаимодействую с ними напрямую.

Как я могу скрыть каталоги без использования точечной нотации?

6 ответов

Решение

Предполагая, что вы заботитесь только о том, чтобы скрыть файлы от показа в nautilus, в GNOME Bugzilla есть ошибка по этому поводу. Однако в настоящее время эта ошибка не устранена.

Существует еще один способ скрыть файлы от появления в nautilus. Если вы создаете файл с именем .hidden внутри каталога любое имя файла, указанное в файле, не будет отображаться.

Например, ниже находится скрытый файл, который я создал. Этот файл будет скрывать любые файлы или папки с именем b или же e находится в том же каталоге, что и скрытый файл.

Пример.hidden File

Ниже приведен скриншот папки, содержащей скрытый файл. Обратите внимание, что вы видите только три файла: a, c, а также f, Вы не видите скрытый файл из-за '.' в начале его имени.Папка с примером

На скриншоте ниже та же папка, что и раньше. Однако на этот раз я нажал Ctrl+H, чтобы наутилус отобразил скрытые файлы и папки. Обратите внимание, что появляется несколько дополнительных файлов. Теперь вы видите несколько файлов, которые ранее были скрыты из-за имен, начинающихся с ".". Также теперь есть файлы с именами "b" и "e", которые, хотя и не имеют имен, начинающихся с ".", Были скрыты из-за того, что перечислены в файле.hidden.

Примеры папок с видимыми скрытыми файлами

Файлы, упомянутые в файле.hidden, будут скрыты только в nautilus. Инструменты как ls будет по-прежнему отображать их. Файл.hidden также не является рекурсивным. Это влияет только на файлы в том же каталоге, где находится скрытый файл.

Некоторые люди на форуме пошли дальше и создали сценарии для nautilus, которые облегчают добавление файлов в.hidden файл. Первый сценарий содержит хорошее объяснение того, как устанавливать и использовать сценарии, но второй сценарий немного чище и короче. Не стесняйтесь использовать любой сценарий, чтобы сделать вашу жизнь немного проще.

Unix и Linux поддерживают только скрытие папок, которые с .,

Если вы действительно хотите убрать их с дороги, но хотите, чтобы их не было .s, положить их все в .hidden в том же каталоге, что и файл или папка, которую вы хотите скрыть. .hidden не будет отображаться файловым менеджером, и ваши файлы не будут иметь изменение имени.

Из командной строки вы можете попробовать что-то подобное в вашем .bash_aliases файл:

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

Это добавляет новую команду lsh который ведет себя как ls, но скрывает файлы, перечисленные в .hidden каталог. (Также отсутствуют некоторые его функции, такие как цветной вывод и списки столбцов.)

Если вы хотите скрыть файлы, вам остается только переименовать их с предыдущим ., как *NIX соглашение. Извините, но это все.

Однако, если вы хотите скрыть содержимое файлов / каталогов, вы можете сделать это с правами доступа к файлам.

Скажем, у вас есть куча файлов в папке с именем secret_stash, вы можете изменить его так, чтобы только вы (владелец) имели r-x (читай, исполняй) а у всех остальных ничего нет --- (нет доступа). поскольку r-x это минимальные привилегии, необходимые для просмотра каталога (чтение, чтобы получить доступ к его содержимому и выполнить, чтобы иметь возможность его видеть), все внутри этой папки эффективно скрыто от всех, кроме root,

ПРИМЕЧАНИЕ: я запускаю эту демонстрацию как rootи пытается получить доступ к папке как myuser

Для этого вы запускаете chmod 700 dirname (700 означает rwx------):

% mkdir secret_stash
% chmod 700 secret_stash

И вот оно:

% 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

Теперь, и если я попытаюсь получить доступ к нему из myuser, попытки получить доступ к папке или ее содержимому не удаются:

% 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

И теперь я сказал слово "секрет" так много раз, что оно потеряло всякий смысл!!

Первое: если вы хотите скрыть файл от кого-либо: установите систему обнаружения вторжений в Linux. (Например, Snort) Вы можете даже скрыть файл от "root", но "root" также сможет отменить эти настройки.


Но может быть проще установить права доступа к каталогу, в котором находится файл, "root". Пример:

 $ 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

И файл 1 эффективно скрыт от глаз.

Каталог будет виден; файл не будет виден Имейте в виду, что "root" ВСЕГДА будет иметь доступ к любому файлу.


Вместе с chattr Вы даже можете сделать файл неизменным.

sudo su    
chattr + i {file}

и даже "root" не может изменить файл chattr перевернут (и да "root" может это сделать).

Есть какие-нибудь сочетания клавиш для этого?

Нет, это то, что вам нужно сделать вручную.

Существует также расширение для Nautilus, называемое nautilus-hide, которое позволит вам скрыть любой файл или папку, просто щелкнув по ним правой кнопкой мыши.

Чтобы установить это расширение:sudo apt-get install nautilus-hide в терминале или найдите "nautilus hide" в программном центре Ubuntu.

Не забудьте выйти из Nautilus после установки: Alt+F2 и введите nautilus -q,

Другие вопросы по тегам