在加密分区上使用定位


25

我在安装Ubuntu时选择了/ home /进行加密。现在,是否可以locate使用像这样的加密分区工作?


我遇到了同样的问题-定位将在我的加密主分区之外找到文件,但看不到其中的文件。(说实话,我希望我一开始安装Ubuntu时就不会对其进行加密,因为它存在我遇到的所有问题!)使定位能够索引加密的主分区上的数据。我是一个相对较新手,因此阅读上面的内容并不清楚该怎么做:)。

4
/home是一个虚拟文件系统(ecryptfs)。登录时将其“挂载”为可访问的分区。检查/etc/updatedb.conf并a)从忽略的文件系统(PRUNEFS)中删除ecryptfs b)更改为PRUNE_BIND_MOUNTS =“ no”
m33lky 2011年

4
之后,您可以运行sudo updatedb以索引新文件。
m33lky 2011年

请记住,数据库定位使用生活在未加密的空间中,可能会通过公开文件名来破坏您的加密
Florian Heinle 2011-02-27

Answers:


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 2012年

4
我没有 我刚刚为(加密的)家庭树生成了一个数据库updatedb -l 0 -o $HOME/var/mlocate.db $HOMEman locate表示将搜索默认数据库(/var/lib/mlocate/mlocate.db),然后搜索中的数据库列表$LOCATE_PATH
waltinator 2012年

3
不要 “删除”中ecryptfsPRUNEFS定义/etc/updatedb.conf。登录后,它会/home/$USER被解密,但是其中的加密文件和文件名/home/$USER/.Private应被忽略。当您$HOME未挂载时,其他人将无权访问db或(未加密)文件的文件名。
waltinator

2
updatedb -l 0 -o $HOME/var/mlocate.db $HOME-U应该缺少它updatedb -l 0 -o $HOME/var/mlocate.db -U $HOME
destan 2012年

2
糟糕的是,@ destin我也使用Steve Collyer的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_PATHlocate能告诉我个文件名,即使介质安装。
waltinator 2012年

3

在解密文件系统并尝试匹配环境变量以对其进行读写时,如何运行updatedb?

阅读手册页后,将两个变量添加到您的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

解密的文件现在在定位数据库中了吗?或者,您做了什么使它更好或更有效?

您可能还想将updatedb添加到用户的crontab中。首轮:

crontab -e

并添加以下行:

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

请参阅我对马丁的评论。我试图了解是否有任何安全考虑或Ubuntu只是忽略了正确的配置。
m33lky 2011年

由于ecryptfs在/etc/updatedb.conf的PRUNEFS变量中列出,您可能还需要使用--prunefs“ nfs”。这似乎是一个很好的解决方案,因为它可以存储和更新用户配置文件中的每个用户索引。
若奥·平托

@ m33lky问题是这样的:您已要求对homedir进行加密,因此没有root密码的任何人(甚至是!)都无法读取它。智能解决方案是每个用户的定位数据库。对于单用户计算机,简单的解决方案是ecryptfs在登录时删除并扫描。将来,可能locate会汇总全局数据库和当前用户的主数据库的结果。
joeytwiddle13年

2

如果没有登录,实际上不可能更新数据库索引。您应该登录并运行updatedb命令。

在中检查您的配置/etc/updatedb.confecryptfs从中删除,PRUNEFS并且可能/home/.ecryptfs从中删除PRUNEPATHS。不要忘了sudo updatedb追赶。


1
Updatedb.conf修剪ecryptfs。另外,PRUNE_BIND_MOUNTS =“是”。我试图了解此类默认设置背后的原因,因为这对用户来说不友好,导致/ home的搜索结果丢失:)
m33lky 2011年

我猜家的功能是要有一个每个用户的索引器...但这是推测。
Martin Owens -doctormo- 2011年

没有加密的话,/ home会被索引,所以我希望有同样的行为……
m33lky 2011年

1
我从用户界面的角度描述了这种情况。
m33lky 2011年

2
如果您对整个磁盘进行了加密,那么这将不是问题,如果您仅进行家庭加密,那么现在您需要开始为每个用户建立索引并使用每种加密方式...实际上,您最好也存储家庭索引在用户的主文件夹中。所有这些都是大多数用户从未见过的重大开发和成本。请针对定位数据库工具项目报告该错误。
Martin Owens -doctormo- 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.