Respostas:
A variável de ambiente SUDO_USER deve funcionar como um substituto para USER.
Como você está configurando a propriedade como USER: USER, presumo que sempre exista um grupo com o mesmo nome que o usuário? Caso contrário, uma solução mais rigorosa seria usar SUDO_UID e SUDO_GID.
Duas soluções possíveis seriam então:
chown "${SUDO_USER}:${SUDO_USER}" dir
ou
chown "${SUDO_UID}:${SUDO_GID}" dir
Você pode usar a SUDO_USER
variável:
sudo bash -c 'echo $SUDO_USER'
Na página do manual do sudo :
O sudo utiliza as seguintes variáveis de ambiente. A política de segurança tem controle sobre o conteúdo real do ambiente do comando. [...]
SUDO_UID
Configure como o ID do usuário que chamou o sudo.
SUDO_USER
Defina como o nome de login do usuário que chamou o sudo.
sudo echo $SUDO_USER
nada produz?
SUDO_USER pode ser substituído pelo usuário.
$ SUDO_USER='lala' sudo SUDO_USER='test' printenv | grep USER
USER=root
SUDO_USER=test
USERNAME=root
Você deve usar 'quem sou eu' ou 'logname' para obter o nome de usuário original
toto:~$ SUDO_USER='lala' sudo SUDO_USER='test' logname
toto
toto:~$ SUDO_USER='lala' sudo SUDO_USER='test' who am i
toto pts/4 Jan 23 15:13 (:0.0)
Vindo de /programming/4598001/how-do-you-find-the-original-user-through-multiple-sudo-and-su-commands
logname
e who am i
trabalho.
sudo: sorry, you are not allowed to set the following environment variables: SUDO_USER
portanto, ainda pode ser seguro, ainda deve verificar isso.