Tin tức và phân tích của tất cả các thiết bị di động

Systemd sẽ thay đổi cách thư mục chính Linux của bạn hoạt động

Nhóm systemd muốn bạn áp dụng một cách mới để quản lý các thư mục chính của mình. Gọi nó là “cách mới” là một cách nói quá – đó là một sự thay đổi mô hình thực sự cho Linux. Đây là tất cả những gì bạn cần biết về systemd-homed, có khả năng sẽ đến với một bản phân phối Linux gần đó.

Tranh cãi không xa lạ

Khi systemd được giới thiệu vào năm 2010, cộng đồng Linux đã chia thành ba phe. Một số cảm thấy đó là một cải tiến và những người khác cảm thấy đó là một thiết kế thiếu sót không tuân theo triết lý Unix. Một số người không quan tâm.

Phản ứng của những người phản đối rất lớn, nóng nảy và trong một số trường hợp là cuồng tín. Lennart Poettering, một kỹ sư phần mềm mũ đỏ và đồng tác giả của systemd, thậm chí đã nhận được những lời dọa giết.

Các bài hát ủng hộ bạo lực chống lại Poettering đã được xuất bản trên YouTubevà các trang web đã cố gắng buộc người dùng Linux tẩy chay hệ thống. Người đồng sáng tạo Kay Sievers cũng phải đối mặt với những lời chỉ trích và lạm dụng, nhưng Poettering chắc chắn phải gánh chịu hậu quả nặng nề nhất.

Tuy nhiên, trong vòng tám tháng, Fedora đã sử dụng systemd. Vào cuối năm 2013, Arc, Debian, Manjaro và Ubuntu đều đã chuyển sang systemd. Tất nhiên, lợi thế của nguồn mở là nếu bạn không thích điều gì đó, bạn có thể rẽ nhánh mã nguồn và làm những việc của riêng bạn với nó. Các bản phân phối mới – như Devuan, một nhánh của Debian – được tạo chỉ để tránh sử dụng systemd.

Thư mục $HOME của bạn

Trong cấu trúc thư mục của Linux, mọi thứ bạn làm đều nằm trong thư mục “/home”. Các tệp dữ liệu, hình ảnh, nhạc và toàn bộ cây thư mục cá nhân của bạn được lưu trữ trong một thư mục duy nhất được đặt tên theo tài khoản người dùng của bạn.

Cài đặt ứng dụng được lưu trữ trong thư mục nhà của bạn trong “thư mục chấm” ẩn. Nếu ký tự đầu tiên của tên tệp hoặc thư mục là dấu chấm (.), nó sẽ bị ẩn. Vì các cài đặt này được lưu trữ cục bộ chứ không phải trong sổ đăng ký trung tâm – và bản sao lưu thư mục chính chứa các tệp và thư mục ẩn này – tất cả các cài đặt cũng được sao lưu.

Khi khôi phục bản sao lưu và khởi động một ứng dụng như LibreOffice hoặc Thunderbird, nó sẽ tìm kiếm thư mục ẩn của nó. Nó cũng tìm thấy các tùy chọn tài liệu, cài đặt thanh công cụ và bất kỳ tùy chỉnh nào khác. Thunderbird sẽ tìm thông tin tài khoản email và địa chỉ email của bạn. Bạn không cần phải trải qua quá trình thiết lập từng ứng dụng một cách chậm chạp.

Bạn có thể sử dụng ls với tùy chọn -a (tất cả) để xem các tệp và thư mục ẩn. Đầu tiên nhập:

ls

Điều này hiển thị các tập tin và thư mục thông thường. Sau đó nhập:

ls -a

Bây giờ bạn có thể xem các tập tin và thư mục ẩn.

Vì đây là phần có giá trị nhất của quá trình cài đặt, thư mục “/home” thường được gắn trên phân vùng riêng của nó hoặc trên một ổ đĩa cứng riêng. Bằng cách này, nếu có điều gì đó thảm khốc xảy ra với hệ điều hành hoặc phân vùng chứa nó, bạn có thể cài đặt lại bản phân phối Linux hoặc thay thế bằng một bản mới. Sau đó, bạn chỉ có thể kết nối lại phân vùng nhà hiện tại của mình thành “/ home”.

Dữ liệu về bạn

Thư mục chính của bạn không chỉ lưu trữ dữ liệu của bạn; cũng lưu trữ thông tin về bạn. bao gồm một số thuộc tính của danh tính kỹ thuật số của bạn. Ví dụ: thư mục “.ssh” lưu trữ thông tin về các kết nối từ xa được thực hiện với các máy tính khác và bất kỳ khóa SSH nào được tạo.

Các thuộc tính hệ thống khác như tên người dùng tài khoản, mật khẩu và ID người dùng duy nhất được lưu trữ ở nơi khác trong các tệp như “/etc/passwd” và “/etc/shadow”. Bất cứ ai cũng có thể đọc một số trong số chúng, nhưng những cái khác chỉ có thể được đọc bởi những người có quyền root.

Đây là giao diện của tệp “/etc/passwd”:

cat /etc/passwd

cat /etc/passwd trong cửa sổ đầu cuối.

Thay đổi hệ thống

Mục tiêu của các thay đổi systemd-homed là cung cấp một thư mục chính hoàn toàn di động lưu trữ cả dữ liệu và danh tính kỹ thuật số Linux của bạn. UID của bạn và tất cả các cơ chế nhận dạng và xác thực khác sẽ chỉ được lưu trữ trong thư mục chính của bạn.

Do thiết kế “tất cả trứng trong một giỏ”, các thư mục chính được mã hóa. Chúng được giải mã tự động mỗi khi bạn đăng nhập và mã hóa lại mỗi khi bạn đăng xuất. Phương pháp ưa thích là sử dụng Cấu hình khóa hợp nhất của Linux (LUKS) để mã hóa ổ đĩa. Tuy nhiên, có những chương trình khác như fscrypt.

Bản ghi người dùng Ký hiệu đối tượng JavaScript (JSON) lưu trữ tất cả thông tin nhận dạng của bạn trong thư mục có tên “~/.identity”. Nó được ký bằng mật mã với một khóa mà bạn không có quyền kiểm soát.

Thư mục chính của mỗi người được gắn trên thiết bị phản hồi, tương tự như cách ứng dụng snap được gắn. Điều này được thực hiện để cây thư mục ở gốc trông giống như một phần thống nhất của cây thư mục hệ điều hành. Điểm gắn kết mặc định là “/home/$USER.homedir” (“$USER” được thay thế bằng tên tài khoản của người đó).

những lợi ích là gì?

Vì thư mục chính trở thành một gói an toàn cho tất cả dữ liệu của bạn, nên bạn thậm chí có thể có thư mục chính của mình trên một thiết bị di động. Ví dụ: bạn có thể sử dụng ổ USB để di chuyển nó giữa máy tính cơ quan và máy tính ở nhà hoặc bất kỳ máy tính nào khác ở nhà.

Đây là những gì Poettering có nghĩa là “thư mục chính hoàn toàn di động”. Điều đó nói rằng, ngay cả khi bạn không muốn chuyển thư mục chính của mình sang một thiết bị di động, thì việc nâng cấp và di chuyển sẽ dễ dàng và an toàn hơn.

Nó loại bỏ cái mà nó gọi là “cơ sở dữ liệu thứ cấp” chứa các bit và mẩu thông tin quan trọng về bạn mà Poettering tin rằng nên được tập trung. Các tệp “/etc/passwd” và “/etc/shadow” chứa thông tin xác thực và mật khẩu được mã hóa. Tuy nhiên, chúng cũng lưu trữ thông tin như trình bao mặc định, tệp Giám sát hoạt động toàn diện của General Electric (GECOS).

Poettering nói rằng siêu dữ liệu nên được hợp lý hóa và lưu trữ trong các nhóm có ý nghĩa trong bản ghi JSON của mỗi người trong thư mục chính của họ.

Quản lý $HOME mới

Dịch vụ systemd-homed được điều khiển bởi công cụ dòng lệnh homectl mới.

Có các tùy chọn để tạo người dùng và thư mục chính cũng như đặt giới hạn bộ nhớ cho mỗi người dùng. Bạn cũng có thể đặt mật khẩu, chặn ai đó truy cập vào tài khoản của họ hoặc xóa tài khoản hoàn toàn. Người dùng có thể được kiểm tra cũng như hồ sơ người dùng JSON của họ.

Bạn cũng có thể đặt múi giờ và thông tin dựa trên vị trí khác cho từng người dùng. Bạn có thể chỉ định trình bao mặc định và thậm chí đặt các biến môi trường ở trạng thái nhất định khi ai đó đăng nhập.

Nếu tìm trong thư mục “/home”, bạn sẽ thấy các mục được quản lý bởi systemd-homed trông như thế này, với “.homedir” được thêm vào tên người dùng:

/home/dave.homedir

Lưu ý rằng đây chỉ là một điểm gắn kết. Vị trí của thư mục chính được mã hóa thực sự ở nơi khác.

Hạn chế và vấn đề

systemd-homed chỉ dành cho sử dụng trên tài khoản người dùng. Nó không hỗ trợ các tài khoản người dùng có UID nhỏ hơn 1000. Nói cách khác, root, daemon, bin, v.v. không thể được quản lý bằng lược đồ mới. Sẽ luôn có nhu cầu về các cách quản lý người dùng tiêu chuẩn. Do đó, systemd-homed không phải là một giải pháp toàn cầu.

Được biết, Catch 22 cần được giải quyết. Như chúng tôi đã đề cập trước đó, thư mục chính của một người được giải mã mỗi khi họ đăng nhập. Nhưng nếu ai đó truy cập máy tính của bạn từ xa qua SSH, bạn không thể tham chiếu các khóa SSH trong thư mục chính của mình vì thư mục chính của bạn vẫn được mã hóa cho đến lúc đó. người đăng nhập. Tất nhiên, bạn cần khóa SSH trước khi đăng nhập.

Đây là sự cố đã được nhóm systemd-homed công nhận, nhưng chúng tôi không thể tìm thấy bất kỳ thông tin nào về cách khắc phục sự cố. Chúng tôi chắc chắn rằng họ sẽ tìm ra giải pháp; nó sẽ là ngoạn mục nếu họ không.

Giả sử ai đó di chuyển thư mục chính của họ sang một máy tính mới. Nếu một UID đã được người khác sử dụng trên máy tính mới, UID đó sẽ tự động được gán một UID mới. Tất nhiên, tất cả các tệp của nó sẽ phải được gán lại cho UID mới.

Điều này hiện được hỗ trợ bởi lệnh chown -R tự động, đệ quy. Điều này có thể sẽ được xử lý theo cách khác trong tương lai khi một thiết kế trang nhã hơn được phát triển. Cách tiếp cận đòi hỏi khắt khe này không tính đến các daemon và quy trình chạy như những người dùng khác.

Khi nào điều này xảy ra?

Nó đang xảy ra bây giờ. Các thay đổi về mã đã được gửi vào ngày 20 tháng 1 năm 2020 và được đưa vào bản dựng systemd 245 đi kèm với Ubuntu 20.04 vào tháng 4 năm 2020.

Để kiểm tra phiên bản bạn có, hãy nhập:

systemd --version

systemd --version trong cửa sổ đầu cuối.

Tuy nhiên, lệnh homectl vẫn chưa xuất hiện. Ubuntu 20.04 sử dụng thư mục /home truyền thống và không sử dụng systemd-homed.

Tất nhiên, tùy thuộc vào từng bản phân phối để quyết định thời điểm bao gồm và hỗ trợ systemd-homed và homectl.

Vì vậy, không cần bất kỳ ai phải chuyển sang chế độ full fork và ngọn đuốc rực lửa. Vì các phương pháp tiêu chuẩn để quản lý người dùng và thư mục chính sẽ được giữ lại, tất cả chúng ta sẽ vẫn có lựa chọn.

Mục lục