Quản lý User trên Fedora: Đã đến lúc chia tay /etc/passwd để sang systemd-homed

Fedora tutorial - IT technology blog
Fedora tutorial - IT technology blog

Cơn ác mộng lúc 2 giờ sáng và sự lỗi thời của /etc/passwd

Tưởng tượng kịch bản này: 2 giờ sáng, server Fedora chứa dữ liệu quan trọng của team dev bị lỗi file hệ thống. Bạn cố gắng mount ổ cứng sang máy khác để cứu dữ liệu nhưng vấp phải một mớ hỗn độn. UID lệch pha, permission nhảy loạn, còn bạn thì ngồi “vò đầu bứt tai” với đống file cấu hình rời rạc.

Dùng Fedora làm máy chính suốt 2 năm, mình cực kỳ ưng tốc độ cập nhật package. Tuy nhiên, cách quản lý user kiểu cũ từ những năm 70 thực sự là một điểm trừ lớn. Thông tin người dùng bị phân tán khắp nơi. Muốn di chuyển một user sang máy khác, bạn gần như phải làm thủ công mọi công đoạn.

Đó là lý do systemd-homed xuất hiện. Nó gói gọn mọi thông tin của người dùng vào một thực thể duy nhất, có khả năng tự mã hóa và cực kỳ cơ động. Hãy cùng mình chuyển đổi sang tư duy quản lý user hiện đại này.

Khái niệm cốt lõi: systemd-homed là gì?

Thay vì rải rác thông tin ở các file text, systemd-homed tạo ra một JSON record chứa mọi thứ từ mật khẩu hash đến giới hạn tài nguyên. Thư mục Home giờ đây không còn là folder tĩnh. Nó có thể là một file LUKS image, một phân vùng riêng, hoặc một Btrfs subvolume linh hoạt.

Lợi thế lớn nhất nằm ở bảo mật. Khi bạn logout, hệ thống sẽ unmount và khóa chặt thư mục Home. Ngay cả khi hacker chiếm được quyền root lúc bạn vắng mặt, việc tiếp cận dữ liệu cá nhân là gần như không thể.

Bước 1: Kích hoạt systemd-homed trên Fedora

Dù Fedora luôn là “đất diễn” của công nghệ mới, systemd-homed vẫn chưa được bật sẵn để tránh xung đột cấu hình cũ. Việc đầu tiên chúng ta cần làm là đánh thức nó dậy.

# Cài đặt package (thường đã có sẵn trên Fedora Workstation)
sudo dnf install systemd-homed

# Kích hoạt và chạy service ngay lập tức
sudo systemctl enable --now systemd-homed

Hãy kiểm tra trạng thái bằng lệnh homectl list. Nếu danh sách trống trơn, hệ thống đã sẵn sàng để đón thành viên đầu tiên.

Bước 2: Tạo User mới với homectl

Tạm biệt useradd, chúng ta sẽ làm quen với homectl. Giả sử mình tạo user itzero với dung lượng 10GB và sử dụng mã hóa LUKS để bảo mật tối đa.

sudo homectl create itzero --storage=luks --disk-size=10G

Sau khi nhập mật khẩu, systemd-homed sẽ tạo một file image tại /home/itzero.home. Khi user login, file này tự động mount vào /home/itzero. Lúc logout, nó biến mất hoàn toàn khỏi cây thư mục hệ thống, không để lại dấu vết.

Muốn soi kỹ cấu hình JSON bên trong? Hãy dùng lệnh:

homectl inspect itzero

Bước 3: Giới hạn tài nguyên – Quản lý như một Pro

Đây mới là “vũ khí bí mật” cho các anh em quản lý server Lab. Bạn có thể giới hạn RAM hoặc CPU cho từng user ngay trong record của họ mà không cần đụng vào cgroups thủ công.

Ví dụ, mình muốn giới hạn user itzero chỉ được dùng tối đa 2GB RAM và 20% trọng số CPU:

sudo homectl update itzero --memory-max=2G --cpu-weight=20

Thay đổi này có hiệu lực ngay lập tức hoặc sau lần login tới. Cách làm này rất thực dụng khi bạn share máy cho thực tập sinh chạy code mà không lo treo cả hệ thống.

Bước 4: Xử lý lỗi đăng nhập (PAM)

Kinh nghiệm xương máu: Nếu tạo xong user mà không login được qua màn hình GDM, đừng hoảng. Lý do thường là PAM (Pluggable Authentication Modules) chưa nhận diện được cơ chế mới này.

Trên Fedora, bạn cần yêu cầu hệ thống ưu tiên kiểm tra systemd-homed bằng lệnh sau:

sudo authselect select sssd with-systemd-home --force

Lệnh này sẽ cấu hình lại luồng xác thực, đảm bảo pam_systemd_home.so được gọi đúng lúc.

Bước 5: Khả năng di động (Portability) – Tính năng giá trị nhất

Chuyển nhà cho dữ liệu chưa bao giờ dễ thế. Nếu bạn lưu thư mục Home dưới dạng file LUKS image trên ổ cứng rời, việc sang máy mới chỉ mất 2 bước:

  1. Kết nối ổ cứng chứa file image vào máy Fedora mới.
  2. Chạy lệnh: sudo homectl activate /path/to/itzero.home.

Hệ thống mới tự động đọc JSON record, nhận diện UID và mật khẩu cũ. Bạn có ngay môi trường làm việc quen thuộc mà không cần rsync hay sửa quyền sở hữu file phức tạp.

Kết luận từ kinh nghiệm thực chiến

Chuyển sang systemd-homed không đơn thuần là chạy theo xu hướng. Đây là cách để bảo vệ dữ liệu và đơn giản hóa việc quản trị về lâu dài. Dù ban đầu có vẻ lạ lẫm, nhưng sự gọn gàng của homectl sẽ khiến bạn không bao giờ muốn quay lại sửa /etc/passwd bằng tay nữa.

Nếu đang vận hành hệ thống nhiều người dùng hoặc cần bảo mật thư mục cá nhân, bạn hãy thử ngay. Đừng đợi đến lúc phải cứu dữ liệu giữa đêm mới thấy hết giá trị của nó.

Share: