Soy un usuario root y supongo que quiero ejecutar cualquier aplicación como otro usuario. ¿Es esto posible sin cambiar a otro usuario?
Algo como
# google-chrome user=abc
De hecho, estoy ejecutando un programa CLI como usuario no root. He activado el bit adhesivo y estoy usando setuid, por lo que el programa se ejecuta con privilegios de root. Ahora estoy usando system()
dentro del programa para invocar una aplicación GUI. Pero no quiero ejecutarlo como root, por lo que quiero eliminar temporalmente los privilegios de root sólo para esa llamada.
Respuesta1
Una solución portátil sería:
su abc -c google-chrome
Sin embargo, como Google Chrome requiere acceso X11, es probable que esto falle a menos que lo desproteja, lo cual sería una muy mala idea, especialmente cuando se ejecuta como root.
Si se permite la sintonización/reenvío X11, una mejor manera sería
ssh -X abc@localhost google-chrome
o
ssh -Y abc@localhost google-chrome
Respuesta2
Respuesta corta: "Sí, esto es posible".
Si desea ejecutar una aplicación que no sea X, simplemente use el siguiente comando:
sudo -u abcdominio
Si desea ejecutar alguna aplicación X como otro usuario pero con su propio escritorio, primero necesita crear un script auxiliar, que le simplificará la vida.
- cree una carpeta bin en su directorio de inicio:
mkdir -p ~/bin
y usando su editor de texto favorito cree un archivo ~/bin/xsudo
de la siguiente manera:
#!/bin/bash
# (C) serge 2012
# The script is licensed to all users of StackExchange family free of charge
# Fixes/Enhancements to the script are greatly appreciated.
#
# SUDO_ASKPASS has to be set to the path of ssh-askpass
# fix the following two lines if your distribution does not match this autodetection
. /etc/profile.d/gnome-ssh-askpass.sh
export SUDO_ASKPASS="${SSH_ASKPASS}"
SUDOUSERNAME="$1"
shift
xauth nlist "${DISPLAY}"|sudo -HA -u $SUDOUSERNAME env --unset=XAUTHORITY \
bash -c "xauth nmerge - ; $*"
luego hazlo ejecutable:
chmod +x ~/bin/xsudo
y utilícelo de la misma manera sudo
pero sin ningún interruptor:
xsudoaplicación de usuario
Disfrutar.
PD: ¡ Se desaconseja encarecidamente comenzar xsession
desde la cuenta!root
Respuesta3
Hay una manera de ejecutar chromium cuando se inicia sesión como usuario root. Si lo abre normalmente, le dará un error como "chromium no se puede ejecutar como root".
Para ejecutarlo sin el error, right clicken su escritorio, cree un nuevo iniciador con el comando: chromium-browser --user-data-dir
. Puedes ponerle el nombre que quieras, guardarlo, cuando lo abras te dará el navegador chromium. (Funciona en Ubuntu 10.04.4 LTS)
Respuesta4
#! /bin/bash
# (GPL3+) Alberto Salvia Novella (es20490446e)
execute () {
function="${1}"
command="${2}"
error=$(eval "${command}" 2>&1 >"/dev/null")
if [ ${?} -ne 0 ]; then
echo "${function}: $error"
exit 1
fi
}
executeAsNonAdmin () {
function="${1}"
command="${2}"
eval setPasswordAsker="SUDO_ASKPASS=/usr/libexec/openssh/ssh-askpass"
run="runuser ${SUDO_USER} --session-command=\"${setPasswordAsker}\" --command=\"${command}\""
execute "${function}" "${run}"
}
executeAsNonAdmin "" "${@}"