
¿Cómo puedo acceder a los mismos datos variables después de cambiar de usuario? Por ejemplo:
artifact=archive.tar.gz
workdir=/home/user
echo "$workdir/$artifact"
sudo -u otheruser bash
echo "$workdir/$artifact"
Produce:
/home/user/archive.tar.gz
/
¿Es posible que el segundo echo
se resuelva de la misma manera que el primero?
Editar: Solución completa, gracias a @Romeo Ninov y @steeldriver:
export artifact=archive.tar.gz
export workdir=/home/user
echo "$workdir/$artifact"
sudo -Eu otheruser bash
echo "$workdir/$artifact"
Respuesta1
Exportar las variables:
export artifact=archive.tar.gz
export workdir=/home/user
Respuesta2
Es posible que desee utilizar zsh
en lugar de bash
which tiene soporte para cambiar uids y gids (siempre que se inicie con privilegios de superusuario):
#! /bin/zsh -
id
echo "Original user: $SUDO_USER"
var=test
(
USERNAME=$SUDO_USER
echo "Runing as $(id -un) in this subshell var=$var"
)
(USERNAME=nobody; echo and now:; id; echo $var)
Ejecutando como:
$ sudo ./that-script
uid=0(root) gid=0(root) groups=0(root)
Original user: stephane
Runing as stephane in this subshell var=test
and now:
uid=65534(nobody) gid=65534(nogroup) groups=65534(nogroup)
test
La configuración USERNAME
establece uid, euid, gid, egid y gids complementarios como si iniciara sesión o usara sudo
. También puede configurar las variables UID
// EUID
... GID
individualmente.