Risposte:
La variabile di ambiente SUDO_USER dovrebbe funzionare come sostituto di USER.
Dato che stai impostando la proprietà su USER: USER Suppongo che ci sia sempre un gruppo con lo stesso nome dell'utente? Una soluzione più rigorosa potrebbe essere quella di utilizzare SUDO_UID e SUDO_GID.
Due possibili soluzioni sarebbero quindi:
chown "${SUDO_USER}:${SUDO_USER}" dir
o
chown "${SUDO_UID}:${SUDO_GID}" dir
Puoi usare la SUDO_USER
variabile:
sudo bash -c 'echo $SUDO_USER'
Dalla pagina man sudo :
sudo utilizza le seguenti variabili di ambiente. La politica di sicurezza ha il controllo sul contenuto effettivo dell'ambiente del comando. [...]
SUDO_UID
Impostato sull'ID utente dell'utente che ha invocato sudo.
SUDO_USER
Impostato sul nome di accesso dell'utente che ha invocato sudo.
sudo echo $SUDO_USER
non produce nulla?
SUDO_USER può essere sovrascritto dall'utente.
$ SUDO_USER='lala' sudo SUDO_USER='test' printenv | grep USER
USER=root
SUDO_USER=test
USERNAME=root
Dovresti usare "who are I" o "logname" per ottenere lo username originale
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)
Proveniente da /programming/4598001/how-do-you-find-the-original-user-through-multiple-sudo-and-su-commands
logname
e who am i
il lavoro.
sudo: sorry, you are not allowed to set the following environment variables: SUDO_USER
quindi potrebbe essere ancora sicuro, dovrebbe comunque verificarlo.