Điểm:0

NGƯỜI DÙNG CHỦ SỞ HỮU sai trên thư mục/tệp: docker run -v :/ không hoạt động đối với người dùng được xác định trong Dockerfile

lá cờ in
AKS

Hệ điều hành máy chủ: Bản phát hành Red Hat Enterprise Linux Server 7.9 (Maipo)

hệ điều hành khách tức là một Docker container đang chạy: OpenSuse 15.2

Phiên bản docker (trên máy chủ): Phiên bản docker 19.03.5, xây dựng 633a0ea

Trên máy chủ, khi tôi git sao chép kho lưu trữ "utilities_scripts", tôi có quyền truy cập hợp lệ cho người dùng (do ô).

  • Tôi nghĩ vấn đề ở đây không liên quan đến quyền nhưng TẠI SAO NGƯỜI DÙNG được xác định trong Dockerfile không được đặt làm chủ sở hữu của các thư mục/tệp (đang được gắn kết) bên trong bộ chứa docker, khi tôi phát hành như sau docker chạy ... chỉ huy. Đặt 755/775, v.v. không phải là một tùy chọn vì tôi không thể chọn bên trong vùng chứa với tư cách là người dùng docker mục tiêu và đặt 777 là một cách làm không tốt.

GHI CHÚ:

  1. Khi tôi thử cùng một hình ảnh docker từ một máy Linux khác, thư mục/tệp được gắn với tư cách là người dùng "docker_non_root_user" được định nghĩa trong Dockerfile là NGƯỜI DÙNG docker_non_root_user.
  2. xây dựng docker ... chạy thành công và tạo một hình ảnh, và bộ chứa hoạt động trên một máy khác (khi tôi gắn git clone repos bên trong bộ chứa bằng cách sử dụng -v <máy chủ>:<thùng chứa> cú pháp tùy chọn docker CLI.

đoạn mã từ Dockerfile là:

# Xác định bất kỳ tham chiếu điểm gắn kết nào
KHỐI LƯỢNG ["/home/docker_non_root_user/git"]

NGƯỜI DÙNG docker_non_root_user
WORKDIR /home/docker_non_root_user/git

Đây là những gì tôi thấy trên máy chủ nơi tôi có Dockerfile NGƯỜI DÙNG ... Vấn đề sở hữu:

[gigauser@jenkins-projectABC bitbucket_workspace]$ whoami
gigauser
[gigauser@jenkins-projectABC bitbucket_workspace]$ id
uid=gigauser(gigauser) gid=21520(jenkins) nhóm=21520(jenkins),3000(ectx)

[gigauser@jenkins-projectABC bitbucket_workspace]$ umask
0077
[gigauser@jenkins-projectABC bitbucket_workspace]$ ls -l
tổng số 12
drwx------ 5 gigauser jenkins 4096 ngày 3 tháng 2 16:36 tiện ích_scripts
[gigauser@jenkins-projectABC bitbucket_workspace]$


[gigauser@jenkins-projectABC bitbucket_workspace]$ sudo docker image ls
Mật khẩu thư mục hoạt động:
ID HÌNH ẢNH THẺ KHO KÍCH THƯỚC TẠO
project-im-opensuse 15.2 0c9ee31464cd 43 giờ trước 2,39GB
[gigauser@jenkins-projectABC bitbucket_workspace]$

[gigauser@jenkins-projectABC bitbucket_workspace]$
[gigauser@jenkins-projectABC bitbucket_workspace]$ sudo docker run -v $PWD/utilities_scripts:/home/docker_non_root_user/git/utilities_scripts/ -it project-im-opensuse:15.2 bash -c "whoami; id; which bash; bash - -version; ls -l; echo; ls -l utility_scripts; ls -l /home/docker_non_root_user/git/utilities_scripts; id gigauser; echo"

CẢNH BÁO: Chuyển tiếp IPv4 bị tắt. Mạng sẽ không hoạt động.


docker_non_root_user
uid=1000(docker_non_root_user) gid=487(docker_non_root_user) nhóm=487(docker_non_root_user),100(người dùng)

/bin/bash
GNU bash, phiên bản 4.4.23(1)-phát hành (x86_64-suse-linux-gnu)
Bản quyền (C) 2016 Tổ chức Phần mềm Miễn phí, Inc.
Giấy phép GPLv3+: GNU GPL phiên bản 3 trở lên <http://gnu.org/licenses/gpl.html>

Đây là phần mềm miễn phí; bạn được tự do thay đổi và phân phối lại nó.
KHÔNG CÓ BẢO ĐẢM, trong phạm vi pháp luật cho phép.
tổng số 8
drwx------ 5 gigauser 21520 4096 ngày 4 tháng 2 00:36 tiện ích_scripts

ls: không thể mở thư mục 'utilities_scripts': Quyền bị từ chối
ls: không thể mở thư mục '/home/docker_non_root_user/git/utilities_scripts': Quyền bị từ chối
id: 'gigauser': không có người dùng như vậy

[gigauser@jenkins-projectABC bitbucket_workspace]$

Khi tôi chạy lệnh tương tự trên máy Linux khác, tôi thấy tệp được gắn tiện ích_scripts chủ sở hữu của thư mục là docker_non_root_user.

Câu hỏi: TẠI SAO Tôi thấy USER-ID của người dùng máy chủ (nơi tôi đang chạy docker chạy lệnh) đang được đặt bên trong bộ chứa docker trên thư mục tiện ích_scripts, khi không có ID người dùng nào được tạo trong Dockerfile/tồn tại bên trong vùng chứa? (xem dòng cuối cùng thứ 2 trong đầu ra ở trên). Nó hiện đang nhận được các quyền cấp thư mục và chủ sở hữu của cùng một máy chủ lưu trữ bên trong bộ chứa docker.

gigauser tức là người dùng của Máy chủ, không có trong bộ chứa docker mà là tệp ls -l đầu ra cho thấy gigauser là chủ sở hữu của tiện ích_scripts thư mục/tệp trong vùng chứa. Sự cố này không xảy ra trên máy chủ khác.

Tôi thậm chí đã kiểm tra /etc/subuid tập tin, có vẻ ổn với tôi. Thay đổi giá trị bên trong thành người dùng của docker không giúp được gì. Ngoài ra tôi không thấy bất cứ điều gì liên quan đến điều này trong /etc/docker/daemon.json tập tin.

$ cat /etc/subuid
gigauser:165536:65536

Chạy giống nhau docker chạy .... tùy chọn lệnh ở trên từ máy chủ Linux khác, nó hiển thị quyền sở hữu thư mục bên trong bộ chứa docker dưới dạng:

drwx------ 5 docker_non_root_user 1000 272 Ngày 26 tháng 1 21:52 tiện ích_scripts
Điểm:0
lá cờ cn

Tôi không hoàn toàn chắc chắn rằng tôi làm theo câu hỏi của bạn vì nó hơi không rõ ràng đối với tôi. Nhưng, từ những gì tôi có thể hiểu:

Của bạn gigauser ID số không phải là 1000, có vẻ như nó có thể là 21520. Nó hoạt động trên một máy chủ khác vì người dùng cục bộ của bạn có thể có ID số 1000.

Bạn thấy ID người dùng của máy chủ lưu trữ vì bạn đang gắn thư mục chứ không phải sao chép nó. Khi bạn gắn nó, nó sẽ được chia sẻ vào vùng chứa với các quyền/ID giống hệt như được đặt trên Máy chủ - bởi vì nó nằm trên Máy chủ. Bộ chứa không giống như máy ảo với các tài nguyên hoàn toàn riêng biệt và thậm chí trên máy ảo nếu bạn gắn thứ gì đó giống như thư mục NFS, bạn sẽ nhận được ID số có thể khớp hoặc không khớp với ID cục bộ của bạn.

sử dụng /etc/subuid yêu cầu chuyển một cờ cho lệnh chạy và bạn phải làm toán để tìm ra phần bù cho người dùng của mình.

Đă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.