Я пытаюсь создать сценарий, который выглядит точно так же, как /bin/bash
, но на самом деле это сценарий оболочки, который выполняет bash внутри другого пользователя.
Рассмотрим следующий user-bash.sh
файл.
#!/usr/bin/env bash
set -e
USER_ID="$USER_ID"
if [ -z "$USER_ID" ]; then
echo "Set USER_ID to 1000"
USER_ID="1000"
fi
# Create the dummy user, if it doesn't exist.
id dummy > /dev/null 2>&1 || {
echo "Creating dummy user..."
useradd -u ${USER_ID} dummy
mkdir -p /home/dummy/.ssh
}
# Doesn't work, but I think it illustrates what I'm trying to do.
su dummy -c "/bin/bash"
Я бы хотел, чтобы user-bash.sh
вел себя точно подобно /bin/bash
, включая поддержку stdin
/ stdout
, аргументов и кода выхода.
Как бы я это сделал?
Некоторый фон, я пытаюсь создать сценарий точки входа для образа Docker, который всегда выполняется от имени другого пользователя. Точка входа по умолчанию для большинства изображений /bin/bash
. Я хотел бы сделать это /bin/user-bash.sh
.