- Có thể tạo người dùng cho các UID / GID tương ứng trên máy chủ để có đầu ra có ý nghĩa hơn cho ls và bạn bè không?
Vâng, nó ổn Tuy nhiên, bạn phải đảm bảo rằng người dùng đó không có quyền đối với bất kỳ thứ gì trong hệ thống máy chủ:
- Vô hiệu hóa quyền truy cập hoặc mật khẩu,
- Không có vỏ đăng nhập có thể sử dụng,
- Không có thư mục nhà có thể ghi.
Hãy chắc chắn không tạo bất kỳ bản sao trong tên người dùng của bạn.
Dưới đây là tập lệnh mẫu, lấy khách /etc/passwd
và /etc/group
tệp để tạo người dùng tương ứng trong hệ thống máy chủ. Tất cả các tên đều có tiền tố với tên container và tất cả ID được tăng lên bằng cách sử dụng giá trị đã cho để khớp với UID của container:
#! /bin/sh
# Path to guest's `/etc' directory.
guest_etc=/var/lib/lxc/mycontainer/rootfs/etc
# Guest's name, used as login prefix and inside GECOS field.
guest_name=mycontainer
# Increment to be applied to UIDs and GIDs (= range start).
uid_incr=100000
gid_incr=$uid_incr
guest_passwd=${guest_etc}/passwd
guest_group=${guest_etc}/group
exec <$guest_group
while IFS=":" read name pass gid null; do
gid_new=$( expr $gid + $gid_incr )
if ! getent group $gid_new >/dev/null; then
addgroup --system --gid $gid_new "${guest_name}_${name}"
fi
done
exec <$guest_passwd
while IFS=":" read login pass uid gid gecos null; do
uid_new=$( expr $uid + $uid_incr )
gid_new=$( expr $gid + $gid_incr )
if ! getent passwd $uid_new >/dev/null; then
adduser --system --home /nonexistent --no-create-home \
--shell /bin/nologin --uid $uid_new --gid $gid_new \
--gecos "\"$guest_name container user (${gecos})\"" \
"${guest_name}_${login}"
fi
done
Các cảnh báo liên quan đến thư mục nhà không thể truy cập là bình thường và dự kiến: đây là mục đích thực tế của /nonexistent
việc không tồn tại.
- Có cách nào để làm cho các tệp / thư mục đó có thể truy cập được đối với người dùng máy chủ "sở hữu" các userns, tức là john trong trường hợp của chúng tôi không? Và nếu vậy, có phải là phương pháp hợp lý duy nhất để tạo một nhóm được chia sẻ giữa những người dùng hợp lệ đó trong phạm vi cấp dưới và "chủ sở hữu" và đặt quyền cho phù hợp? Vâng, hoặc ACL, rõ ràng.
Điều này thực sự đáng giá một câu hỏi IMO riêng biệt.
Vì nội dung của container được sở hữu bởi các UID khác với UID của chủ sở hữu container, nên anh ta không thể truy cập được. Tôi có thể tưởng tượng một ngoại lệ cho quy tắc này cho người đăng ký, nhưng hiện tại tôi không biết gì về điều này (tôi đã tạo một câu hỏi liên quan cách đây vài lần, nhưng chưa có câu trả lời nào).
Các tệp /etc/subuid
và /etc/subgid
hiện chỉ được sử dụng bởi newuidmap
(1) để cho phép hoặc từ chối chuyển đổi từ một UID / GID sang một quy trình nhất định. Nó không cung cấp cho chủ sở hữu phạm vi bất kỳ quyền nào khác.
Do đó, giải pháp cho vấn đề như vậy nên được thiết kế trên cơ sở từng trường hợp. Tuy nhiên, hãy cẩn thận với ý tưởng ACL của bạn: giả sử bạn đặt một số ACL trên các tệp của bộ chứa để cho phép UID 1000 của máy chủ của bạn đọc chúng, điều này có nghĩa là người dùng của bộ chứa với UID 1000 của bộ chứa cũng sẽ có cùng mức độ đặc quyền ...