#!/bin/sh # ssh, scp and sftp for containers that run as an arbitrary uid (docker-compose `user:`): # OpenSSH refuses to start without a passwd entry for the uid ("No user exists for uid N"). # Without an entry, nss_wrapper provides one for this process; otherwise nothing changes. if ! getent passwd "$(id -u)" >/dev/null 2>&1; then d=${TMPDIR:-/tmp}/codecraft-nss-$(id -u) mkdir -p "$d" 2>/dev/null printf 'codecraft:x:%s:%s:CodeCraft:%s:/bin/sh\n' "$(id -u)" "$(id -g)" "${HOME:-/}" > "$d/passwd" printf 'codecraft:x:%s:\n' "$(id -g)" > "$d/group" export NSS_WRAPPER_PASSWD="$d/passwd" NSS_WRAPPER_GROUP="$d/group" export LD_PRELOAD="libnss_wrapper.so${LD_PRELOAD:+:$LD_PRELOAD}" fi exec "/usr/bin/$(basename "$0")" "$@"