за допомогою locate на зашифрованому розділі


25

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


У мене така ж проблема - пошук знайде файли поза моїм зашифрованим домашнім розділом, але не може їх побачити всередині нього. (Якщо чесно, я б хотів, щоб я ніколи не шифрував його, коли я встановив Ubuntu, в першу чергу, з усіма проблемами, які у мене були з ним!) Будь-ласка, будь-хто може чітко пояснити, що мені потрібно зробити, щоб мати можливість зробити locate зможе індексувати дані на зашифрованому домашньому розділі. Я відносна новачок, тому не очевидно, що робити з прочитаного вище :).

4
Ваша /homeвіртуальна файлова система (ecryptfs). Він "змонтований" як доступний розділ, коли ви входите в систему. Перевірте /etc/updateb.conf і а) видаліть криптовалюту з ігнорованих файлових систем (PRUNEFS) b) змініть на PRUNE_BIND_MOUNTS = "ні"
m33lky

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

майте на увазі, що пошук у базі даних використовує життя в незашифрованому просторі, можливо,
пошкоджуючи

Відповіді:


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не встановлена ​​та розшифрована.


Це приємне рішення. Як ви мігрували свій db туди?
m33lky

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

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

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може показувати мені імена файлів, навіть коли носій НЕ монтується.
waltinator

3

Як щодо запуску updateb, коли ваша файлова система розшифрована, і спробуйте співставити змінні середовища для її читання / запису?

Прочитавши довідкову сторінку, додайте дві зміни у свій файл 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

Складіть вказаний вище каталог та додайте $ ім'я користувача до групи 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

Через те, що шифри перераховані у змінній PRUNEFS на /etc/updateb.conf, вам, ймовірно, також потрібно використовувати --prunefs "nfs". Це здається хорошим рішенням, оскільки він зберігає та оновлює індекс на кожного користувача з профілю користувача.
Жоао Пінто

@ m33lky Проблема полягає в тому, що ви попросили зашифрувати homedir, щоб ніхто (навіть навіть root!) не міг його прочитати без пароля. Розумне рішення - це база даних для користувачів. Найпростішим рішенням для однокористувацької машини є видалення ecryptfsта сканування під час входу в систему. В майбутньому, можливо, locateможуть бути зібрані результати глобальної БД та домашньої БД поточного користувача.
joeytwiddle

2

Оновити індекс бази даних насправді неможливо без входу. Ви повинні увійти та запустити оновлену команду.

Перевірте свою конфігурацію /etc/updatedb.conf. Видалити ecryptfsз PRUNEFSі, ймовірно, /home/.ecryptfsз PRUNEPATHS. Не забувайте бігати sudo updatedb.


1
updatedb.conf чорнослив ecryptfs. Також PRUNE_BIND_MOUNTS = "так". Я намагаюсь зрозуміти міркування таких за замовчуванням, оскільки це не є зручним для користувачів, щоб результати пошуку / додому були відсутні у ваших пошуках :)
m33lky

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

Без шифрування / дім індексується, тому я очікую такої ж поведінки ...
m33lky

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

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