sử dụng định vị trên một phân vùng được mã hóa


25

Tôi đã chọn / home / để được mã hóa khi tôi cài đặt Ubuntu. Bây giờ, có thể thực hiện locatecông việc với một phân vùng được mã hóa như thế này không?


Tôi có cùng một vấn đề - định vị sẽ tìm thấy các tệp bên ngoài phân vùng nhà được mã hóa của tôi nhưng không thể thấy chúng bên trong nó. (Thành thật mà nói, tôi ước tôi không bao giờ mã hóa nó khi tôi cài đặt Ubuntu ở nơi đầu tiên, với tất cả các vấn đề tôi gặp phải với nó!) Xin vui lòng ai đó có thể giải thích rõ ràng những gì tôi cần làm để có thể làm cho định vị có thể lập chỉ mục dữ liệu trên một phân vùng nhà được mã hóa. Tôi là người mới tương đối nên không biết phải làm gì khi đọc phần trên :).

4
Bạn /homelà một hệ thống tệp ảo (ecryptfs). Nó được "gắn" như một phân vùng truy cập khi bạn đăng nhập Kiểm tra /etc/updatedb.conf của bạn và a) eCryptfs remove từ hệ thống tập tin bị bỏ qua (PRUNEFS) b) thay đổi PRUNE_BIND_MOUNTS = "no".
m33lky

4
Sau đó, bạn có thể chạy sudo updatedbđể lập chỉ mục các tập tin mới.
m33lky

Hãy nhớ rằng cơ sở dữ liệu xác định vị trí sử dụng cuộc sống trong không gian không được mã hóa, có thể làm tổn hại đến mã hóa của bạn bằng cách tiết lộ tên tệp
Florian Heinle

Câu trả lời:


29

Tôi đều "chạy xác định vị trí (updatedb) khi tôi đang đăng nhập", như đã đề cập ở trên, và tôi giữ tôi một phần của cơ sở dữ liệu xác định vị trí dưới mã hóa của tôi $ HOME.

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

và sau đó tôi lập chỉ mục các tập tin $HOMEvới

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

Bây giờ tôi có một chỉ mục đầy đủ $HOMEnhưng cơ sở dữ liệu không hiển thị trừ khi $HOMEđược gắn kết và giải mã.


Đó là một giải pháp tốt. Làm thế nào bạn di chuyển db của bạn ở đó?
m33lky

4
Tôi đã không. Tôi vừa tạo một db cho cây nhà (được mã hóa) của mình, với updatedb -l 0 -o $HOME/var/mlocate.db $HOME. man locatecho biết họ sẽ tìm kiếm cơ sở dữ liệu mặc định ( /var/lib/mlocate/mlocate.db), sau đó danh sách các cơ sở dữ liệu trong $LOCATE_PATH.
hát rong

3
Không "xóa ecryptfskhỏi PRUNEFSđịnh nghĩa /etc/updatedb.conf. Khi bạn đăng nhập, /home/$USERđược giải mã, nhưng các tệp và tên tệp được mã hóa /home/$USER/.Privatesẽ bị bỏ qua. Khi bạn $HOMEkhông được gắn kết, những người khác sẽ không có quyền truy cập vào db hoặc (không được mã hóa ) tập tin của tên tập tin.
waltinator

2
updatedb -l 0 -o $HOME/var/mlocate.db $HOME-Ucần phải bỏ lỡupdatedb -l 0 -o $HOME/var/mlocate.db -U $HOME
Destan

2
Thật tệ, @destin tôi cũng đã mở rộng phương pháp của mình để lập chỉ mục phương tiện có thể xóa, sử dụng bash_path_funcs của Steve Colly ( linuxjournal.com/article/3645 ). Với phương tiện có thể tháo rời được gắn (như /media/_name_) tôi làm updatedb -l 0 -o ~/var/mlocate/_name_.db -U /media/_name_ Trong tôi .bashrc, tôi có 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_PATHlocatecó thể hiển thị cho tôi tên tệp ngay cả khi phương tiện KHÔNG được gắn.
ví von

3

Làm thế nào về việc chạy updateb khi hệ thống tệp của bạn được giải mã và cố gắng khớp các biến môi trường để đọc / ghi nó?

Sau khi đọc trang man, thêm hai biến vào tệp BASH RC của bạn.

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

Tạo thư mục được chỉ định ở trên và thêm tên người dùng $ vào nhóm mlocate.

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

Đăng xuất và đăng nhập lại để đếm người dùng của bạn trong nhóm mlocate và nhận các biến môi trường mới. Bây giờ khi bạn chạy,

updatedb -o $LOCATE_PATH

các tập tin được giải mã trong cơ sở dữ liệu định vị bây giờ? Hoặc, bạn đã làm gì để làm cho nó hoạt động hoặc tốt hơn?

Bạn cũng có thể muốn thêm updateb vào crontab của người dùng. Lần chạy đầu tiên:

crontab -e

Và thêm dòng sau:

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

Xem bình luận của tôi cho Martin. Tôi đang cố gắng để hiểu nếu có bất kỳ cân nhắc bảo mật hoặc cấu hình phù hợp nào bị bỏ qua bởi Ubuntu.
m33lky

Do các mã hóa điện tử được liệt kê trong biến PRUNEFS tại /etc/updatedb.conf, nên có lẽ bạn cũng cần sử dụng --prunefs "nfs". Đây có vẻ là một giải pháp tốt vì nó lưu trữ và cập nhật chỉ số cho mỗi người dùng từ hồ sơ người dùng.
João Pinto

@ m33lky Vấn đề là thế này: bạn đã yêu cầu mã hóa homedir của mình, vì vậy không ai (thậm chí không root!) có thể đọc nó mà không cần mật khẩu. Giải pháp thông minh là cơ sở dữ liệu định vị theo người dùng. Giải pháp dễ dàng cho máy một người dùng là xóa ecryptfsvà quét khi bạn đăng nhập. Trong tương lai, có lẽ có locatethể tổng hợp kết quả từ DB toàn cầu và DB nhà của người dùng hiện tại.
joeytwiddle

2

Bạn không thể cập nhật chỉ mục cơ sở dữ liệu mà không cần đăng nhập. Bạn nên đăng nhập và chạy lệnh updateb.

Kiểm tra cấu hình của bạn trong /etc/updatedb.conf. Xóa ecryptfskhỏi PRUNEFSvà có thể /home/.ecryptfstừ PRUNEPATHS. Đừng quên chạy sudo updatedbtheo.


1
updateb.conf cắt tỉa ecryptfs. Ngoài ra, PRUNE_BIND_MOUNTS = "có". Tôi đang cố gắng hiểu lý do đằng sau những mặc định như vậy vì điều này không thân thiện với người dùng để có kết quả từ / nhà bị thiếu trong các tìm kiếm của bạn :)
m33lky

Tôi đoán chức năng cho nhà là có một người lập chỉ mục cho mỗi người dùng ... nhưng đó là suy đoán.
Martin Owens -doctormo-

Không có mã hóa / nhà được lập chỉ mục, vì vậy tôi mong đợi hành vi tương tự ...
m33lky

1
Tôi đã mô tả tình huống từ quan điểm giao diện người dùng.
m33lky

2
Nếu bạn đã mã hóa toàn bộ đĩa, đây sẽ không phải là vấn đề, nếu bạn chỉ có mã hóa tại nhà thì bây giờ bạn cần bắt đầu lập chỉ mục cho mỗi người dùng và sử dụng từng mã hóa riêng lẻ ... thực tế bạn có thể chỉ cần bỏ chỉ mục nhà trong thư mục nhà của người dùng .... tất cả đều là sự phát triển chính và chi phí cho một thứ mà hầu hết người dùng không bao giờ nhìn thấy. Vui lòng báo cáo lỗi chống lại dự án công cụ cơ sở dữ liệu.
Martin Owens -doctormo-
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.