É possível que o root execute um comando como não-root?

É possível que o root execute um comando como não-root?

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/xsudocomo 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, sudomas sem nenhuma opção:

xsudoaplicativo de usuário

Aproveitar.

PS Começar xsessionpela rootconta é 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 "" "${@}"

informação relacionada