#!/bin/bash
# set -eu
### --help Info: инициализация nss_wrapper в зависимости от uid.
### --help Usage: source /opt/bin/nss_wrapper.sh
### --help Example: source /opt/bin/nss_wrapper.sh
# . /opt/fox_utils/crab_sys.sh

declare LD_PRELOAD NSS_WRAPPER_PASSWD NSS_WRAPPER_GROUP

wrap_passwd() {
	# in rootless mode use fake passwd and group files with current uid patch
	local uid gid users
	uid="$(id -u)"
	gid="$(id -g)"

	if [[ $uid != 0 ]]; then
		umask 0007

		NSS_WRAPPER_PASSWD=/var/run/eva-passwd
		NSS_WRAPPER_GROUP=/var/run/eva-group
		LD_PRELOAD="${LD_PRELOAD:+$LD_PRELOAD:}/usr/lib/libnss_wrapper.so"
		users="(eva|redis|postgres|nginx)"
		sed -Er "s/^$users:([^:]+):[^:]+:[^:]+:(.*)/\1:\2:$uid:$gid:\3/" \
			/etc/passwd > "$NSS_WRAPPER_PASSWD"
		sed -Er "s/^$users:([^:]+):[^:]+:(.*)/\1:\2:$gid:\3/" \
			/etc/group > "$NSS_WRAPPER_GROUP"
		export LD_PRELOAD NSS_WRAPPER_PASSWD NSS_WRAPPER_GROUP
	fi
	return 0
}


wrap_passwd

# exit 0
