Giới thiệu systemd-homed để quản lý các thư mục chính di động

Thơ Lennart giới thiệu (PDF) tại hội nghị All Systems Go 2019, một thành phần mới của hệ thống quản lý hệ thốngd - systemd-homed, nhằm mục đích làm cho các thư mục chính của người dùng có thể di động và tách biệt khỏi cài đặt hệ thống. Ý tưởng chính của dự án là tạo ra môi trường tự cung cấp dữ liệu người dùng có thể được truyền giữa các hệ thống khác nhau mà không phải lo lắng về việc đồng bộ hóa và bảo mật mã định danh.

Môi trường thư mục chính có dạng tệp hình ảnh được gắn, dữ liệu trong đó được mã hóa. Thông tin đăng nhập của người dùng được gắn với thư mục chính thay vì cài đặt hệ thống - thay vì /etc/passwd và /etc/shadow hồ sơ ở định dạng JSON, được lưu trữ trong thư mục ~/.identity. Hồ sơ chứa các tham số cần thiết cho công việc của người dùng, bao gồm thông tin về tên, hàm băm mật khẩu, khóa mã hóa, hạn ngạch và tài nguyên được phân bổ. Hồ sơ có thể được chứng nhận bằng chữ ký số được lưu trữ trên mã thông báo Yubikey bên ngoài.

Các tham số cũng có thể bao gồm thông tin bổ sung như khóa SSH, dữ liệu xác thực sinh trắc học, hình ảnh, email, địa chỉ, múi giờ, ngôn ngữ, quy trình và giới hạn bộ nhớ, cờ gắn kết bổ sung (nodev, noexec, nosuid), thông tin về máy chủ IMAP/SMTP của người dùng đã sử dụng , thông tin về cách bật kiểm soát của phụ huynh, tùy chọn sao lưu, v.v. Một API được cung cấp để yêu cầu và phân tích các tham số Varlink.

Việc gán và xử lý UID/GID được thực hiện linh hoạt trên mỗi hệ thống cục bộ mà thư mục chính được kết nối. Sử dụng hệ thống được đề xuất, người dùng có thể giữ thư mục chính của mình bên mình, chẳng hạn như trên ổ Flash và có được môi trường làm việc trên bất kỳ máy tính nào mà không cần tạo tài khoản rõ ràng trên đó (sự hiện diện của một tệp có hình ảnh của thư mục chính dẫn đến sự tổng hợp của người dùng).

Người ta đề xuất sử dụng hệ thống con LUKS2 để mã hóa dữ liệu, nhưng systemd-homed cũng cho phép sử dụng các chương trình phụ trợ khác, chẳng hạn như đối với các thư mục không được mã hóa, phân vùng mạng Btrfs, Fscrypt và CIFS. Để quản lý các thư mục di động, tiện ích homectl được đề xuất, cho phép bạn tạo và kích hoạt hình ảnh của các thư mục chính, cũng như thay đổi kích thước của chúng và đặt mật khẩu.

Ở cấp độ hệ thống, công việc được đảm bảo bởi các thành phần sau:

  • systemd-homed.service - quản lý thư mục chính và nhúng các bản ghi JSON trực tiếp vào hình ảnh thư mục chính;
  • pam_systemd - xử lý các tham số từ cấu hình JSON khi người dùng đăng nhập và áp dụng chúng trong ngữ cảnh của phiên được kích hoạt (thực hiện xác thực, định cấu hình các biến môi trường, v.v.);
  • systemd-logind.service - xử lý các tham số từ cấu hình JSON khi người dùng đăng nhập, áp dụng các cài đặt quản lý tài nguyên khác nhau và đặt giới hạn;
  • nss-systemd - Mô-đun NSS cho glibc, tổng hợp các bản ghi NSS cổ điển dựa trên cấu hình JSON, cung cấp khả năng tương thích ngược với API xử lý người dùng UNIX (/etc/password);
  • PID 1 - tự động tạo người dùng (được tổng hợp bằng cách tương tự với việc sử dụng lệnh DynamicUser theo đơn vị) và làm cho chúng hiển thị với phần còn lại của hệ thống;
  • systemd-userdbd.service - dịch các tài khoản UNIX/glibc NSS thành các bản ghi JSON và cung cấp API Varlink thống nhất để truy vấn và lặp lại các bản ghi.

Ưu điểm của hệ thống được đề xuất bao gồm khả năng quản lý người dùng khi gắn thư mục /etc ở chế độ chỉ đọc, không cần đồng bộ hóa mã định danh (UID/GID) giữa các hệ thống, tính độc lập của người dùng với một máy tính cụ thể, chặn dữ liệu người dùng trong chế độ ngủ, việc sử dụng mã hóa và các phương pháp xác thực hiện đại. Systemd-homed dự kiến ​​sẽ được đưa vào hệ thống chính thống trong phiên bản 244 hoặc 245.

Hồ sơ người dùng JSON mẫu:

"tự động đăng nhập" : đúng,
"ràng buộc" : {
«15e19cd24e004b949ddaac60c74aa165» : {
"fileSystemType" : "ext4"
«fileSystemUUID» : «758e88c8-5851-4a2a-b98f-e7474279c111»,
"gid": 60232,
"homeDirectory" : "/home/test",
"imagePath" : "/home/test.home",
"luksCipher" : "aes",
"luksCipherMode" : "xts-plain64",
«luksUUID» : «e63581ba-79fa-4226-b9de-1888393f7573»,
"luksVolumeKeySize" : 32,
«partitionUUID» : «41f9ce04-c927-4b74-a981-c669f93eb4dc»,
"lưu trữ" : "luks",
"uid" : 60233
}
},
"bố trí" : "thường xuyên",
"thực thiPasswordPolicy": sai,
"lastChangeUSec": 1565951024279735,
"thành viên của" : [
"bánh xe"
],
"đặc quyền" : {
"mật khẩu băm" : [
«$6$WHBKvAFFT9jKPA4k$OPY4D5…/»
] },
"chữ ký" : [
{
"dữ liệu" : "LU/HeVrPZSzi3M3J...==",
"key" : "——BẮT ĐẦU KHÓA CÔNG CỘNG——\nMCowBQADK2VwAy…=\n——KẾT THÚC KHÓA CÔNG CỘNG——\n"
}
],
"tên người dùng" : "kiểm tra",
"trạng thái" : {
«15e19cf24e004b949dfaac60c74aa165» : {
"Bộ đếm xác thực tốt": 16,
"lastGoodAuthenticationUSec" : 1566309343044322,
"rateLimitBeginUSec" : 1566309342341723,
"rateLimitCount" : 1,
"trạng thái" : "không hoạt động",
"dịch vụ" : "io.systemd.Home",
"Kích thước đĩa": 161218667776,
"đĩa trần": 191371729408,
"Sàn đĩa": 5242780,
"đã ký tại địa phương" : đúng
}
}

Nguồn: opennet.ru

Thêm một lời nhận xét