Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
14 lines
736 B
Bash
Executable File
14 lines
736 B
Bash
Executable File
#!/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")" "$@"
|