используя locate в зашифрованном разделе


25

Я выбрал / home / для шифрования при установке Ubuntu. Теперь можно ли заставить locateработать с зашифрованным разделом, как это?


У меня та же проблема - locate найдет файлы вне моего зашифрованного домашнего раздела, но не сможет их увидеть внутри. (Если честно, я бы никогда не зашифровал его, когда я установил Ubuntu в первую очередь, со всеми проблемами, которые у меня были с ним!) Пожалуйста, кто-нибудь может объяснить в ясных шагах, что мне нужно сделать, чтобы иметь возможность make locate сможет индексировать данные на зашифрованном домашнем разделе. Я относительный новичок, так что не ясно, что делать, читая выше :).

4
Ваша /homeвиртуальная файловая система (ecryptfs). Он «монтируется» как доступный раздел при входе в систему. Проверьте /etc/updatedb.conf и а) удалите ecryptfs из игнорируемых файловых систем (PRUNEFS) б) измените на PRUNE_BIND_MOUNTS = «нет»
m33lky

4
После этого вы можете запустить sudo updatedbиндексировать новые файлы.
m33lky

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

Ответы:


29

Я оба "запускаю locate (updatedb) при входе в систему", как упоминалось выше, и я храню свою часть базы данных locate в моем зашифрованном $ HOME.

export LOCATE_PATH="$HOME/var/mlocate.db"

а затем я индексирую файлы $HOMEс

updatedb -l 0 -o $HOME/var/mlocate.db -U $HOME

Теперь у меня есть полный индекс, $HOMEно база данных не видна, если $HOMEона не смонтирована и не расшифрована.


Это хорошее решение. Как вы перенесли свою базу данных туда?
m33lky

4
Я не Я только что сгенерировал БД для моего (зашифрованного) домашнего дерева, с updatedb -l 0 -o $HOME/var/mlocate.db $HOME. man locateговорит, что будет искать базу данных по умолчанию ( /var/lib/mlocate/mlocate.db), а затем список баз данных в $LOCATE_PATH.
Вальтинатор

3
Не «удалять ecryptfsиз PRUNEFSопределения в» /etc/updatedb.conf. Когда вы вошли в систему, /home/$USERдешифруется, но зашифрованные файлы и имена файлов в них /home/$USER/.Privateдолжны игнорироваться. Когда вы $HOMEне подключены, другие не будут иметь доступа к БД или (незашифрованным). ) файлы с именами файлов.
Вальтинатор

2
updatedb -l 0 -o $HOME/var/mlocate.db $HOMEтам не хватает, -Uэто должно бытьupdatedb -l 0 -o $HOME/var/mlocate.db -U $HOME
Дестан

2
Мое плохое, @destin я расширил свой метод индексных выдвижных СМИ, тоже с помощью bash_path_funcs Стива Коллиер ( в linuxjournal.com/article/3645 ). С удаляемым носителем, смонтированным (как /media/_name_), который я делаю updatedb -l 0 -o ~/var/mlocate/_name_.db -U /media/_name_ В моем .bashrc, я имею export LOCATE_PATH="$HOME/var/mlocate/mlocate.db for i in $HOME/var/mlocate/*.db ; do addpath -p LOCATE_PATH $i done uniqpath -p LOCATE_PATH и locateмогу показывать мне имена файлов, даже если носитель НЕ смонтирован.
Вальтинатор

3

Как насчет запуска updatedb, когда ваша файловая система дешифруется и пытается сопоставить переменные среды для чтения / записи?

Прочитав man-страницу, добавьте две переменные в ваш файл BASH RC.

man locate
echo "export LOCATE_PATH=$HOME/var/lib/mlocate/mlocate.db:$LOCATE_PATH" >> ~/.bashrc
echo "export DBPATH=$HOME/var/lib/mlocate/mlocate.db:$DBPATH" >> ~/.bashrc

Создайте каталог, указанный выше, и добавьте $ username в группу mlocate.

mkdir -p ~/var/lib/mlocate/
sudo usermod -a -G mlocate $username

Выйдите из системы и снова войдите в систему, чтобы подсчитать пользователя в группе mlocate и получить новые переменные среды. Теперь, когда ты бежишь,

updatedb -o $LOCATE_PATH

находятся ли расшифрованные файлы в базе данных locate сейчас? Или что вы сделали, чтобы это работало или лучше?

Вы также можете добавить updatedb в crontab пользователя. Первый забег:

crontab -e

И добавьте следующую строку:

0 12 * * * updatedb -o $HOME/var/locate

Смотрите мой комментарий к Мартину. Я пытаюсь понять, есть ли какие-либо соображения безопасности или правильная конфигурация была просто проигнорирована Ubuntu.
m33lky

Из-за того, что ecryptfs перечислены в переменной PRUNEFS в /etc/updatedb.conf, вам, вероятно, также нужно использовать --prunefs "nfs". Это кажется хорошим решением, потому что он сохраняет и обновляет индекс для каждого пользователя из профиля пользователя.
Жоау Пинту

@ m33lky Проблема заключается в следующем: вы попросили зашифровать ваш homedir, чтобы никто (даже root!) не мог прочитать его без пароля. Интеллектуальное решение - это база данных для каждого пользователя. Простое решение для однопользовательской машины - это удаление ecryptfsи сканирование при входе в систему. В будущем, возможно, возможно locateобъединение результатов из глобальной БД и домашней БД текущего пользователя.
joeytwiddle

2

На самом деле невозможно обновить индекс базы данных без входа в систему. Вы должны войти в систему и выполнить команду updatedb.

Проверьте ваш конфиг в /etc/updatedb.conf. Удалить ecryptfsиз PRUNEFSи, вероятно, /home/.ecryptfsиз PRUNEPATHS. Не забудьте бежать sudo updatedbза


1
updatedb.conf чернослив ecryptfs. Кроме того, PRUNE_BIND_MOUNTS = "да". Я пытаюсь понять причину таких значений по умолчанию, поскольку это не очень удобно, так как результаты / home отсутствуют в ваших поисках :)
m33lky

Я предполагаю, что функциональность для дома - иметь индексатор для каждого пользователя ... но это предположение.
Мартин Оуэнс -доктормо-

Без шифрования / home индексируется, поэтому я ожидаю того же поведения ...
m33lky

1
Я описывал ситуацию с точки зрения пользовательского интерфейса.
m33lky

2
Если вы зашифровали весь диск, это не было бы проблемой, если бы у вас было только домашнее шифрование, то теперь вам нужно начать индексирование для каждого пользователя и использовать каждое отдельное шифрование ... на самом деле вы могли бы просто спрятать домашний индекс в домашней папке пользователя .... все это является основной разработкой и стоимостью того, что большинство пользователей никогда не видят. Пожалуйста, сообщите об ошибке в проекте locate database tools.
Мартин Оуэнс -доктормо-
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.