无法在docker Alpine中添加具有高UID的用户

时间:2017-01-23 13:00:19

标签: linux docker alpine

我正在尝试在Alpine Linux Docker容器中创建一个UID 1340816314的新用户,以使用户UID与主机上的特定用户匹配。

问题在于,即使我通过跟随adduser man page重新定义adduser: number 1340816314 is not in 0..256000 rangeUID_MAX的值,我也面临/etc/login.defs。我不认为它对Alpine is from BusyBox中的adduser命令有任何影响。

以下是我尝试做的日志:

$ 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

您是否知道如何在Docker容器中的Alpine Linux中添加具有大UID的用户?

2 个答案:

答案 0 :(得分:5)

这是一个有效但又脏的解决方法,通过手动创建用户,使用$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

答案 1 :(得分:2)

对于Alpine中的高UID / GID,有一种更为优雅的解决方案。

shadow containsuseraddgroupadd实用程序,它们又支持更高的值。不确定哪个utils的上限以及是否支持整个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

请注意,我正在将shell变量传递给useradd,因为默认情况下它会尝试使用未安装的/bin/bash