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

46

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

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

    
задан myusuf3 12.08.2010 в 15:27
источник

6 ответов

73

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

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

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

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

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

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

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

    
ответ дан nhandler 16.10.2010 в 20:21
источник
13

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

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

ответ дан lfaraone 12.08.2010 в 15:35
3

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

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

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

    
ответ дан qneill 01.11.2011 в 03:41
2

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

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

Итак, скажите, что у вас есть куча файлов в папке с именем secret_stash , вы можете ее изменить, так что только у вас (владельца) есть r-x (read, execute), а у всех остальных ничего нет --- (нет доступ). Поскольку r-x - это минимальные perms, необходимые для просмотра каталога (читайте, чтобы получить доступ к его содержимому и выполнить, чтобы иметь возможность их видеть), все внутри этой папки эффективно скрыто от всех, кроме 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

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

    
ответ дан jathanism 12.08.2010 в 17:14
2

1st off: если вы хотите скрыть файл от кого-либо: установите систему обнаружения вторжений 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» может это сделать).

  

Любые сочетания клавиш для этого?

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

    
ответ дан Rinzwind 07.08.2015 в 09:16
0

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

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

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

    
ответ дан SNugues 07.08.2015 в 11:00