Also, ich glaube es ist definitiv ein Rechte-Thema bei mir… Intern scheint als User_ID immer die 102 verwendet zu werden, egal was ich als Environment-Variable setze.
Habe jetzt noch explizit den User “homegear” gesetzt, welcher auf dem Host-System eingerichtet wurde. Dieser Account hat die user_ID 1002 und group_ID 1002 - er läuft aber definitiv als 102
meines passwd vom Host-System
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
...
systemd-timesync:x:100:102:systemd Time Synchronization,,,:/run/systemd:/bin/false
systemd-network:x:101:103:systemd Network Management,,,:/run/systemd/netif:/bin/false
systemd-resolve:x:102:104:systemd Resolver,,,:/run/systemd/resolve:/bin/false
systemd-bus-proxy:x:103:105:systemd Bus Proxy,,,:/run/systemd:/bin/false
syslog:x:104:108::/home/syslog:/bin/false
...
homegear:x:1002:1002:homegear,,,:/home/homegear:/bin/bash
Hier der aktuelle Aufruf
docker run \
--name homegear \
-d \
-v /opt/homegear/etc:/etc/homegear:Z \
-v /opt/homegear/lib:/var/lib/homegear:Z \
-v /opt/homegear/log:/var/log/homegear:Z \
-v /etc/localtime:/etc/localtime:ro \
-p 2001:2001 \
-p 2002:2002 \
-p 2003:2003 \
-e HOST_USER_ID=1002 \
-e HOST_USER_GID=1002 \
-e TZ=Europe/Berlin \
--user=homegear \
--device=/dev/serial/by-id/usb-SHK_NANO_CUL_868-if00-port0:/dev/serial/by-id/usb-SHK_NANO_CUL_868-if00-port0 \
--device=/dev/ttyUSB0:/dev/ttyUSB0 \
--device=/dev/ttyUSB1:/dev/ttyUSB1 \
--link mosquitto:mqtt \
--restart=unless-stopped \
homegear/homegear:stable
hier der Output von “ps”
root 7263 0.0 0.1 7652 4304 ? Sl 19:37 0:00 | \_ docker-containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/abac87c6bf5972e888d71f441daeea8ba5790c6152972dd8278c27f1d8d94048 -address /var/run/docker/containerd/docker-containerd.sock -containerd-binary
systemd+ 7280 0.0 0.0 17988 3032 ? Ss 19:37 0:00 | \_ /bin/bash -c /start.sh
systemd+ 5289 0.0 0.2 219548 8264 ? Ss 19:37 0:00 | \_ /usr/bin/homegear -p /var/run/homegear/homegear.pid -u homegear -g homegear -d
systemd+ 5290 4.4 1.9 1837900 74500 ? SLsl 19:37 0:23 | | \_ /usr/bin/homegear -p /var/run/homegear/homegear.pid -u homegear -g homegear -d
systemd+ 5304 0.0 0.2 294032 8864 ? SLsl 19:37 0:00 | \_ /usr/bin/homegear-management -p /var/run/homegear/homegear-management.pid -d
systemd+ 5336 0.0 0.2 74496 8724 ? SLsl 19:37 0:00 | \_ /usr/bin/homegear-influxdb -p /var/run/homegear/homegear-influxdb.pid -u homegear -g homegear -d
systemd+ 5338 0.0 0.0 4236 708 ? S 19:37 0:00 | \_ tail -f /var/log/homegear/homegear.log
Einziger Vorteil jetzt, er findet den USB-Stick so wieder über seine ID und der Container läuft nicht im privileged-Mode.
Aber moment …
homegear@abac87c6bf59:/$ echo $(id -u homegear)
102
homegear@abac87c6bf59:/$ echo $HOST_USER_ID
1002
Kann es sein, dass die Variablen Substitution, nicht funktioniert und der zweite Versuch nicht angezogen wird, hatte mal was bzgl. Shell-Skripte und mehrfacher Zuweisung von Werten gelesen - würde mich aber wundern, wenn man eine Variable nicht mehrfach setzen könnte …
USER=homegear
USER_ID=$(id -u $USER)
USER_GID=$(id -g $USER)
USER_ID=${HOST_USER_ID:=$USER_ID}
USER_GID=${HOST_USER_GID:=$USER_GID}
sed -i -e "s/^${USER}:\([^:]*\):[0-9]*:[0-9]*/${USER}:\1:${USER_ID}:${USER_GID}/" /etc/passwd
sed -i -e "s/^${USER}:\([^:]*\):[0-9]*/${USER}:\1:${USER_GID}/" /etc/group
sed sollte hier doch die übergebenen Werte für USER_ID und GROUP_ID in den Dateien /etc/passwd und /etc/group in meinem Beispiel auf 1002 setzen. Dies tut es aber nicht …
homegear@abac87c6bf59:/$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/bin/false
messagebus:x:101:101::/var/run/dbus:/bin/false
homegear:x:102:102::/home/homegear:/bin/false