Unprivileged LXCs - Mount CIFS Shares

Privileged LXC thì không an toàn còn Unprivileged LXC không cho phép mount CIFS trực tiếp thông thường. Vậy phải làm sao ...

1. How does it work?

Mặc định, các chia sẻ CIFS được gắn kết như người dùng root(uid=0) và nhóm root(gid=0) trên máy chủ PVE, điều này khiến chúng không thể truy cập được đối với các người dùng khác, nhóm và LXCs.

Điều này là do UIDs/GIDs trên máy chủ PVE và khách LXC đều bắt đầu từ 0. Nhưng một UID/GID=0 trong một LXC không đặc quyền thực sự là một UID/GID=100000 trên máy chủ PVE. Xem liên kết dưới đây để biết thêm thông tin.

Các container LXC không đặc quyền - Proxmox VE

Vì vậy, chỉ đơn giản là gắn kết chia sẻ CIFS vào UID thuộc về người dùng root không đặc quyền của LXC, mà theo mặc định luôn là uid=100000.

Nhưng thay vì cũng gắn nó vào GID của người dùng root của LXC, bạn sẽ tạo một nhóm trong LXC của bạn có tên là lxc_shares với gid=10000 tham chiếu đến gid=110000 trên máy chủ PVE.

PVE host (UID=100000/GID=110000) <--> unprivileged LXC (UID=0/GID=10000)

2. Create a new group in the LXC

Tạo nhóm “lxc_shares” với GID=10000 trong LXC sẽ khớp với GID=110000 trên máy chủ PVE.

1groupadd -g 10000 lxc_shares

Thêm user truy cập vào chia sẻ CIFS vào nhóm lxc_shares.

ví dụ: jellyfin, plex, … (tên người dùng phụ thuộc vào ứng dụng).

1usermod -aG lxc_shares user

Tắt LXC.

3. Mount CIFS on the PVE host

Tạo folder để mount CIFS/SMB shared folder

1mkdir -p /mnt/lxc

Tạo credentials: /root/.smbcredentials

1username=your_username
2password=your_password

Thêm lệnh bên dưới vào /etc/fstab để automount

1//XPEnology/lxc/ /mnt/lxc cifs _netdev,x-systemd.automount,noatime,uid=100000,gid=110000,dir_mode=0770,file_mode=0770,credentials=/root/.smbcredentials 0 0

Modify the script to suitable your system.

//XPEnology/lxc: match your CIFS hostname (or IP)

Sau đó, mount CIFS/SMB folder trên PVE host

1systemctl daemon-reload
2mount -a 

4. Bind mount to the LXC

Mở file LXC configuration.

1nano /etc/pve/lxc/<Container_ID>.conf

Thêm dòng lệnh

1mp0: /mnt/lxc,mp=/mnt/lxc

File LXC Conf sẽ giống như ảnh.

mount-lxc.png

Khởi chạy LXC để tận hưởng kết quả.