Các lệnh là adduser
vàaddgroup
.
Đây là mẫu cho Docker mà bạn có thể sử dụng trong môi trường hộp bận rộn (núi cao) cũng như môi trường dựa trên Debian (Ubuntu, v.v.):
ENV USER=docker
ENV UID=12345
ENV GID=23456
RUN adduser \
--disabled-password \
--gecos "" \
--home "$(pwd)" \
--ingroup "$USER" \
--no-create-home \
--uid "$UID" \
"$USER"
Lưu ý những điều dưới đây:
--disabled-password
ngăn chặn lời nhắc nhập mật khẩu
--gecos ""
bỏ qua lời nhắc cho "Tên đầy đủ", v.v. trên các hệ thống dựa trên Debian
--home "$(pwd)"
đặt nhà của người dùng thành WORKDIR. Bạn có thể không muốn điều này.
--no-create-home
ngăn chặn việc sao chép cruft vào thư mục từ /etc/skel
Mô tả việc sử dụng cho các ứng dụng đang thiếu những lá cờ dài trình bày trong mã cho adduser và addgroup .
Các cờ dạng dài sau đây sẽ hoạt động cả trong alpine cũng như các dẫn xuất debian:
thêm người dùng
BusyBox v1.28.4 (2018-05-30 10:45:57 UTC) multi-call binary.
Usage: adduser [OPTIONS] USER [GROUP]
Create new user, or add USER to GROUP
--home DIR Home directory
--gecos GECOS GECOS field
--shell SHELL Login shell
--ingroup GRP Group (by name)
--system Create a system user
--disabled-password Don't assign a password
--no-create-home Don't create home directory
--uid UID User id
Một điều cần lưu ý là nếu --ingroup
không được đặt thì GID được chỉ định để khớp với UID. Nếu GID tương ứng với UID được cung cấp đã tồn tại thì trình bổ sung sẽ bị lỗi.
thêm nhóm
BusyBox v1.28.4 (2018-05-30 10:45:57 UTC) multi-call binary.
Usage: addgroup [-g GID] [-S] [USER] GROUP
Add a group or add a user to a group
--gid GID Group id
--system Create a system group
Tôi đã phát hiện ra tất cả những điều này trong khi cố gắng viết phương án thay thế của riêng mình cho dự án fixuid để chạy vùng chứa dưới dạng UID / GID của máy chủ.
Tập lệnh trình trợ giúp entrypoint của tôi có thể được tìm thấy trên GitHub.
Mục đích là thêm tập lệnh đó làm đối số đầu tiên ENTRYPOINT
khiến Docker suy ra UID và GID từ một liên kết ràng buộc có liên quan.
Một biến môi trường "TEMPLATE" có thể được yêu cầu để xác định các quyền sẽ được suy ra từ đâu.
(Tại thời điểm viết, tôi không có tài liệu cho tập lệnh của mình. Nó vẫn nằm trong danh sách việc cần làm !!)
USER 405
là người dùng khách trong Alpine Linux.