![É possível que o root execute um comando como não-root?](https://rvso.com/image/1331456/%C3%89%20poss%C3%ADvel%20que%20o%20root%20execute%20um%20comando%20como%20n%C3%A3o-root%3F.png)
Sou um usuário root e suponho que desejo executar qualquer aplicativo como outro usuário. Isso é possível sem mudar para outro usuário?
Algo como
# google-chrome user=abc
Na verdade, estou executando um programa CLI como um usuário não root. Ativei o sticky bit e estou usando setuid, para que o programa seja executado com privilégios de root. Agora estou usando system()
o programa para invocar um aplicativo GUI. Mas não quero executá-lo como root, então quero eliminar temporariamente os privilégios de root apenas para essa chamada.
Responder1
Uma solução portátil seria:
su abc -c google-chrome
No entanto, como o Google Chrome exige acesso X11, isso provavelmente falhará, a menos que você o desproteja, o que seria uma péssima ideia, especialmente durante a execução como root.
Se o sintonização/encaminhamento do X11 for permitido, uma maneira melhor seria
ssh -X abc@localhost google-chrome
ou
ssh -Y abc@localhost google-chrome
Responder2
Resposta curta: “Sim, isso é possível”.
se você deseja executar um aplicativo não-X, basta usar o seguinte comando:
sudo -você abccomando
Se você gosta de executar alguma aplicação X como outro usuário, mas com seu próprio desktop, primeiro você precisa criar um script auxiliar, que tornará sua vida mais simples
- crie uma pasta bin em seu diretório inicial:
mkdir -p ~/bin
e usando seu editor de texto favorito crie um arquivo ~/bin/xsudo
como segue:
#!/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 - ; $*"
então torne-o executável:
chmod +x ~/bin/xsudo
e use-o da mesma maneira, sudo
mas sem nenhuma opção:
xsudoaplicativo de usuário
Aproveitar.
PS Começar xsession
pela root
conta é fortemente desencorajado!
Responder3
Existe uma maneira de executar o chromium quando estiver logado como usuário root. Se você abri-lo normalmente, ocorrerá um erro como "o cromo não pode ser executado como root".
Para executá-lo sem erros, right clickem seu desktop, crie um novo launcher com o comando: chromium-browser --user-data-dir
. Você pode nomeá-lo como quiser, salvá-lo e, ao abri-lo, ele lhe dará o navegador chromium. (Funciona no Ubuntu 10.04.4 LTS)
Responder4
#! /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 "" "${@}"