Điểm:0

Sự khác biệt giữa/etc/group và 'id -G', có thể liên quan đến cài đặt docker?

lá cờ fr

Tôi đã tạo một Dockerfile, sử dụng userid hiện tại của tôi để chạy ứng dụng sao cho bộ chứa docker đang chạy với cùng quyền của người dùng hiện tại của tôi, xem xét bộ chứa gắn thư mục của máy chủ để thực hiện tác vụ.

Tôi không root cho hệ thống Máy chủ (cục bộ) của mình. Để làm cho cuộc sống của tôi dễ dàng hơn, tôi cũng thêm nhóm root, sudo vào tài khoản này của hình ảnh Docker, vì vậy tôi có thể thực hiện tác vụ sudo để cài đặt mọi thứ.

Đây là một phần của Dockerfile:

(Ubuntu 18.04)

    ARG USERNAME='kiểm tra'
    UID ARG=1000
    ARGGID=1000
    CHẠY apt-get update && apt-get install -yq openssh-server sudo
    RUN groupadd -g nhóm gỡ lỗi $GID
    CHẠY useradd -rm -d /home/$USERNAME -s /bin/bash -u $UID -g $GID -G wheel $USERNAME
    CHẠY echo $USERNAME:test | chpasswd

Khi tôi xây dựng hình ảnh docker, tôi sử dụng

docker build --build-arg UID=$(id -u) --build-arg GID=$(id -g) --build-arg USERNAME=$(whoami) .

để chuyển tên người dùng và userid của tôi

và khi tôi chạy docker image (để tạo docker container), tôi cũng sử dụng

docker run --detach -u $(id -u):$(id -g)

Tất cả đều tốt cho đến thời điểm này. Khi tôi sử dụng 'docker exec -it xxx bash' để đăng nhập vùng chứa này, tên người dùng của tôi là chính xác (ben), tên người dùng của tôi là chính xác (10023). id -G cho thấy tôi thuộc 3 nhóm: 10001 (nhóm gỡ lỗi), 0 (root), 27 (sudo) 10001 là id nhóm thực của tôi nếu tôi chạy id -g trong máy chủ.

Đây là sự thay đổi: Trong máy chủ, ngoài nhóm 10001, tôi còn là thành viên của nhóm 10022 và 10033, vì vậy tôi có quyền đối với một số thư mục cụ thể. Bây giờ trong vùng chứa, vì người dùng không ở trong 10022 và 10033, tôi không thể truy cập vào thư mục này.

Vì vậy, tôi đã thay đổi docker chạy lệnh để:

docker run --detach -u $(id -u):$(id -g) $(id -G | sed -e 's/\</--group-add /g')

Nó thực sự đang hoạt động và tôi có thể truy cập vào thư mục của mình ngay bây giờ. id -G cho thấy tôi thuộc 3 nhóm: 10001 (nhóm gỡ lỗi), 10022 (no name), 10033 (no name)

Nhưng mà: Tôi không còn là thành viên của sudo và root nữa. Điều thú vị là, con mèo/etc/nhóm cho thấy rằng tôi vẫn ở trong sudo và nhóm gốc, nhưng tôi không được phép sudo nữa.

ben@a1559a984ac0:/$ grep ben /etc/group
gốc:x:0:ben
sudo:x:27:ben
ben@a1559a984ac0:/$ sudo ls
[sudo] mật khẩu cho ben: 
ben không có trong tệp sudoers. Sự cố này sẽ được báo cáo.

Có một số bài đăng trên StackExchange nói về Sự khác biệt về nhóm, nhưng tôi không thấy giải pháp cho vấn đề này: Tài khoản của tôi nằm trong/etc/group, nhưng không nằm trong "nhóm" và "id -G". Tại sao " --group-add " của docker chạy lệnh xóa nhóm hiện có mà tôi đã tham gia?

Tôi đoán tôi có thể viết mã cứng " --group-add 0 " để tự thêm mình vào thư mục gốc, nhưng điều này vẫn gây khó chịu (không thanh lịch). Bất cứ đề nghị nào?

Tệp docker dành cho Ubuntu 18.04, nhưng tôi đoán nó không liên quan đến phiên bản.

Ben L avatar
lá cờ fr
Cập nhật: Tôi thực sự thêm `--group-add sudo ` để làm cho tài khoản có thể sudo được. Nhưng vẫn muốn biết cách giải quyết vấn đề khác biệt.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.