Как я могу скрыть каталоги или файлы без изменения их имен?
OCD во мне хочет, чтобы каталоги, имя которых мне не нравилось, скрывались, поскольку я не взаимодействую с ними напрямую.
Как я могу скрыть каталоги без использования точечной нотации?
6 ответов
Предполагая, что вы заботитесь только о том, чтобы скрыть файлы от показа в nautilus, в GNOME Bugzilla есть ошибка по этому поводу. Однако в настоящее время эта ошибка не устранена.
Существует еще один способ скрыть файлы от появления в nautilus. Если вы создаете файл с именем .hidden
внутри каталога любое имя файла, указанное в файле, не будет отображаться.
Например, ниже находится скрытый файл, который я создал. Этот файл будет скрывать любые файлы или папки с именем b
или же e
находится в том же каталоге, что и скрытый файл.
Ниже приведен скриншот папки, содержащей скрытый файл. Обратите внимание, что вы видите только три файла: 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
,