Ant*_* O. 4 linux docker alpine-linux
我正在尝试UID 1340816314在Alpine Linux Docker容器内创建一个新用户,以便让UID用户在主机上匹配特定用户.
问题是,adduser: number 1340816314 is not in 0..256000 range即使我通过跟随adduser手册页重新定义UID_MAX内部的值,我也面临着.我不认为它有任何影响,因为Alpine中的命令来自BusyBox./etc/login.defsadduser
这是我尝试做的日志:
$ docker run -it --rm alpine:3.4 sh
/ # adduser -D -g '' -u 1340816314 user
adduser: number 1340816314 is not in 0..256000 range
/ # echo "UID_MAX 1340816314" > /etc/login.defs
/ # adduser -D -g '' -u 1340816314 user
adduser: number 1340816314 is not in 0..256000 range
/ # echo "UID_MAX 1340816315" > /etc/login.defs
/ # adduser -D -g '' -u 1340816314 user
adduser: number 1340816314 is not in 0..256000 range
Run Code Online (Sandbox Code Playgroud)
您知道如何UID在Docker容器中添加具有大型Alpine Linux 的用户吗?
对于 Alpine 中的高 UID/GID,有一个更优雅的解决方案。
所述包shadow 中包含的useradd和groupadd实用程序这反过来又支持更高的值。不确定哪个是这些实用程序的上限,以及是否支持整个 2^32 空间,但我已经测试了超过 6 亿的值并且它有效。
例如,实现此目的的命令如下所示:
UID=666000666
GID=999000999
apk add shadow
/usr/sbin/groupadd -g ${GID} my_group
/usr/sbin/useradd -s /bin/sh -g ${GID} -u ${UID} my_user
Run Code Online (Sandbox Code Playgroud)
请注意,我将 shell 变量传递给useradd默认情况下它尝试使用/bin/bash未安装的变量。
这是一个工作但很脏的解决方法,通过手动创建用户,使用$UID_TO_SET包含UID要设置的高的bash变量:
# Create user
echo "user:x:$UID_TO_SET:$UID_TO_SET::/home/user:" >> /etc/passwd
## thanks for http://stackoverflow.com/a/1094354/535203 to compute the creation date
echo "user:!:$(($(date +%s) / 60 / 60 / 24)):0:99999:7:::" >> /etc/shadow
echo "user:x:$UID_TO_SET:" >> /etc/group
mkdir /home/user && chown user: /home/user
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3133 次 |
| 最近记录: |