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

9

Eu sou um usuário root e suponho que eu queira executar qualquer aplicativo como outro usuário. Isso é possível, sem mudar para outro usuário?

Algo como

# google-chrome user=abc

Eu estou realmente executando um programa CLI como um usuário não-root. Eu configurei o sticky bit e estou usando o setuid, então o programa é executado com privilégios de root. Agora estou usando system() dentro do programa para invocar um aplicativo GUI. Mas eu não quero executá-lo como root, então eu quero abandonar temporariamente privilégios de root somente para aquela chamada.

    
por adnan kamili 29.09.2012 / 10:09

3 respostas

9

Uma solução portátil seria:

su abc -c google-chrome

No entanto, como o google-chrome está exigindo acesso ao X11, isso provavelmente falhará, a menos que você não tenha certeza disso, o que seria uma ideia muito ruim, especialmente durante a execução como root.

Se for permitido o tunelling / encaminhamento do X11, a melhor maneira seria

ssh -X abc@localhost google-chrome

ou

ssh -Y abc@localhost google-chrome
    
por 29.09.2012 / 12:51
9

Resposta curta: "Sim, isso é possível".

se você gosta de executar um aplicativo não-X, basta usar o seguinte comando:

sudo -u abc command

Se você gosta de executar algum aplicativo X como outro usuário, mas com sua própria área de trabalho, primeiro você precisa criar um script auxiliar, que tornará sua vida mais simples

  • crie uma pasta bin no seu diretório inicial:

mkdir -p ~/bin

e usando seu editor de texto favorito, crie um arquivo ~/bin/xsudo da seguinte forma:

#!/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 - ; $*"

torne-o executável:

chmod +x ~/bin/xsudo

e use-o da mesma forma que sudo , mas sem opções:

xsudo user application

Aproveite.

P.S. A partir de xsession da conta root é strongmente desencorajada!

    
por 29.09.2012 / 10:35
1

Existe uma maneira de executar o cromo quando conectado ao usuário root. Se você abrir normalmente, ele fornecerá um erro do tipo "o cromo não pode ser executado como root".

Para executá-lo sem o erro, clique com o botão direito do mouse em sua área de trabalho, crie um novo lançador com o comando: chromium-browser --user-data-dir . Você pode nomear o que quiser, salvá-lo, quando você abri-lo, ele lhe dará o navegador cromo. (Funciona no Ubuntu 10.04.4 LTS)

    
por 30.06.2014 / 14:17

Tags